The Birdfont Source Code


All Repositories / birdfont.git / blob – RSS feed

install.py

This file is a part of the Birdfont project.

Contributing

Send patches or pull requests to johan.mattsson.m@gmail.com.
Clone this repository: git clone https://github.com/johanmattssonm/birdfont.git

Revisions

View the latest version of install.py.
Color for kerning class
1 #!/usr/bin/python 2 """ 3 Copyright (C) 2013 2014 Johan Mattsson 4 5 This program is free software: you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation, either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. 17 """ 18 19 import os 20 import subprocess 21 import glob 22 import platform 23 from optparse import OptionParser 24 from scripts import config 25 from scripts import version 26 from scripts.run import run 27 28 def getDest (file, dir): 29 f = dest + prefix + dir + '/' 30 s = file.rfind ('/') 31 if s > -1: 32 f += file[s + 1:] 33 else: 34 f += file 35 return f 36 37 def install (file, dir, mode): 38 f = getDest (file, dir) 39 print ("install: " + f) 40 run ('install -d ' + dest + prefix + dir) 41 run ('install -m ' + `mode` + ' ' + file + ' ' + dest + prefix + dir + '/') 42 installed.write (f + "\n") 43 44 def link (dir, file, linkname): 45 f = getDest (linkname, dir) 46 print ("install link: " + f) 47 run ('cd ' + dest + prefix + dir + ' && ln -sf ' + file + ' ' + linkname) 48 installed.write (f + "\n") 49 50 if not os.path.exists ("build/configured"): 51 print ("Project is not configured") 52 exit (1) 53 54 parser = OptionParser() 55 parser.add_option ("-d", "--dest", dest="dest", help="install to this directory", metavar="DEST") 56 parser.add_option ("-m", "--nogzip", dest="nogzip", help="don't gzip manpages", default=False) 57 parser.add_option ("-n", "--manpages-directory", dest="mandir", help="put man pages in this directory under prefix") 58 parser.add_option ("-l", "--libdir", dest="libdir", help="path to directory for shared libraries (lib or lib64).") 59 parser.add_option ("-c", "--skip-command-line-tools", dest="nocli", help="don't install command line tools") 60 61 (options, args) = parser.parse_args() 62 63 if not options.dest: 64 options.dest = "" 65 66 if not options.nocli: 67 options.nocli = False 68 69 nogzip = options.nogzip 70 71 if not options.mandir: 72 mandir = "/man/man1" 73 else: 74 mandir = options.mandir 75 76 prefix = config.PREFIX 77 dest = options.dest 78 79 # create uninstall file 80 installed = open ('build/installed', 'w') 81 installed.write ('build/installed\n') 82 83 # install it: 84 for file in os.listdir('./icons'): 85 install ('icons/' + file, '/share/birdfont/icons', 644) 86 87 install ('resources/icons.bf', '/share/birdfont', 644) 88 install ('resources/bright.theme', '/share/birdfont', 644) 89 install ('resources/dark.theme', '/share/birdfont', 644) 90 install ('resources/high_contrast.theme', '/share/birdfont', 644) 91 install ('resources/key_bindings.xml', '/share/birdfont', 644) 92 install ('resources/roboto.bf', '/share/birdfont', 644) 93 94 install ('resources/linux/birdfont.desktop', '/share/applications', 644) 95 install ('resources/linux/128x128/birdfont.png', '/share/icons/hicolor/128x128/apps', 644) 96 install ('resources/linux/48x48/birdfont.png', '/share/icons/hicolor/48x48/apps', 644) 97 98 install ('resources/linux/birdfont.appdata.xml', '/share/appdata', 644) 99 100 if os.path.isfile ('build/bin/birdfont'): 101 install ('build/bin/birdfont', '/bin', 755) 102 103 if not options.nocli: 104 install ('build/bin/birdfont-autotrace', '/bin', 755) 105 install ('build/bin/birdfont-export', '/bin', 755) 106 install ('build/bin/birdfont-import', '/bin', 755) 107 108 #library 109 if not options.libdir: 110 111 if platform.dist()[0] == 'Ubuntu' or platform.dist()[0] == 'Debian': 112 process = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_MULTIARCH'], stdout=subprocess.PIPE) 113 out, err = process.communicate() 114 libdir = '/lib/' + out.rstrip ('\n') 115 else: 116 p = platform.machine() 117 if p == 'i386' or p == 's390' or p == 'ppc' or p == 'armv7hl': 118 libdir = '/lib' 119 elif p == 'x86_64' or p == 's390x' or p == 'ppc64': 120 libdir = '/lib64' 121 else: 122 libdir = '/lib' 123 else: 124 libdir = options.libdir 125 126 if os.path.isfile ('build/bin/libbirdfont.so.' + version.SO_VERSION): 127 install ('build/bin/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 128 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 129 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 130 elif os.path.isfile ('build/libbirdfont.so.' + version.SO_VERSION): 131 install ('build/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 132 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 133 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 134 elif os.path.isfile ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib'): 135 install ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib', libdir, 644) 136 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib.' + version.SO_VERSION_MAJOR) 137 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib') 138 else: 139 print ("Can't find libbirdfont.") 140 exit (1) 141 142 if os.path.isfile ('build/bin/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION): 143 install ('build/bin/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, libdir, 644) 144 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 145 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so') 146 elif os.path.isfile ('build/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION): 147 install ('build/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, libdir, 644) 148 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 149 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so') 150 elif os.path.isfile ('build/bin/libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib'): 151 install ('build/bin/libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', libdir, 644) 152 link (libdir, 'libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', ' libbirdxml.dylib.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 153 link (libdir, 'libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', ' libbirdxml.dylib') 154 else: 155 print ("Can't find libbirdxml.") 156 157 158 #manpages 159 160 if not nogzip: 161 install ('build/birdfont.1.gz', mandir, 644) 162 163 if not options.nocli: 164 install ('build/birdfont-autotrace.1.gz', mandir, 644) 165 install ('build/birdfont-export.1.gz', mandir, 644) 166 install ('build/birdfont-import.1.gz', mandir, 644) 167 else: 168 install ('resources/linux/birdfont.1', mandir, 644) 169 170 if not options.nocli: 171 install ('resources/linux/birdfont-autotrace.1', mandir, 644) 172 install ('resources/linux/birdfont-export.1', mandir, 644) 173 install ('resources/linux/birdfont-import.1', mandir, 644) 174 175 #translations 176 for lang_dir in glob.glob('build/locale/*'): 177 lc = lang_dir.replace ('build/locale/', "") 178 install ('build/locale/' + lc + '/LC_MESSAGES/birdfont.mo', '/share/locale/' + lc + '/LC_MESSAGES' , 644); 179 180 #file type 181 install ('resources/linux/birdfont.xml', '/share/mime/packages', 644) 182 183 installed.close () 184