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