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 nan angles in arcs
1 #!/usr/bin/python3 2 """ 3 Copyright (C) 2013 2014 2015 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 import sys 24 from optparse import OptionParser 25 from scripts import config 26 from scripts import version 27 from scripts.run import run 28 29 def getDest (file, dir): 30 f = dest + prefix + dir + '/' 31 s = file.rfind ('/') 32 if s > -1: 33 f += file[s + 1:] 34 else: 35 f += file 36 return f 37 38 def getDestRoot (file, dir): 39 f = dest + dir + '/' 40 s = file.rfind ('/') 41 if s > -1: 42 f += file[s + 1:] 43 else: 44 f += file 45 return f 46 47 def install (file, dir, mode): 48 f = getDest (file, dir) 49 print ("install: " + f) 50 run ('install -d ' + dest + prefix + dir) 51 run ('install -m ' + str(mode) + ' ' + file + ' ' + dest + prefix + dir + '/') 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 64 if not os.path.exists ("build/configured"): 65 print ("Project is not configured") 66 exit (1) 67 68 parser = OptionParser() 69 parser.add_option ("-d", "--dest", dest="dest", help="install to this directory", metavar="DEST") 70 parser.add_option ("-m", "--nogzip", dest="nogzip", help="don't gzip manpages", default=False) 71 parser.add_option ("-n", "--manpages-directory", dest="mandir", help="put man pages in this directory under prefix") 72 parser.add_option ("-l", "--libdir", dest="libdir", help="path to directory for shared libraries (lib or lib64).") 73 parser.add_option ("-c", "--skip-command-line-tools", dest="nocli", help="don't install command line tools") 74 parser.add_option ("-a", "--apport", dest="apport", help="install apport scripts", default=True) 75 parser.add_option ('-v', '--development', dest='development', action="store_true", help='install development files', metavar='DEVELOPMENT') 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 # install it: 96 install ('resources/icons.bf', '/share/birdfont', 644) 97 install ('resources/bright.theme', '/share/birdfont', 644) 98 install ('resources/dark.theme', '/share/birdfont', 644) 99 install ('resources/high_contrast.theme', '/share/birdfont', 644) 100 install ('resources/key_bindings.xml', '/share/birdfont', 644) 101 install ('resources/linux/birdfont_window_icon.png', '/share/birdfont', 644) 102 install ('resources/linux/birdfont.desktop', '/share/applications', 644) 103 install ('resources/ucd.sqlite', '/share/birdfont', 644) 104 install ('resources/codepages.sqlite', '/share/birdfont', 644) 105 install ('resources/Roboto-Regular.ttf', '/share/birdfont', 644) 106 107 install ('resources/linux/256x256/birdfont.png', '/share/icons/hicolor/256x256/apps', 644) 108 install ('resources/linux/128x128/birdfont.png', '/share/icons/hicolor/128x128/apps', 644) 109 install ('resources/linux/48x48/birdfont.png', '/share/icons/hicolor/48x48/apps', 644) 110 111 install ('resources/linux/birdfont.appdata.xml', '/share/appdata', 644) 112 113 if os.path.isfile ('build/bin/birdfont'): 114 install ('build/bin/birdfont', '/bin', 755) 115 116 if not options.nocli: 117 install ('build/bin/birdfont-autotrace', '/bin', 755) 118 install ('build/bin/birdfont-export', '/bin', 755) 119 install ('build/bin/birdfont-import', '/bin', 755) 120 121 #library 122 if sys.platform == 'darwin': 123 libdir = '/lib' 124 elif not options.libdir: 125 126 if platform.dist()[0] == 'Ubuntu' or platform.dist()[0] == 'Debian': 127 process = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_MULTIARCH'], stdout=subprocess.PIPE) 128 out, err = process.communicate() 129 libdir = '/lib/' + out.decode('UTF-8').rstrip ('\n') 130 else: 131 p = platform.machine() 132 if p == 'i386' or p == 's390' or p == 'ppc' or p == 'armv7hl': 133 libdir = '/lib' 134 elif p == 'x86_64' or p == 's390x' or p == 'ppc64': 135 libdir = '/lib64' 136 else: 137 libdir = '/lib' 138 else: 139 libdir = options.libdir 140 141 if "openbsd" in sys.platform: 142 install ('build/bin/libbirdfont.so.' + '${LIBbirdfont_VERSION}', '/lib', 644) 143 elif os.path.isfile ('build/bin/libbirdfont.so.' + version.SO_VERSION): 144 install ('build/bin/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 145 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 146 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 147 elif os.path.isfile ('build/libbirdfont.so.' + version.SO_VERSION): 148 install ('build/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 149 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 150 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 151 elif os.path.isfile ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib'): 152 install ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib', libdir, 644) 153 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib.' + version.SO_VERSION_MAJOR) 154 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib') 155 else: 156 print ("Can't find libbirdfont.") 157 exit (1) 158 159 if "openbsd" in sys.platform: 160 install ('build/bin/libbirdgems.so.' + '${LIBbirdgems_VERSION}', '/lib', 644) 161 elif os.path.isfile ('build/bin/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION): 162 install ('build/bin/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, libdir, 644) 163 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION_MAJOR) 164 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so') 165 elif os.path.isfile ('build/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION): 166 install ('build/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, libdir, 644) 167 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION_MAJOR) 168 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so') 169 elif os.path.isfile ('build/bin/libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib'): 170 install ('build/bin/libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib', libdir, 644) 171 link (libdir, 'libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib', ' libbirdgems.dylib.' + version.LIBBIRDGEMS_SO_VERSION_MAJOR) 172 link (libdir, 'libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib', ' libbirdgems.dylib') 173 else: 174 print ("Can't find libbirdgems, version: " + version.LIBBIRDGEMS_SO_VERSION) 175 exit (1) 176 177 if "openbsd" in sys.platform: 178 install ('build/bin/libsvgbird.so.' + '${LIBsvgbird_VERSION}', '/lib', 644) 179 elif os.path.isfile ('build/bin/libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION): 180 install ('build/bin/libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, libdir, 644) 181 link (libdir, 'libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, ' libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION_MAJOR) 182 link (libdir, 'libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, ' libsvgbird.so') 183 elif os.path.isfile ('build/libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION): 184 install ('build/libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, libdir, 644) 185 link (libdir, 'libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, ' libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION_MAJOR) 186 link (libdir, 'libsvgbird.so.' + version.LIBSVGBIRD_SO_VERSION, ' libsvgbird.so') 187 elif os.path.isfile ('build/bin/libsvgbird.' + version.LIBSVGBIRD_SO_VERSION + '.dylib'): 188 install ('build/bin/libsvgbird.' + version.LIBSVGBIRD_SO_VERSION + '.dylib', libdir, 644) 189 link (libdir, 'libsvgbird.' + version.LIBSVGBIRD_SO_VERSION + '.dylib', ' libsvgbird.dylib.' + version.LIBSVGBIRD_SO_VERSION_MAJOR) 190 link (libdir, 'libsvgbird.' + version.LIBSVGBIRD_SO_VERSION + '.dylib', ' libsvgbird.dylib') 191 else: 192 print ("Can't find libsvgbird, version: " + version.LIBSVGBIRD_SO_VERSION) 193 exit (1) 194 195 #manpages 196 if not nogzip: 197 install ('build/birdfont.1.gz', mandir, 644) 198 199 if not options.nocli: 200 install ('build/birdfont-autotrace.1.gz', mandir, 644) 201 install ('build/birdfont-export.1.gz', mandir, 644) 202 install ('build/birdfont-import.1.gz', mandir, 644) 203 else: 204 install ('resources/linux/birdfont.1', mandir, 644) 205 206 if not options.nocli: 207 install ('resources/linux/birdfont-autotrace.1', mandir, 644) 208 install ('resources/linux/birdfont-export.1', mandir, 644) 209 install ('resources/linux/birdfont-import.1', mandir, 644) 210 211 #translations 212 for lang_dir in glob.glob('build/locale/*'): 213 lc = lang_dir.replace ('build/locale/', "") 214 install ('build/locale/' + lc + '/LC_MESSAGES/birdfont.mo', '/share/locale/' + lc + '/LC_MESSAGES' , 644); 215 216 #file type 217 install ('resources/linux/birdfont.xml', '/share/mime/packages', 644) 218 219 #apport hooks 220 if options.apport == "True": 221 install ('resources/birdfont.py', '/share/apport/package-hooks', 644) 222 install ('resources/source_birdfont.py', '/share/apport/package-hooks', 644) 223 install_root ('resources/birdfont-crashdb.conf', '/etc/apport/crashdb.conf.d', 644) 224 225 #install development files 226 if options.development: 227 install ('build/libsvgbird/svgbird.h', '/include', 644) 228 install ('build/libsvgbird/point_value.h', '/include', 644) 229 install ('svgbird.vapi', '/share/vala/vapi', 644) 230 install ('svgbird.deps', '/share/vala/vapi', 644) 231 install ('build/svgbird.pc', libdir + '/pkgconfig', 644) 232