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 corners in stroke simplification
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 installed.write (f + "\n") 53 54 def install_root (file, dir, mode): 55 f = getDestRoot (file, dir) 56 print ("install: " + f) 57 run ('install -d ' + dest + dir) 58 run ('install -m ' + str(mode) + ' ' + file + ' ' + dest + dir + '/') 59 60 def link (dir, file, linkname): 61 f = getDest (linkname, dir) 62 print ("install link: " + f) 63 run ('cd ' + dest + prefix + dir + ' && ln -sf ' + file + ' ' + linkname) 64 installed.write (f + "\n") 65 66 if not os.path.exists ("build/configured"): 67 print ("Project is not configured") 68 exit (1) 69 70 parser = OptionParser() 71 parser.add_option ("-d", "--dest", dest="dest", help="install to this directory", metavar="DEST") 72 parser.add_option ("-m", "--nogzip", dest="nogzip", help="don't gzip manpages", default=False) 73 parser.add_option ("-n", "--manpages-directory", dest="mandir", help="put man pages in this directory under prefix") 74 parser.add_option ("-l", "--libdir", dest="libdir", help="path to directory for shared libraries (lib or lib64).") 75 parser.add_option ("-c", "--skip-command-line-tools", dest="nocli", help="don't install command line tools") 76 parser.add_option ("-a", "--apport", dest="apport", help="install apport scripts", default=True) 77 78 (options, args) = parser.parse_args() 79 80 if not options.dest: 81 options.dest = "" 82 83 if not options.nocli: 84 options.nocli = False 85 86 nogzip = options.nogzip 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/linux/birdfont_window_icon.png', '/share/birdfont', 644) 107 install ('resources/linux/birdfont.desktop', '/share/applications', 644) 108 install ('resources/ucd.sqlite', '/share/birdfont', 644) 109 install ('resources/codepages.sqlite', '/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/appdata', 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 not options.libdir: 127 128 if platform.dist()[0] == 'Ubuntu' or platform.dist()[0] == 'Debian': 129 process = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_MULTIARCH'], stdout=subprocess.PIPE) 130 out, err = process.communicate() 131 libdir = '/lib/' + out.rstrip ('\n') 132 else: 133 p = platform.machine() 134 if p == 'i386' or p == 's390' or p == 'ppc' or p == 'armv7hl': 135 libdir = '/lib' 136 elif p == 'x86_64' or p == 's390x' or p == 'ppc64': 137 libdir = '/lib64' 138 else: 139 libdir = '/lib' 140 else: 141 libdir = options.libdir 142 143 if "openbsd" in sys.platform: 144 install ('build/bin/libbirdfont.so.' + '${LIBbirdfont_VERSION}', '/lib', 644) 145 elif 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 "openbsd" in sys.platform: 162 install ('build/bin/libbirdgems.so.' + '${LIBbirdgems_VERSION}', '/lib', 644) 163 elif os.path.isfile ('build/bin/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION): 164 install ('build/bin/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, libdir, 644) 165 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION_MAJOR) 166 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so') 167 elif os.path.isfile ('build/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION): 168 install ('build/libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, libdir, 644) 169 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION_MAJOR) 170 link (libdir, 'libbirdgems.so.' + version.LIBBIRDGEMS_SO_VERSION, ' libbirdgems.so') 171 elif os.path.isfile ('build/bin/libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib'): 172 install ('build/bin/libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib', libdir, 644) 173 link (libdir, 'libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib', ' libbirdgems.dylib.' + version.LIBBIRDGEMS_SO_VERSION_MAJOR) 174 link (libdir, 'libbirdgems.' + version.LIBBIRDGEMS_SO_VERSION + '.dylib', ' libbirdgems.dylib') 175 else: 176 print ("Can't find libbirdgems, version: " + version.LIBBIRDGEMS_SO_VERSION) 177 exit (1) 178 179 180 #manpages 181 182 if not nogzip: 183 install ('build/birdfont.1.gz', mandir, 644) 184 185 if not options.nocli: 186 install ('build/birdfont-autotrace.1.gz', mandir, 644) 187 install ('build/birdfont-export.1.gz', mandir, 644) 188 install ('build/birdfont-import.1.gz', mandir, 644) 189 else: 190 install ('resources/linux/birdfont.1', mandir, 644) 191 192 if not options.nocli: 193 install ('resources/linux/birdfont-autotrace.1', mandir, 644) 194 install ('resources/linux/birdfont-export.1', mandir, 644) 195 install ('resources/linux/birdfont-import.1', mandir, 644) 196 197 #translations 198 for lang_dir in glob.glob('build/locale/*'): 199 lc = lang_dir.replace ('build/locale/', "") 200 install ('build/locale/' + lc + '/LC_MESSAGES/birdfont.mo', '/share/locale/' + lc + '/LC_MESSAGES' , 644); 201 202 #file type 203 install ('resources/linux/birdfont.xml', '/share/mime/packages', 644) 204 205 #apport hooks 206 if options.apport == "True": 207 install ('resources/birdfont.py', '/share/apport/package-hooks', 644) 208 install ('resources/source_birdfont.py', '/share/apport/package-hooks', 644) 209 install_root ('resources/birdfont-crashdb.conf', '/etc/apport/crashdb.conf.d', 644) 210 211 installed.close () 212