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.
Update boundaries after undo
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 52 def install_root (file, dir, mode): 53 f = getDestRoot (file, dir) 54 print ("install: " + f) 55 run ('install -d ' + dest + dir) 56 run ('install -m ' + str(mode) + ' ' + file + ' ' + dest + dir + '/') 57 58 def link (dir, file, linkname): 59 f = getDest (linkname, dir) 60 print ("install link: " + f) 61 run ('cd ' + dest + prefix + dir + ' && ln -sf ' + file + ' ' + linkname) 62 63 if not os.path.exists ("build/configured"): 64 print ("Project is not configured") 65 exit (1) 66 67 parser = OptionParser() 68 parser.add_option ("-d", "--dest", dest="dest", help="install to this directory", metavar="DEST") 69 parser.add_option ("-m", "--nogzip", dest="nogzip", help="don't gzip manpages", default=False) 70 parser.add_option ("-n", "--manpages-directory", dest="mandir", help="put man pages in this directory under prefix") 71 parser.add_option ("-l", "--libdir", dest="libdir", help="path to directory for shared libraries (lib or lib64).") 72 parser.add_option ("-c", "--skip-command-line-tools", dest="nocli", help="don't install command line tools") 73 parser.add_option ("-a", "--apport", dest="apport", help="install apport scripts", default=True) 74 parser.add_option ('-v', '--development', dest='development', action="store_true", help='install development files', metavar='DEVELOPMENT') 75 76 (options, args) = parser.parse_args() 77 78 if not options.dest: 79 options.dest = "" 80 81 if not options.nocli: 82 options.nocli = False 83 84 nogzip = options.nogzip 85 86 if not options.mandir: 87 mandir = "/man/man1" 88 else: 89 mandir = options.mandir 90 91 prefix = config.PREFIX 92 dest = options.dest 93 94 # install it: 95 install ('resources/icons.bf', '/share/birdfont', 644) 96 install ('resources/bright.theme', '/share/birdfont', 644) 97 install ('resources/dark.theme', '/share/birdfont', 644) 98 install ('resources/high_contrast.theme', '/share/birdfont', 644) 99 install ('resources/key_bindings.xml', '/share/birdfont', 644) 100 install ('resources/linux/birdfont_window_icon.png', '/share/birdfont', 644) 101 install ('resources/linux/birdfont.desktop', '/share/applications', 644) 102 install ('resources/ucd.sqlite', '/share/birdfont', 644) 103 install ('resources/codepages.sqlite', '/share/birdfont', 644) 104 install ('resources/Roboto-Regular.ttf', '/share/birdfont', 644) 105 106 install ('resources/linux/256x256/birdfont.png', '/share/icons/hicolor/256x256/apps', 644) 107 install ('resources/linux/128x128/birdfont.png', '/share/icons/hicolor/128x128/apps', 644) 108 install ('resources/linux/48x48/birdfont.png', '/share/icons/hicolor/48x48/apps', 644) 109 110 install ('resources/linux/birdfont.appdata.xml', '/share/appdata', 644) 111 112 if os.path.isfile ('build/bin/birdfont'): 113 install ('build/bin/birdfont', '/bin', 755) 114 115 if not options.nocli: 116 install ('build/bin/birdfont-autotrace', '/bin', 755) 117 install ('build/bin/birdfont-export', '/bin', 755) 118 install ('build/bin/birdfont-import', '/bin', 755) 119 120 #library 121 if sys.platform == 'darwin': 122 libdir = '/lib' 123 elif not options.libdir: 124 125 if platform.dist()[0] == 'Ubuntu' or platform.dist()[0] == 'Debian': 126 process = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_MULTIARCH'], stdout=subprocess.PIPE) 127 out, err = process.communicate() 128 libdir = '/lib/' + out.decode('UTF-8').rstrip ('\n') 129 else: 130 p = platform.machine() 131 if p == 'i386' or p == 's390' or p == 'ppc' or p == 'armv7hl': 132 libdir = '/lib' 133 elif p == 'x86_64' or p == 's390x' or p == 'ppc64': 134 libdir = '/lib64' 135 else: 136 libdir = '/lib' 137 else: 138 libdir = options.libdir 139 140 if "openbsd" in sys.platform: 141 install ('build/bin/libbirdfont.so.' + '${LIBbirdfont_VERSION}', '/lib', 644) 142 elif 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 "openbsd" in sys.platform: 159 install ('build/bin/libbirdgems.so.' + '${LIBbirdgems_VERSION}', '/lib', 644) 160 elif os.path.isfile ('build/bin/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION): 161 install ('build/bin/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, libdir, 644) 162 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION_MAJOR) 163 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so') 164 elif os.path.isfile ('build/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION): 165 install ('build/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, libdir, 644) 166 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION_MAJOR) 167 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so') 168 elif os.path.isfile ('build/bin/libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib'): 169 install ('build/bin/libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib', libdir, 644) 170 link (libdir, 'libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib', ' libbirdgems.dylib.' + version.LIBBIRDGEMS_SO_VERSION_MAJOR) 171 link (libdir, 'libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib', ' libbirdgems.dylib') 172 else: 173 print ("Can't find libbirdgems, version: " + version.LIBBIRDGEMS_SO_VERSION) 174 exit (1) 175 176 if "openbsd" in sys.platform: 177 install ('build/bin/libsvgbird.so.' + '${LIBsvgbird_VERSION}', '/lib', 644) 178 elif os.path.isfile ('build/bin/libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION): 179 install ('build/bin/libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, libdir, 644) 180 link (libdir, 'libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, ' libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION_MAJOR) 181 link (libdir, 'libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, ' libsvgbird.so') 182 elif os.path.isfile ('build/libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION): 183 install ('build/libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, libdir, 644) 184 link (libdir, 'libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, ' libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION_MAJOR) 185 link (libdir, 'libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, ' libsvgbird.so') 186 elif os.path.isfile ('build/bin/libsvgbird.' + version.LIBSVGBIRD_SO_VERSION + '.dylib'): 187 install ('build/bin/libsvgbird.' + version.LIBSVGBIRD_SO_VERSION + '.dylib', libdir, 644) 188 link (libdir, 'libsvgbird.' + version.LIBSVGBIRD_SO_VERSION + '.dylib', ' libsvgbird.dylib.' + version.LIBSVGBIRD_SO_VERSION_MAJOR) 189 link (libdir, 'libsvgbird.' + version.LIBSVGBIRD_SO_VERSION + '.dylib', ' libsvgbird.dylib') 190 else: 191 print ("Can't find libsvgbird, version: " + version.LIBSVGBIRD_SO_VERSION) 192 exit (1) 193 194 #manpages 195 if not nogzip: 196 install ('build/birdfont.1.gz', mandir, 644) 197 198 if not options.nocli: 199 install ('build/birdfont-autotrace.1.gz', mandir, 644) 200 install ('build/birdfont-export.1.gz', mandir, 644) 201 install ('build/birdfont-import.1.gz', mandir, 644) 202 else: 203 install ('resources/linux/birdfont.1', mandir, 644) 204 205 if not options.nocli: 206 install ('resources/linux/birdfont-autotrace.1', mandir, 644) 207 install ('resources/linux/birdfont-export.1', mandir, 644) 208 install ('resources/linux/birdfont-import.1', mandir, 644) 209 210 #translations 211 for lang_dir in glob.glob('build/locale/*'): 212 lc = lang_dir.replace ('build/locale/', "") 213 install ('build/locale/' + lc + '/LC_MESSAGES/birdfont.mo', '/share/locale/' + lc + '/LC_MESSAGES' , 644); 214 215 #file type 216 install ('resources/linux/birdfont.xml', '/share/mime/packages', 644) 217 218 #apport hooks 219 if options.apport == "True": 220 install ('resources/birdfont.py', '/share/apport/package-hooks', 644) 221 install ('resources/source_birdfont.py', '/share/apport/package-hooks', 644) 222 install_root ('resources/birdfont-crashdb.conf', '/etc/apport/crashdb.conf.d', 644) 223 224 #install development files 225 if options.development: 226 install ('build/libsvgbird/svgbird.h', '/include', 644) 227 install ('build/libsvgbird/point_value.h', '/include', 644) 228 install ('svgbird.vapi', '/share/vala/vapi', 644) 229 install ('svgbird.deps', '/share/vala/vapi', 644) 230 install ('build/svgbird.pc', libdir + '/pkgconfig', 644) 231