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.
Apport option in install script
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 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 ' + `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 ' + `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", "--no-apport", dest="noapport", help="don't install apport scripts") 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 noapport = options.noapport 87 88 if not options.mandir: 89 mandir = "/man/man1" 90 else: 91 mandir = options.mandir 92 93 prefix = config.PREFIX 94 dest = options.dest 95 96 # create uninstall file 97 installed = open ('build/installed', 'w') 98 installed.write ('build/installed\n') 99 100 # install it: 101 install ('resources/icons.bf', '/share/birdfont', 644) 102 install ('resources/bright.theme', '/share/birdfont', 644) 103 install ('resources/dark.theme', '/share/birdfont', 644) 104 install ('resources/high_contrast.theme', '/share/birdfont', 644) 105 install ('resources/key_bindings.xml', '/share/birdfont', 644) 106 install ('resources/roboto.bf', '/share/birdfont', 644) 107 install ('resources/linux/birdfont_window_icon.png', '/share/birdfont', 644) 108 install ('resources/linux/birdfont.desktop', '/share/applications', 644) 109 110 install ('resources/linux/256x256/birdfont.png', '/share/icons/hicolor/256x256/apps', 644) 111 install ('resources/linux/128x128/birdfont.png', '/share/icons/hicolor/128x128/apps', 644) 112 install ('resources/linux/48x48/birdfont.png', '/share/icons/hicolor/48x48/apps', 644) 113 114 install ('resources/linux/birdfont.appdata.xml', '/share/appdata', 644) 115 116 if os.path.isfile ('build/bin/birdfont'): 117 install ('build/bin/birdfont', '/bin', 755) 118 119 if not options.nocli: 120 install ('build/bin/birdfont-autotrace', '/bin', 755) 121 install ('build/bin/birdfont-export', '/bin', 755) 122 install ('build/bin/birdfont-import', '/bin', 755) 123 124 #library 125 if not options.libdir: 126 127 if platform.dist()[0] == 'Ubuntu' or platform.dist()[0] == 'Debian': 128 process = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_MULTIARCH'], stdout=subprocess.PIPE) 129 out, err = process.communicate() 130 libdir = '/lib/' + out.rstrip ('\n') 131 else: 132 p = platform.machine() 133 if p == 'i386' or p == 's390' or p == 'ppc' or p == 'armv7hl': 134 libdir = '/lib' 135 elif p == 'x86_64' or p == 's390x' or p == 'ppc64': 136 libdir = '/lib64' 137 else: 138 libdir = '/lib' 139 else: 140 libdir = options.libdir 141 142 if os.path.isfile ('build/bin/libbirdfont.so.' + version.SO_VERSION): 143 install ('build/bin/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 144 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 145 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 146 elif os.path.isfile ('build/libbirdfont.so.' + version.SO_VERSION): 147 install ('build/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 148 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 149 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 150 elif os.path.isfile ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib'): 151 install ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib', libdir, 644) 152 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib.' + version.SO_VERSION_MAJOR) 153 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib') 154 else: 155 print ("Can't find libbirdfont.") 156 exit (1) 157 158 if os.path.isfile ('build/bin/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION): 159 install ('build/bin/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, libdir, 644) 160 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 161 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so') 162 elif os.path.isfile ('build/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION): 163 install ('build/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, libdir, 644) 164 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 165 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so') 166 elif os.path.isfile ('build/bin/libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib'): 167 install ('build/bin/libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', libdir, 644) 168 link (libdir, 'libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', ' libbirdxml.dylib.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 169 link (libdir, 'libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', ' libbirdxml.dylib') 170 else: 171 print ("Can't find libbirdxml.") 172 173 174 #manpages 175 176 if not nogzip: 177 install ('build/birdfont.1.gz', mandir, 644) 178 179 if not options.nocli: 180 install ('build/birdfont-autotrace.1.gz', mandir, 644) 181 install ('build/birdfont-export.1.gz', mandir, 644) 182 install ('build/birdfont-import.1.gz', mandir, 644) 183 else: 184 install ('resources/linux/birdfont.1', mandir, 644) 185 186 if not options.nocli: 187 install ('resources/linux/birdfont-autotrace.1', mandir, 644) 188 install ('resources/linux/birdfont-export.1', mandir, 644) 189 install ('resources/linux/birdfont-import.1', mandir, 644) 190 191 #translations 192 for lang_dir in glob.glob('build/locale/*'): 193 lc = lang_dir.replace ('build/locale/', "") 194 install ('build/locale/' + lc + '/LC_MESSAGES/birdfont.mo', '/share/locale/' + lc + '/LC_MESSAGES' , 644); 195 196 #file type 197 install ('resources/linux/birdfont.xml', '/share/mime/packages', 644) 198 199 #apport hooks 200 if not noapport: 201 install ('resources/birdfont.py', '/share/apport/package-hooks', 644) 202 install ('resources/source_birdfont.py', '/share/apport/package-hooks', 644) 203 install_root ('resources/birdfont-crashdb.conf', '/etc/apport/crashdb.conf.d', 644) 204 205 installed.close () 206