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.
Merge branch 'master' of gitorious.org:birdfont/birdfont
1 #!/usr/bin/python 2 """ 3 Copyright (C) 2013 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 if not os.path.exists ("build/installed"): 55 print ("Project is not built") 56 exit (1) 57 58 parser = OptionParser() 59 parser.add_option ("-d", "--dest", dest="dest", help="install to this directory", metavar="DEST") 60 parser.add_option ("-m", "--nogzip", dest="nogzip", help="don't gzip manpages", default=False) 61 parser.add_option ("-n", "--manpages-directory", dest="mandir", help="put man pages in this directory under prefix") 62 parser.add_option ("-l", "--libdir", dest="libdir", help="path to directory for shared libraries (lib or lib64).") 63 64 (options, args) = parser.parse_args() 65 66 if not options.dest: 67 options.dest = "" 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('./layout'): 85 install ('layout/' + file, '/share/birdfont/layout', 644) 86 87 for file in os.listdir('./icons'): 88 install ('icons/' + file, '/share/birdfont/icons', 644) 89 90 install ('resources/linux/birdfont.desktop', '/share/applications', 644) 91 install ('resources/linux/128x128/birdfont.png', '/share/icons/hicolor/128x128/apps', 644) 92 install ('resources/linux/48x48/birdfont.png', '/share/icons/hicolor/48x48/apps', 644) 93 94 if os.path.isfile ('build/bin/birdfont'): 95 install ('build/bin/birdfont', '/bin', 755) 96 97 install ('build/bin/birdfont-autotrace', '/bin', 755) 98 install ('build/bin/birdfont-export', '/bin', 755) 99 install ('build/bin/birdfont-import', '/bin', 755) 100 101 #library 102 if not options.libdir: 103 p = platform.machine() 104 if p == 'i386' or p == 's390' or p == 'ppc' or p == 'armv7hl': 105 libdir = '/lib' 106 elif p == 'x86_64' or p == 's390x' or p == 'ppc64': 107 libdir = '/lib64' 108 else: 109 libdir = '/lib' 110 else: 111 libdir = options.libdir 112 113 if os.path.isfile ('build/bin/libbirdfont.so.' + version.SO_VERSION): 114 install ('build/bin/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 115 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 116 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 117 elif os.path.isfile ('build/libbirdfont.so.' + version.SO_VERSION): 118 install ('build/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 119 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 120 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 121 elif os.path.isfile ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib'): 122 install ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib', libdir, 644) 123 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib.' + version.SO_VERSION_MAJOR) 124 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib') 125 else: 126 print ("Can not find libbirdfont.") 127 exit (1) 128 129 #manpages 130 if not nogzip: 131 install ('build/birdfont.1.gz', mandir, 644) 132 install ('build/birdfont-autotrace.1.gz', mandir, 644) 133 install ('build/birdfont-export.1.gz', mandir, 644) 134 install ('build/birdfont-import.1.gz', mandir, 644) 135 else: 136 install ('resources/linux/birdfont.1', mandir, 644) 137 install ('resources/linux/birdfont-autotrace.1', mandir, 644) 138 install ('resources/linux/birdfont-export.1', mandir, 644) 139 install ('resources/linux/birdfont-import.1', mandir, 644) 140 141 #translations 142 for lang_dir in glob.glob('build/locale/*'): 143 lc = lang_dir.replace ('build/locale/', "") 144 install ('build/locale/' + lc + '/LC_MESSAGES/birdfont.mo', '/share/locale/' + lc + '/LC_MESSAGES' , 644); 145 146 #file type 147 install ('resources/linux/birdfont.xml', '/share/mime/packages', 644) 148 149 installed.close () 150