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.
Add window icon
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 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 # create uninstall file 95 installed = open ('build/installed', 'w') 96 installed.write ('build/installed\n') 97 98 # install it: 99 install ('resources/icons.bf', '/share/birdfont', 644) 100 install ('resources/bright.theme', '/share/birdfont', 644) 101 install ('resources/dark.theme', '/share/birdfont', 644) 102 install ('resources/high_contrast.theme', '/share/birdfont', 644) 103 install ('resources/key_bindings.xml', '/share/birdfont', 644) 104 install ('resources/roboto.bf', '/share/birdfont', 644) 105 install ('resources/linux/birdfont_window_icon.png', '/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 not options.libdir: 123 124 if platform.dist()[0] == 'Ubuntu' or platform.dist()[0] == 'Debian': 125 process = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_MULTIARCH'], stdout=subprocess.PIPE) 126 out, err = process.communicate() 127 libdir = '/lib/' + out.rstrip ('\n') 128 else: 129 p = platform.machine() 130 if p == 'i386' or p == 's390' or p == 'ppc' or p == 'armv7hl': 131 libdir = '/lib' 132 elif p == 'x86_64' or p == 's390x' or p == 'ppc64': 133 libdir = '/lib64' 134 else: 135 libdir = '/lib' 136 else: 137 libdir = options.libdir 138 139 if os.path.isfile ('build/bin/libbirdfont.so.' + version.SO_VERSION): 140 install ('build/bin/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 141 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 142 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 143 elif os.path.isfile ('build/libbirdfont.so.' + version.SO_VERSION): 144 install ('build/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/bin/libbirdfont.' + version.SO_VERSION + '.dylib'): 148 install ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib', libdir, 644) 149 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib.' + version.SO_VERSION_MAJOR) 150 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib') 151 else: 152 print ("Can't find libbirdfont.") 153 exit (1) 154 155 if os.path.isfile ('build/bin/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION): 156 install ('build/bin/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, libdir, 644) 157 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 158 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so') 159 elif os.path.isfile ('build/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION): 160 install ('build/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, libdir, 644) 161 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 162 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so') 163 elif os.path.isfile ('build/bin/libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib'): 164 install ('build/bin/libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', libdir, 644) 165 link (libdir, 'libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', ' libbirdxml.dylib.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 166 link (libdir, 'libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', ' libbirdxml.dylib') 167 else: 168 print ("Can't find libbirdxml.") 169 170 171 #manpages 172 173 if not nogzip: 174 install ('build/birdfont.1.gz', mandir, 644) 175 176 if not options.nocli: 177 install ('build/birdfont-autotrace.1.gz', mandir, 644) 178 install ('build/birdfont-export.1.gz', mandir, 644) 179 install ('build/birdfont-import.1.gz', mandir, 644) 180 else: 181 install ('resources/linux/birdfont.1', mandir, 644) 182 183 if not options.nocli: 184 install ('resources/linux/birdfont-autotrace.1', mandir, 644) 185 install ('resources/linux/birdfont-export.1', mandir, 644) 186 install ('resources/linux/birdfont-import.1', mandir, 644) 187 188 #translations 189 for lang_dir in glob.glob('build/locale/*'): 190 lc = lang_dir.replace ('build/locale/', "") 191 install ('build/locale/' + lc + '/LC_MESSAGES/birdfont.mo', '/share/locale/' + lc + '/LC_MESSAGES' , 644); 192 193 #file type 194 install ('resources/linux/birdfont.xml', '/share/mime/packages', 644) 195 196 #apport hooks 197 install ('resources/birdfont.py', '/share/apport/package-hooks', 644) 198 install ('resources/source_birdfont.py', '/share/apport/package-hooks', 644) 199 install_root ('resources/birdfont-crashdb.conf', '/etc/apport/crashdb.conf.d', 644) 200 201 installed.close () 202