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.
Set a new start points before spitting paths in stroke.
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 install (file, dir, mode): 38 f = getDest (file, dir) 39 print ("install: " + f) 40 run ('install -d ' + dest + prefix + dir) 41 run ('install -m ' + `mode` + ' ' + file + ' ' + dest + prefix + dir + '/') 42 installed.write (f + "\n") 43 44 def link (dir, file, linkname): 45 f = getDest (linkname, dir) 46 print ("install link: " + f) 47 run ('cd ' + dest + prefix + dir + ' && ln -sf ' + file + ' ' + linkname) 48 installed.write (f + "\n") 49 50 if not os.path.exists ("build/configured"): 51 print ("Project is not configured") 52 exit (1) 53 54 parser = OptionParser() 55 parser.add_option ("-d", "--dest", dest="dest", help="install to this directory", metavar="DEST") 56 parser.add_option ("-m", "--nogzip", dest="nogzip", help="don't gzip manpages", default=False) 57 parser.add_option ("-n", "--manpages-directory", dest="mandir", help="put man pages in this directory under prefix") 58 parser.add_option ("-l", "--libdir", dest="libdir", help="path to directory for shared libraries (lib or lib64).") 59 parser.add_option ("-c", "--skip-command-line-tools", dest="nocli", help="don't install command line tools") 60 61 (options, args) = parser.parse_args() 62 63 if not options.dest: 64 options.dest = "" 65 66 if not options.nocli: 67 options.nocli = False 68 69 nogzip = options.nogzip 70 71 if not options.mandir: 72 mandir = "/man/man1" 73 else: 74 mandir = options.mandir 75 76 prefix = config.PREFIX 77 dest = options.dest 78 79 # create uninstall file 80 installed = open ('build/installed', 'w') 81 installed.write ('build/installed\n') 82 83 # install it: 84 for file in os.listdir('./icons'): 85 install ('icons/' + file, '/share/birdfont/icons', 644) 86 87 install ('resources/icons.bf', '/share/birdfont', 644) 88 install ('resources/default.theme', '/share/birdfont', 644) 89 install ('resources/high_contrast.theme', '/share/birdfont', 644) 90 install ('resources/key_bindings.xml', '/share/birdfont', 644) 91 install ('resources/roboto.bf', '/share/birdfont', 644) 92 93 install ('resources/linux/birdfont.desktop', '/share/applications', 644) 94 install ('resources/linux/128x128/birdfont.png', '/share/icons/hicolor/128x128/apps', 644) 95 install ('resources/linux/48x48/birdfont.png', '/share/icons/hicolor/48x48/apps', 644) 96 97 install ('resources/linux/birdfont.appdata.xml', '/share/appdata', 644) 98 99 if os.path.isfile ('build/bin/birdfont'): 100 install ('build/bin/birdfont', '/bin', 755) 101 102 if not options.nocli: 103 install ('build/bin/birdfont-autotrace', '/bin', 755) 104 install ('build/bin/birdfont-export', '/bin', 755) 105 install ('build/bin/birdfont-import', '/bin', 755) 106 107 #library 108 if not options.libdir: 109 110 if platform.dist()[0] == 'Ubuntu' or platform.dist()[0] == 'Debian': 111 process = subprocess.Popen(['dpkg-architecture', '-qDEB_HOST_MULTIARCH'], stdout=subprocess.PIPE) 112 out, err = process.communicate() 113 libdir = '/lib/' + out.rstrip ('\n') 114 else: 115 p = platform.machine() 116 if p == 'i386' or p == 's390' or p == 'ppc' or p == 'armv7hl': 117 libdir = '/lib' 118 elif p == 'x86_64' or p == 's390x' or p == 'ppc64': 119 libdir = '/lib64' 120 else: 121 libdir = '/lib' 122 else: 123 libdir = options.libdir 124 125 if os.path.isfile ('build/bin/libbirdfont.so.' + version.SO_VERSION): 126 install ('build/bin/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 127 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 128 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 129 elif os.path.isfile ('build/libbirdfont.so.' + version.SO_VERSION): 130 install ('build/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 131 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 132 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 133 elif os.path.isfile ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib'): 134 install ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib', libdir, 644) 135 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib.' + version.SO_VERSION_MAJOR) 136 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib') 137 else: 138 print ("Can't find libbirdfont.") 139 exit (1) 140 141 if os.path.isfile ('build/bin/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION): 142 install ('build/bin/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, libdir, 644) 143 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 144 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so') 145 elif os.path.isfile ('build/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION): 146 install ('build/libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, libdir, 644) 147 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 148 link (libdir, 'libbirdxml.so.' + version.LIBBIRDXML_SO_VERSION, ' libbirdxml.so') 149 elif os.path.isfile ('build/bin/libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib'): 150 install ('build/bin/libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', libdir, 644) 151 link (libdir, 'libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', ' libbirdxml.dylib.' + version.LIBBIRDXML_SO_VERSION_MAJOR) 152 link (libdir, 'libbirdxml.' + version.LIBBIRDXML_SO_VERSION + '.dylib', ' libbirdxml.dylib') 153 else: 154 print ("Can't find libbirdxml.") 155 156 157 #manpages 158 159 if not nogzip: 160 install ('build/birdfont.1.gz', mandir, 644) 161 162 if not options.nocli: 163 install ('build/birdfont-autotrace.1.gz', mandir, 644) 164 install ('build/birdfont-export.1.gz', mandir, 644) 165 install ('build/birdfont-import.1.gz', mandir, 644) 166 else: 167 install ('resources/linux/birdfont.1', mandir, 644) 168 169 if not options.nocli: 170 install ('resources/linux/birdfont-autotrace.1', mandir, 644) 171 install ('resources/linux/birdfont-export.1', mandir, 644) 172 install ('resources/linux/birdfont-import.1', mandir, 644) 173 174 #translations 175 for lang_dir in glob.glob('build/locale/*'): 176 lc = lang_dir.replace ('build/locale/', "") 177 install ('build/locale/' + lc + '/LC_MESSAGES/birdfont.mo', '/share/locale/' + lc + '/LC_MESSAGES' , 644); 178 179 #file type 180 install ('resources/linux/birdfont.xml', '/share/mime/packages', 644) 181 182 installed.close () 183