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