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-export', '/bin', 755) 98 install ('build/bin/birdfont-import', '/bin', 755) 99 100 #library 101 if not options.libdir: 102 p = platform.machine() 103 if p == 'i386' or p == 's390' or p == 'ppc' or p == 'armv7hl': 104 libdir = '/lib' 105 elif p == 'x86_64' or p == 's390x' or p == 'ppc64': 106 libdir = '/lib64' 107 else: 108 libdir = '/lib' 109 else: 110 libdir = options.libdir 111 112 if os.path.isfile ('build/bin/libbirdfont.so.' + version.SO_VERSION): 113 install ('build/bin/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 114 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 115 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 116 elif os.path.isfile ('build/libbirdfont.so.' + version.SO_VERSION): 117 install ('build/libbirdfont.so.' + version.SO_VERSION, libdir, 644) 118 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so.' + version.SO_VERSION_MAJOR) 119 link (libdir, 'libbirdfont.so.' + version.SO_VERSION, ' libbirdfont.so') 120 elif os.path.isfile ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib'): 121 install ('build/bin/libbirdfont.' + version.SO_VERSION + '.dylib', libdir, 644) 122 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib.' + version.SO_VERSION_MAJOR) 123 link (libdir, 'libbirdfont.' + version.SO_VERSION + '.dylib', ' libbirdfont.dylib') 124 else: 125 print ("Can not find libbirdfont.") 126 exit (1) 127 128 #manpages 129 if not nogzip: 130 install ('build/birdfont.1.gz', mandir, 644) 131 install ('build/birdfont-export.1.gz', mandir, 644) 132 install ('build/birdfont-import.1.gz', mandir, 644) 133 else: 134 install ('resources/linux/birdfont.1', mandir, 644) 135 install ('resources/linux/birdfont-export.1', mandir, 644) 136 install ('resources/linux/birdfont-import.1', mandir, 644) 137 138 #translations 139 for lang_dir in glob.glob('build/locale/*'): 140 lc = lang_dir.replace ('build/locale/', "") 141 install ('build/locale/' + lc + '/LC_MESSAGES/birdfont.mo', '/share/locale/' + lc + '/LC_MESSAGES' , 644); 142 143 #file type 144 install ('resources/linux/birdfont.xml', '/share/mime/packages', 644) 145 146 installed.close () 147