Commit a5172d3
script folder
Changed files (36)
deletedbavala.pydeletedbuild_macport.pymodifiedconfiguremodifieddodo.pymodifiedinstalldeletedlinux/birdfont-export.1deletedlinux/birdfont.1deletedlinux/birdfont.desktopdeletedlinux/birdfont.pngdeletedmac/Info.plistdeletedmac/birdfont.icnsdeletedmac/birdfont.shdeletedmac/install_macport.pyaddedresources/linux/birdfont-export.1addedresources/linux/birdfont.1addedresources/linux/birdfont.desktopaddedresources/linux/birdfont.pngaddedresources/mac/Info.plistaddedresources/mac/birdfont.icnsaddedresources/mac/birdfont.shaddedresources/win32/birdfont.icoaddedresources/win32/icon.rcaddedscripts/__init__.pyaddedscripts/bavala.pyaddedscripts/configfile.pyaddedscripts/macport_build.pyaddedscripts/macport_install.pyaddedscripts/update_translations.pyaddedscripts/version.pyaddedscripts/win_build.pydeletedupdate_translations.pydeletedversion.pydeletedwin32/birdfont.icodeletedwin32/build_win32.pydeletedwin32/icon.rcdeletedwrite_config.py
Diff
deleted file mode 100644@@ -1,144 +0,0 @@-"""bavala is a build-tool for Vala based on doit (http://pydoit.org)"""--import glob-from os.path import join--from doit.action import CmdAction---def cmd(name, *args):- """create string for command line"""- parts = [name]- for item in args:- if isinstance(item, basestring):- parts.append(item)- elif isinstance(item, dict):- for param, value in item.iteritems():- if isinstance(value, basestring):- value = [value]- parts.extend('--{0} {1}'.format(param, v) for v in value)- else:- parts.extend(item)- return ' '.join(parts)----class Vala(object):- """helper to generate tasks to compile vala code"""-- def __init__(self, src, build, pkg_libs, library=None, vala_deps=None):- self.src = src- self.build = build- self.library = library- self.pkg_libs = pkg_libs- self.vala_deps = vala_deps or []-- self.vala = list(glob.glob(src + '/*.vala'))- self.c = list(glob.glob(src + '/*.c')) # copy regular c sources- self.cc = [join(build, f) for f in self.c]- self.cc += [join(build, f.replace('.vala', '.c')) for f in self.vala]- self.obj = [f.replace('.c', '.o') for f in self.cc]- self.obj += [join(build, f.replace('.vala', '.o')) for f in self.vala]- - if library:- self.header = join(build, library) + '.h'- self.vapi = join(build, library) + '.vapi'- self.so = join(build, src) + '.so'--- def gen_c(self, opts):- """translate code from vala to C and create .vapi"""- options = ['--ccode', '--save-temps']- options.extend(opts)- params = {- 'basedir': join(self.build, self.src),- 'vapidir': './',- 'pkg': self.pkg_libs,- }- if self.library:- params['library'] = self.library- params['vapi'] = self.vapi- params['header'] = self.header-- dep_vapi = [d.vapi for d in self.vala_deps]- action = cmd('valac', options, params, dep_vapi, self.vala)- targets = self.cc[:]- if self.library:- targets += [self.header, self.vapi]- - for f in self.c:- yield {- 'name': 'copy_c',- 'actions': [ - 'mkdir -p '+ self.build + '/' + self.src + '/', - 'cp ' + f + ' ' + self.build + '/' + self.src + '/'- ],- }- - yield {- 'name': 'compile_c',- 'actions': [ action ],- 'file_dep': self.vala + dep_vapi,- 'targets': targets,- }--- def gen_o(self, opts):- """compile C files to obj `.o` """- def compile_cmd(conf, opts, libs, pos):- flags = [conf[l].strip() for l in libs]- return cmd('gcc', opts, flags, pos)-- for cc, obj in zip(self.cc, self.obj):- pos = ["-c " + cc, "-o " + obj ]- cmd_args = {'libs':self.pkg_libs, 'opts':opts, 'pos':pos}- action = CmdAction((compile_cmd, [], cmd_args))- yield {- 'name': obj.rsplit('/')[-1],- 'file_dep': [ cc ],- 'actions': [ action ],- 'getargs': { 'conf': ('pkg_flags', 'out') },- 'targets': [ obj ],- }--- def gen_so(self):- """generate ".so" lib file"""- def compile_cmd(conf, libs):- obj_glob = join(self.build, self.src, '*.o')- opts = ['-shared ' + obj_glob,- '-o ' + self.so ]- flags = [conf[l].strip() for l in libs]- return cmd('gcc', opts, flags)-- return {- 'name': self.so.rsplit('/')[-1],- 'actions': [ CmdAction((compile_cmd, [], {'libs':self.pkg_libs})) ],- 'getargs': { 'conf': ('pkg_flags', 'out') },- 'file_dep': self.obj,- 'targets': [ self.so ],- }--- def gen_bin(self, opts):- """generate binary"""- def compile_cmd(conf, opts, libs):- flags = [conf[l].strip() for l in libs]- return cmd('gcc', opts, flags)-- bin_path = join(self.build, 'bin')- target = join(bin_path, self.src)- opts = (self.cc + opts +- ['-o ' + target, '-I ' + self.build, '-L ' + self.build] +- ['-l ' + d.library for d in self.vala_deps])- action = CmdAction((compile_cmd, [], {'opts':opts, 'libs':self.pkg_libs}))- yield {- 'name': "bin",- 'actions': [ 'mkdir -p %s' % bin_path, action ],- 'getargs': { 'conf': ('pkg_flags', 'out') },- 'file_dep': self.cc + [ d.so for d in self.vala_deps ],- 'targets': [ target ],- }---deleted file mode 100755@@ -1,80 +0,0 @@-#!/usr/bin/python--import os-import shutil-import subprocess-import sys-from optparse import OptionParser--import write_config--def run(cmd):- process = subprocess.Popen (cmd, shell=True)- process.communicate()[0]- if not process.returncode == 0:- print("Error: " + cmd)- exit(1)--def build ():- #libbirdfont- run("rm -rf build")- run("mkdir -p build/libbirdfont")- run("mkdir -p build/bin")-- run("valac -C --basedir build/libbirdfont/ --enable-experimental-non-null --enable-experimental --define=MAC --library libbirdfont -H build/libbirdfont/birdfont.h libbirdfont/* --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0")- run("cp libbirdfont/*.c build/libbirdfont/")-- run("""gcc -c build/libbirdfont/*.c -shared -fno-common -fPIC -D 'GETTEXT_PACKAGE="birdfont"' $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) -I ./build/mac/birdfont""")- run("mv ./*.o build/libbirdfont/ ")-- run("gcc -dynamiclib -Wl,-headerpad_max_install_names,-undefined,dynamic_lookup,-compatibility_version,1.0,-current_version,1.0,-install_name,/usr/local/lib/libbirdfont.dylib -shared build/libbirdfont/*.o $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) -shared -o libbirdfont.dylib")- run("mv libbirdfont.dylib build/bin/")-- # birdfont- run("mkdir -p build/birdfont")- - run("valac -C --enable-experimental-non-null --enable-experimental --define=MAC birdfont/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")- run("mv birdfont/*.c build/birdfont/")-- run("""gcc -c ./build/libbirdfont/birdfont.h build/birdfont/*.c -D 'GETTEXT_PACKAGE="birdfont"' $(pkg-config --cflags libxml-2.0) $(pkg-config --cflags gio-2.0) $(pkg-config --cflags cairo) $(pkg-config --cflags glib-2.0) $(pkg-config --cflags gdk-pixbuf-2.0) $(pkg-config --cflags webkit-1.0) -I ./build/libbirdfont/""")- run("mv ./*.o build/birdfont/")-- run("gcc build/birdfont/*.o ./build/bin/libbirdfont.dylib $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) $(pkg-config --cflags --libs gtk+-2.0) -o ./build/bin/birdfont")-- # birdfont-export- run("mkdir -p build/birdfont-export")- - run("valac -C --enable-experimental-non-null --enable-experimental --define=MAC birdfont-export/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")- run("mv birdfont-export/*.c build/birdfont-export/")-- run("""gcc -c ./build/libbirdfont/birdfont.h build/birdfont-export/*.c -D 'GETTEXT_PACKAGE="birdfont"' $(pkg-config --cflags libxml-2.0) $(pkg-config --cflags gio-2.0) $(pkg-config --cflags cairo) $(pkg-config --cflags glib-2.0) $(pkg-config --cflags gdk-pixbuf-2.0) $(pkg-config --cflags webkit-1.0) -I ./build/libbirdfont/""")- run("mv ./*.o build/birdfont-export/")-- run("gcc build/birdfont-export/*.o ./build/bin/libbirdfont.dylib $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) $(pkg-config --cflags --libs gtk+-2.0) -o ./build/bin/birdfont-export")-- run("touch build/installed")- run("touch build/configured")-- # application launcher- run("mkdir -p build/BirdFont.app")- run("mkdir -p build/BirdFont.app/Contents")- run("mkdir -p build/BirdFont.app/Contents/MacOs")- run("mkdir -p build/BirdFont.app/Contents/Resources")-- run("cp mac/birdfont.sh build/BirdFont.app/Contents/MacOs")- run("cp mac/Info.plist build/BirdFont.app/Contents/") - run("cp mac/birdfont.icns build/BirdFont.app/Contents/Resources")--parser = OptionParser()-parser.add_option("-p", "--prefix", dest="prefix", help="install prefix", metavar="PREFIX")--(options, args) = parser.parse_args()--if not options.prefix:- options.prefix = "/usr"--write_config.write_config (options.prefix)--build ()--@@ -4,8 +4,8 @@ import os import sys import time; from optparse import OptionParser-import version-import write_config+from scripts import version+from scripts import configfile import re VERSION = version.VERSION@@ -84,4 +84,4 @@ if not options.prefix: options.prefix = "/usr" configure ()-write_config.write_config (options.prefix)+configfile.write_config (options.prefix)@@ -1,11 +1,11 @@ import os import glob import subprocess-import version from doit.tools import run_once from doit.action import CmdAction-from bavala import Vala+from scripts.bavala import Vala+from scripts import version VERSION = version.VERSION @@ -105,7 +105,7 @@ def task_man(): for name in ("birdfont.1", "birdfont-export.1"): yield { 'name': name,- 'file_dep': ['linux/%s' % name],+ 'file_dep': ['resources/linux/%s' % name], 'targets': ['build/%s.gz' % name], 'actions': ["gzip -9 -c %(dependencies)s > %(targets)s"], }@@ -50,8 +50,8 @@ for file in os.listdir('./layout'): for file in os.listdir('./icons'): install ('icons/' + file, '/share/birdfont/icons') -install ('linux/birdfont.desktop', '/share/applications')-install ('linux/birdfont.png', '/share/icons/hicolor/48x48/apps')+install ('resources/linux/birdfont.desktop', '/share/applications')+install ('resources/linux/birdfont.png', '/share/icons/hicolor/48x48/apps') install ('build/bin/birdfont', '/bin') install ('build/bin/birdfont-export', '/bin')deleted file mode 100644@@ -1,26 +0,0 @@-.TH BIRDFONT-EXPORT 1 LOCAL--.SH NAME-birdfont-export - generate TTF, EOT and SVG files from FFI-files-.SH SYNOPSIS-.B birdfont-export [options] file-.SH DESCRIPTION-birdfont-export generates fonts that can be installed and on -your computer or deployed on your website.--See http://birdfont.org for use cases.-.SH OPTIONS-.TP 5--h, --help-Print command line options.-.TP--o, --output [directory]-Write files to this directory-.TP--s, --svg-Write SVG font-.TP --t, --ttf-Write TTF and EOT fonts-.SH AUTHOR-Johan Mattssondeleted file mode 100644@@ -1,32 +0,0 @@-.TH BIRDFONT 1 LOCAL--.SH NAME-birdfont - font editor-.SH SYNOPSIS-.B birdfont [file] [options]-.SH DESCRIPTION-birdfont lets you edit and create font files.--See http://birdfont.org-.SH OPTIONS-.TP--c, --show-coordinates-show coordinate in glyph view-.TP--e, --exit-exit if a testcase failes-.TP--f, --fatal-warning-treat warnings as fatal-.TP--h, --help-show command line options-.TP--s, --slow-sleep between each command in test suite-.TP--t [testcase]-run tests-.SH AUTHOR-Johan Mattsson-deleted file mode 100644@@ -1,12 +0,0 @@-[Desktop Entry]-Name=Birdfont-Name[ru]=Birdfont-Comment=SVG Fonts editor-Comment[ru]=Редактор шрифтов SVG-Exec=birdfont %U-Icon=birdfont-StartupWMClass=birdfont-Terminal=false-Type=Application-Categories=Graphics;-deleted file mode 100644Binary files a/linux/birdfont.png and /dev/null differdeleted file mode 100644@@ -1,48 +0,0 @@-<?xml version="1.0" encoding="UTF-8"?>-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">-<plist version="1.0">-<dict>- <key>CFBundleDevelopmentRegion</key>- <string>English</string>- <key>CFBundleDisplayName</key>- <string>birdfont</string>- <key>CFBundleExecutable</key>- <string>birdfont.sh</string>- <key>CFBundleGetInfoString</key>- <string>Birdfont</string>- <key>CFBundleIconFile</key>- <string>birdfont.icns</string>- <key>CFBundleIdentifier</key>- <string>org.birdfont</string>- <key>CFBundleInfoDictionaryVersion</key>- <string>6.0</string>- <key>CFBundleName</key>- <string>makeBundle</string>- <key>CFBundlePackageType</key>- <string>APPL</string>- <key>CFBundleShortVersionString</key>- <string>1.0</string>- <key>CFBundleSignature</key>- <string>nono</string>- <key>CFBundleVersion</key>- <string>1.0</string>- <key>LSEnvironment</key>- <dict>- <key>APP_BUNDLER</key>- <string>makeBundle.tcl 1.0</string>- </dict>- <key>LSHasLocalizedDisplayName</key>- <false/>- <key>LSUIElement</key>- <false/>- <key>NSAppleScriptEnabled</key>- <false/>- <key>NSHumanReadableCopyright</key>- <string>Birdfont Copyright Johan Mattsson and others. See AUTHORS file.</string>- <key>NSMainNibFile</key>- <string>MainMenu</string>- <key>NSPrincipalClass</key>- <string>NSApplication</string>-</dict>-</plist>-deleted file mode 100644Binary files a/mac/birdfont.icns and /dev/null differdeleted file mode 100755@@ -1,3 +0,0 @@-#!/bin/bash-cd "${0%/*}"-/opt/local/bin/birdfont deleted file mode 100755@@ -1,45 +0,0 @@-#!/usr/bin/python-import os-import subprocess-import glob-from optparse import OptionParser--def install (file, dir):- if dest == "":- f = prefix + dir + '/'- else:- f = dest + prefix + dir + '/'- - s = file.rfind ('/')- if s > -1:- f += file[s + 1:]- else:- f += file- print ("install: " + f + " in " + file + ' ' + dest + prefix + dir + '/')- subprocess.check_call ('install -d ' + dest + prefix + dir, shell=True)- subprocess.check_call ('install ' + file + ' ' + dest + prefix + dir + '/', shell=True)--parser = OptionParser()-parser.add_option ("-p", "--prefix", dest="prefix", help="install prefix", metavar="PREFIX")-parser.add_option ("-d", "--dest", dest="dest", help="install to this directory", metavar="DEST")--(options, args) = parser.parse_args()--if not options.prefix:- options.prefix = "/opt/local"--if not options.dest:- options.dest = ""--prefix = options.prefix-dest = options.dest--install ('build/bin/birdfont', '/bin')-install ('build/bin/birdfont-export', '/bin') -install ('build/bin/libbirdfont.dylib', '/lib')--# install application launcher-subprocess.check_call ('mkdir -p ' + dest + '/Applications/', shell=True)-subprocess.check_call ('cp -r build/BirdFont.app ' + dest + '/Applications/', shell=True)--new file mode 100644@@ -0,0 +1,26 @@+.TH BIRDFONT-EXPORT 1 LOCAL++.SH NAME+birdfont-export - generate TTF, EOT and SVG files from FFI-files+.SH SYNOPSIS+.B birdfont-export [options] file+.SH DESCRIPTION+birdfont-export generates fonts that can be installed and on +your computer or deployed on your website.++See http://birdfont.org for use cases.+.SH OPTIONS+.TP 5+-h, --help+Print command line options.+.TP+-o, --output [directory]+Write files to this directory+.TP+-s, --svg+Write SVG font+.TP +-t, --ttf+Write TTF and EOT fonts+.SH AUTHOR+Johan Mattssonnew file mode 100644@@ -0,0 +1,32 @@+.TH BIRDFONT 1 LOCAL++.SH NAME+birdfont - font editor+.SH SYNOPSIS+.B birdfont [file] [options]+.SH DESCRIPTION+birdfont lets you edit and create font files.++See http://birdfont.org+.SH OPTIONS+.TP+-c, --show-coordinates+show coordinate in glyph view+.TP+-e, --exit+exit if a testcase failes+.TP+-f, --fatal-warning+treat warnings as fatal+.TP+-h, --help+show command line options+.TP+-s, --slow+sleep between each command in test suite+.TP+-t [testcase]+run tests+.SH AUTHOR+Johan Mattsson+new file mode 100644@@ -0,0 +1,12 @@+[Desktop Entry]+Name=Birdfont+Name[ru]=Birdfont+Comment=SVG Fonts editor+Comment[ru]=Редактор шрифтов SVG+Exec=birdfont %U+Icon=birdfont+StartupWMClass=birdfont+Terminal=false+Type=Application+Categories=Graphics;+new file mode 100644Binary files /dev/null and b/resources/linux/birdfont.png differnew file mode 100644@@ -0,0 +1,48 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">+<plist version="1.0">+<dict>+ <key>CFBundleDevelopmentRegion</key>+ <string>English</string>+ <key>CFBundleDisplayName</key>+ <string>birdfont</string>+ <key>CFBundleExecutable</key>+ <string>birdfont.sh</string>+ <key>CFBundleGetInfoString</key>+ <string>Birdfont</string>+ <key>CFBundleIconFile</key>+ <string>birdfont.icns</string>+ <key>CFBundleIdentifier</key>+ <string>org.birdfont</string>+ <key>CFBundleInfoDictionaryVersion</key>+ <string>6.0</string>+ <key>CFBundleName</key>+ <string>makeBundle</string>+ <key>CFBundlePackageType</key>+ <string>APPL</string>+ <key>CFBundleShortVersionString</key>+ <string>1.0</string>+ <key>CFBundleSignature</key>+ <string>nono</string>+ <key>CFBundleVersion</key>+ <string>1.0</string>+ <key>LSEnvironment</key>+ <dict>+ <key>APP_BUNDLER</key>+ <string>makeBundle.tcl 1.0</string>+ </dict>+ <key>LSHasLocalizedDisplayName</key>+ <false/>+ <key>LSUIElement</key>+ <false/>+ <key>NSAppleScriptEnabled</key>+ <false/>+ <key>NSHumanReadableCopyright</key>+ <string>Birdfont Copyright Johan Mattsson and others. See AUTHORS file.</string>+ <key>NSMainNibFile</key>+ <string>MainMenu</string>+ <key>NSPrincipalClass</key>+ <string>NSApplication</string>+</dict>+</plist>+new file mode 100644Binary files /dev/null and b/resources/mac/birdfont.icns differnew file mode 100755@@ -0,0 +1,3 @@+#!/bin/bash+cd "${0%/*}"+/opt/local/bin/birdfont new file mode 100644Binary files /dev/null and b/resources/win32/birdfont.ico differnew file mode 100644@@ -0,0 +1 @@+id ICON "../win32/birdfont.ico"new file mode 100644new file mode 100644@@ -0,0 +1,144 @@+"""bavala is a build-tool for Vala based on doit (http://pydoit.org)"""++import glob+from os.path import join++from doit.action import CmdAction+++def cmd(name, *args):+ """create string for command line"""+ parts = [name]+ for item in args:+ if isinstance(item, basestring):+ parts.append(item)+ elif isinstance(item, dict):+ for param, value in item.iteritems():+ if isinstance(value, basestring):+ value = [value]+ parts.extend('--{0} {1}'.format(param, v) for v in value)+ else:+ parts.extend(item)+ return ' '.join(parts)++++class Vala(object):+ """helper to generate tasks to compile vala code"""++ def __init__(self, src, build, pkg_libs, library=None, vala_deps=None):+ self.src = src+ self.build = build+ self.library = library+ self.pkg_libs = pkg_libs+ self.vala_deps = vala_deps or []++ self.vala = list(glob.glob(src + '/*.vala'))+ self.c = list(glob.glob(src + '/*.c')) # copy regular c sources+ self.cc = [join(build, f) for f in self.c]+ self.cc += [join(build, f.replace('.vala', '.c')) for f in self.vala]+ self.obj = [f.replace('.c', '.o') for f in self.cc]+ self.obj += [join(build, f.replace('.vala', '.o')) for f in self.vala]+ + if library:+ self.header = join(build, library) + '.h'+ self.vapi = join(build, library) + '.vapi'+ self.so = join(build, src) + '.so'+++ def gen_c(self, opts):+ """translate code from vala to C and create .vapi"""+ options = ['--ccode', '--save-temps']+ options.extend(opts)+ params = {+ 'basedir': join(self.build, self.src),+ 'vapidir': './',+ 'pkg': self.pkg_libs,+ }+ if self.library:+ params['library'] = self.library+ params['vapi'] = self.vapi+ params['header'] = self.header++ dep_vapi = [d.vapi for d in self.vala_deps]+ action = cmd('valac', options, params, dep_vapi, self.vala)+ targets = self.cc[:]+ if self.library:+ targets += [self.header, self.vapi]+ + for f in self.c:+ yield {+ 'name': 'copy_c',+ 'actions': [ + 'mkdir -p '+ self.build + '/' + self.src + '/', + 'cp ' + f + ' ' + self.build + '/' + self.src + '/'+ ],+ }+ + yield {+ 'name': 'compile_c',+ 'actions': [ action ],+ 'file_dep': self.vala + dep_vapi,+ 'targets': targets,+ }+++ def gen_o(self, opts):+ """compile C files to obj `.o` """+ def compile_cmd(conf, opts, libs, pos):+ flags = [conf[l].strip() for l in libs]+ return cmd('gcc', opts, flags, pos)++ for cc, obj in zip(self.cc, self.obj):+ pos = ["-c " + cc, "-o " + obj ]+ cmd_args = {'libs':self.pkg_libs, 'opts':opts, 'pos':pos}+ action = CmdAction((compile_cmd, [], cmd_args))+ yield {+ 'name': obj.rsplit('/')[-1],+ 'file_dep': [ cc ],+ 'actions': [ action ],+ 'getargs': { 'conf': ('pkg_flags', 'out') },+ 'targets': [ obj ],+ }+++ def gen_so(self):+ """generate ".so" lib file"""+ def compile_cmd(conf, libs):+ obj_glob = join(self.build, self.src, '*.o')+ opts = ['-shared ' + obj_glob,+ '-o ' + self.so ]+ flags = [conf[l].strip() for l in libs]+ return cmd('gcc', opts, flags)++ return {+ 'name': self.so.rsplit('/')[-1],+ 'actions': [ CmdAction((compile_cmd, [], {'libs':self.pkg_libs})) ],+ 'getargs': { 'conf': ('pkg_flags', 'out') },+ 'file_dep': self.obj,+ 'targets': [ self.so ],+ }+++ def gen_bin(self, opts):+ """generate binary"""+ def compile_cmd(conf, opts, libs):+ flags = [conf[l].strip() for l in libs]+ return cmd('gcc', opts, flags)++ bin_path = join(self.build, 'bin')+ target = join(bin_path, self.src)+ opts = (self.cc + opts ++ ['-o ' + target, '-I ' + self.build, '-L ' + self.build] ++ ['-l ' + d.library for d in self.vala_deps])+ action = CmdAction((compile_cmd, [], {'opts':opts, 'libs':self.pkg_libs}))+ yield {+ 'name': "bin",+ 'actions': [ 'mkdir -p %s' % bin_path, action ],+ 'getargs': { 'conf': ('pkg_flags', 'out') },+ 'file_dep': self.cc + [ d.so for d in self.vala_deps ],+ 'targets': [ target ],+ }+++new file mode 100755@@ -0,0 +1,23 @@+#!/usr/bin/python+import version+import time;++VERSION = version.VERSION++def write_config (prefix):+ print ("Writing Config.vala")++ vars = (('VERSION', VERSION),+ ('BUILD_TIMESTAMP', time.asctime( time.localtime(time.time()))),+ ('PREFIX', prefix),+ )++ f = open('./libbirdfont/Config.vala', 'w+')+ f.write("// Don't edit this file -- it is generated by the build script\n")+ f.write("namespace BirdFont {\n")++ var_line = ' internal static const string %s = "%s";\n'+ for name, value in vars:+ f.write(var_line % (name, value))++ f.write("}")new file mode 100755@@ -0,0 +1,70 @@+#!/usr/bin/python++import os+import shutil+import subprocess+import sys+from optparse import OptionParser++import configfile++def run(cmd):+ process = subprocess.Popen (cmd, shell=True)+ process.communicate()[0]+ if not process.returncode == 0:+ print("Error: " + cmd)+ exit(1)++def build ():+ #libbirdfont+ run("rm -rf build")+ run("mkdir -p build/libbirdfont")+ run("mkdir -p build/bin")++ run("valac -C --basedir build/libbirdfont/ --enable-experimental-non-null --enable-experimental --define=MAC --library libbirdfont -H build/libbirdfont/birdfont.h libbirdfont/* --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0")+ run("cp libbirdfont/*.c build/libbirdfont/")++ run("""gcc -c build/libbirdfont/*.c -shared -fno-common -fPIC -D 'GETTEXT_PACKAGE="birdfont"' $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) -I ./build/mac/birdfont""")+ run("mv ./*.o build/libbirdfont/ ")++ run("gcc -dynamiclib -Wl,-headerpad_max_install_names,-undefined,dynamic_lookup,-compatibility_version,1.0,-current_version,1.0,-install_name,/usr/local/lib/libbirdfont.dylib -shared build/libbirdfont/*.o $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) -shared -o libbirdfont.dylib")+ run("mv libbirdfont.dylib build/bin/")++ # birdfont+ run("mkdir -p build/birdfont")+ + run("valac -C --enable-experimental-non-null --enable-experimental --define=MAC birdfont/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")+ run("mv birdfont/*.c build/birdfont/")++ run("""gcc -c ./build/libbirdfont/birdfont.h build/birdfont/*.c -D 'GETTEXT_PACKAGE="birdfont"' $(pkg-config --cflags libxml-2.0) $(pkg-config --cflags gio-2.0) $(pkg-config --cflags cairo) $(pkg-config --cflags glib-2.0) $(pkg-config --cflags gdk-pixbuf-2.0) $(pkg-config --cflags webkit-1.0) -I ./build/libbirdfont/""")+ run("mv ./*.o build/birdfont/")++ run("gcc build/birdfont/*.o ./build/bin/libbirdfont.dylib $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) $(pkg-config --cflags --libs gtk+-2.0) -o ./build/bin/birdfont")++ # birdfont-export+ run("mkdir -p build/birdfont-export")+ + run("valac -C --enable-experimental-non-null --enable-experimental --define=MAC birdfont-export/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")+ run("mv birdfont-export/*.c build/birdfont-export/")++ run("""gcc -c ./build/libbirdfont/birdfont.h build/birdfont-export/*.c -D 'GETTEXT_PACKAGE="birdfont"' $(pkg-config --cflags libxml-2.0) $(pkg-config --cflags gio-2.0) $(pkg-config --cflags cairo) $(pkg-config --cflags glib-2.0) $(pkg-config --cflags gdk-pixbuf-2.0) $(pkg-config --cflags webkit-1.0) -I ./build/libbirdfont/""")+ run("mv ./*.o build/birdfont-export/")++ run("gcc build/birdfont-export/*.o ./build/bin/libbirdfont.dylib $(pkg-config --cflags --libs libxml-2.0) $(pkg-config --cflags --libs gio-2.0) $(pkg-config --cflags --libs cairo) $(pkg-config --cflags --libs glib-2.0) $(pkg-config --cflags --libs gdk-pixbuf-2.0) $(pkg-config --cflags --libs webkit-1.0) $(pkg-config --cflags --libs gtk+-2.0) -o ./build/bin/birdfont-export")++ run("touch build/installed")+ run("touch build/configured")++ # application launcher+ run("mkdir -p build/BirdFont.app")+ run("mkdir -p build/BirdFont.app/Contents")+ run("mkdir -p build/BirdFont.app/Contents/MacOs")+ run("mkdir -p build/BirdFont.app/Contents/Resources")++ run("cp mac/birdfont.sh build/BirdFont.app/Contents/MacOs")+ run("cp mac/Info.plist build/BirdFont.app/Contents/") + run("cp mac/birdfont.icns build/BirdFont.app/Contents/Resources")++build ()++new file mode 100755@@ -0,0 +1,45 @@+#!/usr/bin/python+import os+import subprocess+import glob+from optparse import OptionParser++def install (file, dir):+ if dest == "":+ f = prefix + dir + '/'+ else:+ f = dest + prefix + dir + '/'+ + s = file.rfind ('/')+ if s > -1:+ f += file[s + 1:]+ else:+ f += file+ print ("install: " + f + " in " + file + ' ' + dest + prefix + dir + '/')+ subprocess.check_call ('install -d ' + dest + prefix + dir, shell=True)+ subprocess.check_call ('install ' + file + ' ' + dest + prefix + dir + '/', shell=True)++parser = OptionParser()+parser.add_option ("-p", "--prefix", dest="prefix", help="install prefix", metavar="PREFIX")+parser.add_option ("-d", "--dest", dest="dest", help="install to this directory", metavar="DEST")++(options, args) = parser.parse_args()++if not options.prefix:+ options.prefix = "/opt/local"++if not options.dest:+ options.dest = ""++prefix = options.prefix+dest = options.dest++install ('build/bin/birdfont', '/bin')+install ('build/bin/birdfont-export', '/bin') +install ('build/bin/libbirdfont.dylib', '/lib')++# install application launcher+subprocess.check_call ('mkdir -p ' + dest + '/Applications/', shell=True)+subprocess.check_call ('cp -r build/BirdFont.app ' + dest + '/Applications/', shell=True)++new file mode 100755@@ -0,0 +1,26 @@+#!/usr/bin/python+import subprocess+import os++def task_update_translations ():+ subprocess.check_output ("xgettext --language=C# --keyword=_ --add-comments=/ --from-code=utf-8 --output=./po/birdfont.pot ./libbirdfont/*.vala ./birdfont/*.vala ./birdfont-export/*.vala", shell=True)++ for file in os.listdir('./po'):+ if file == "birdfont.pot": continue+ + loc = file.replace (".po", "")+ d = "./po/" + loc + ".po"++ subprocess.check_output ("wget -O build/" + loc + ".po.zip http://pootle.locamotion.org/" + loc + "/birdfont/export/zip", shell=True)+ subprocess.check_output ("unzip build/" + loc + ".po.zip", shell=True)+ subprocess.check_output ("mv " + loc + ".po " + d, shell=True)+ + subprocess.check_output ("msgmerge " + d + " ./po/birdfont.pot > " + loc + ".po.new", shell=True)+ subprocess.check_output ("mv " + loc + ".po.new " + d, shell=True)+ + return {+ 'actions': ['echo "done updating translations"'],+ }+++task_update_translations ()new file mode 100644@@ -0,0 +1,2 @@+#!/usr/bin/python+VERSION = '0.14'new file mode 100755@@ -0,0 +1,376 @@+#!/usr/bin/python++import os+import shutil+import subprocess+import sys++sys.path.append('../')+import dodo # import version number++WIN32_LIBS = [+ 'glib-2.0',+ 'libxml-2.0',+ 'gio-2.0',+ 'libsoup-2.4',+ 'gtk+-2.0',+ 'webkit-1.0'+]++WIN32_DLLS = [ + "libcairo-2.dll",+ "libgdk-win32-2.0-0.dll",+ "libgdk_pixbuf-2.0-0.dll",+ "libgio-2.0-0.dll",+ "libglib-2.0-0.dll",+ "libgobject-2.0-0.dll",+ "libgthread-2.0-0.dll",+ "libgtk-win32-2.0-0.dll",+ "libxml2-2.dll",+ "libfontconfig-1.dll",+ "libfreetype-6.dll",+ "libpixman-1-0.dll",+ "libpng15-15.dll",+ "zlib1.dll",+ "libpixman-1-0.dll",+ "libpng15-15.dll",+ "libintl-8.dll",+ "libgmodule-2.0-0.dll",+ "libffi-5.dll",+ "libgobject-2.0-0.dll",+ "libjasper-1.dll",+ "libjpeg-8.dll",+ "libtiff-5.dll",+ "libgdk_pixbuf-2.0-0.dll",+ "libpango-1.0-0.dll",+ "libpangocairo-1.0-0.dll",+ "libgdk-win32-2.0-0.dll",+ "libgmodule-2.0-0.dll",+ "libexpat-1.dll",+ "libpangoft2-1.0-0.dll",+ "libpangowin32-1.0-0.dll",+ "libpangocairo-1.0-0.dll",+ "libgdk-win32-2.0-0.dll",+ "libpangoft2-1.0-0.dll",+ "libpangowin32-1.0-0.dll",+ "libpangocairo-1.0-0.dll",+ "libatk-1.0-0.dll",+ "libsoup-2.4-1.dll",+ "libsqlite3-0.dll",+ "libxslt-1.dll",+ "libgcc_s_sjlj-1.dll",+ "libstdc++-6.dll",+ "libjavascriptcoregtk-1.0-0.dll",+ "libenchant-1.dll",+ "libgailutil-18.dll",+ "libwebkitgtk-1.0-0.dll",+ "pthreadGC2.dll"+]++def run(cmd):+ process = subprocess.Popen (cmd, shell=True)+ process.communicate()[0]+ if not process.returncode == 0:+ print("Error: " + cmd)+ exit(1)+ +def configure():+ print("")+ print("Crosscompile for windows")+ + os.chdir('../')+ run('./configure')+ os.chdir('./win32')+ + run('i686-w64-mingw32-gcc --version')+ run('i686-w64-mingw32-pkg-config --version') + run('windres --version') + run('wine --version')+ run('ls ' + os.getenv("HOME") + "/.wine/drive_c/Program/NSIS/makensis.exe")+ + for pkg in WIN32_LIBS:+ run('i686-w64-mingw32-pkg-config --cflags --libs '+ pkg)++def build():+ run("mkdir -p ../build/supplement")+ run("mkdir -p ../build/win32")+ run("mkdir -p ../build/win32/libbirdfont")+ run("mkdir -p ../build/win32/birdfont")+ run("mkdir -p ../build/win32/birdfont-export")++ run("windres ../win32/icon.rc -O coff -o ../build/icon.res")++ # generate c code+ run("cp ../libbirdfont/*.c ../build/win32/libbirdfont/")+ run("valac -C --basedir ../build/win32/libbirdfont/ --library libbirdfont -H ../build/win32/libbirdfont/birdfont.h ../libbirdfont/*.vala --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0")++ run("valac -C ../birdfont/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")+ run("mv ./*.c ../build/win32/birdfont/")++ run("valac -C ../birdfont-export/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")+ run("mv ./*.c ../build/win32/birdfont-export/")++ # compile c code+ run("""i686-w64-mingw32-gcc \+ -c ../build/win32/libbirdfont/birdfont.h \+ ../build/win32/birdfont/Main.c \+ ../build/win32/birdfont/GtkWindow.c \+ ../build/win32/birdfont-export/BirdfontExport.c \+ ../build/win32/libbirdfont/*.c ./ \+ -D 'GETTEXT_PACKAGE="birdfont"' \+ -I ../build/win32/libbirdfont/ \+ -mthreads \+ $(i686-w64-mingw32-pkg-config --cflags --libs glib-2.0) \+ $(i686-w64-mingw32-pkg-config --cflags --libs libxml-2.0) \+ $(i686-w64-mingw32-pkg-config --cflags --libs gio-2.0) \+ $(i686-w64-mingw32-pkg-config --cflags --libs libsoup-2.4) \+ $(i686-w64-mingw32-pkg-config --cflags --libs gtk+-2.0) \+ $(i686-w64-mingw32-pkg-config --cflags --libs webkit-1.0)""");+ + # move object files to their folders+ run("""mv BirdfontExport.o ../build/win32/birdfont-export """)+ run("""mv Main.o ../build/win32/birdfont """)+ run("""mv GtkWindow.o ../build/win32/birdfont """)+ run("""mv *.o ../build/win32/libbirdfont/ """)++ # link binaries+ run("""i686-w64-mingw32-gcc \+ -shared \+ ../build/win32/libbirdfont/*.o \+ ../build/icon.res \+ -Wl,-subsystem,windows \+ -mthreads \+ -L/usr/i686-w64-mingw32/sys-root/mingw/lib \+ -static -B static -lintl.dll -B static -l glib-2.0.dll -B static -l xml2.dll \+ -B static -lgio-2.0.dll -B static -l soup-2.4.dll \+ -B static -l webkitgtk-1.0.dll -B static -lgtk-win32-2.0.dll -B static -lgdk-win32-2.0.dll -B static -latk-1.0.dll -B static -lgio-2.0.dll -B static -lpangowin32-1.0.dll -B static -lpangocairo-1.0.dll -B static -lgdk_pixbuf-2.0.dll -B static -lpango-1.0.dll -B static -lcairo.dll -B static -lgobject-2.0.dll -B static -lgmodule-2.0.dll -B static -lgthread-2.0.dll -B static -lglib-2.0.dll \+ -l freetype.dll \+ -static -o libbirdfont.dll""")+ + run("""i686-w64-mingw32-ar rcs ../build/libbirdfont.dll.a ../build/win32/libbirdfont/*.o""")++ run("""i686-w64-mingw32-gcc \+ ../build/win32/birdfont/Main.o \+ ../build/win32/birdfont/GtkWindow.o \+ ../build/icon.res \+ -Wl,-subsystem,windows \+ -mthreads \+ -L../build/ \+ -L/usr/i686-w64-mingw32/sys-root/mingw/lib \+ -static -B -static -l birdfont.dll \+ -static -B static -lintl.dll -B static -l glib-2.0.dll -B static -l xml2.dll \+ -B static -l gio-2.0.dll -B static -l soup-2.4.dll \+ -B static -l webkitgtk-1.0.dll -B static -l gtk-win32-2.0.dll -B static -l gdk-win32-2.0.dll -B static -l atk-1.0.dll -B static -l gio-2.0.dll -B static -l pangowin32-1.0.dll -B static -l pangocairo-1.0.dll -B static -l gdk_pixbuf-2.0.dll -B static -l pango-1.0.dll -B static -l cairo.dll -B static -l gobject-2.0.dll -B static -l gmodule-2.0.dll -B static -l gthread-2.0.dll -B static -l glib-2.0.dll \+ -l freetype.dll \+ -static -o birdfont.exe""")++ run("""i686-w64-mingw32-gcc \+ ../build/win32/birdfont/Main.o \+ ../build/win32/birdfont/GtkWindow.o \+ ../build/icon.res \+ -mthreads \+ -L../build/ \+ -L/usr/i686-w64-mingw32/sys-root/mingw/lib \+ -static -B -static -l birdfont.dll \+ -static -B static -lintl.dll -B static -l glib-2.0.dll -B static -l xml2.dll \+ -B static -l gio-2.0.dll -B static -l soup-2.4.dll \+ -B static -l webkitgtk-1.0.dll -B static -l gtk-win32-2.0.dll -B static -l gdk-win32-2.0.dll -B static -l atk-1.0.dll -B static -l gio-2.0.dll -B static -l pangowin32-1.0.dll -B static -l pangocairo-1.0.dll -B static -l gdk_pixbuf-2.0.dll -B static -l pango-1.0.dll -B static -l cairo.dll -B static -l gobject-2.0.dll -B static -l gmodule-2.0.dll -B static -l gthread-2.0.dll -B static -l glib-2.0.dll \+ -l freetype.dll \+ -static -o birdfont_terminal.exe""")++ run("""i686-w64-mingw32-gcc \+ ../build/win32/birdfont-export/BirdfontExport.o \+ ../build/icon.res \+ -Wl,-subsystem,windows \+ -mthreads \+ -L../build/ \+ -L/usr/local/lib -lfreetype -lz \+ -L/usr/i686-w64-mingw32/sys-root/mingw/lib \+ -static -B -static -l birdfont.dll \+ -static -B static -lintl.dll -B static -l glib-2.0.dll -B static -l xml2.dll \+ -B static -l gio-2.0.dll -B static -l soup-2.4.dll \+ -B static -l webkitgtk-1.0.dll -B static -l gtk-win32-2.0.dll -B static -l gdk-win32-2.0.dll -B static -l atk-1.0.dll -B static -l gio-2.0.dll -B static -l pangowin32-1.0.dll -B static -l pangocairo-1.0.dll -B static -l gdk_pixbuf-2.0.dll -B static -l pango-1.0.dll -B static -l cairo.dll -B static -l gobject-2.0.dll -B static -l gmodule-2.0.dll -B static -l gthread-2.0.dll -B static -l glib-2.0.dll \+ -l freetype.dll \+ -static -o birdfont-export.exe""")++ run("mv birdfont-export.exe ../build/supplement/")+ run("mv birdfont.exe ../build/supplement/")+ run("mv birdfont_terminal.exe ../build/supplement/")+ run("mv libbirdfont.dll ../build/supplement/")++ copy_runtime_dependencies ()+ generate_nsi()+ + run(os.getenv("HOME") + "/.wine/drive_c/Program/NSIS/makensis.exe ../build/supplement/birdfont_installer.nsi")+ +def generate_nsi():+ print ('generating build/supplement/birdfont_installer.nsi')++ run('mkdir -p ../build/supplement')++ f = open('../build/supplement/birdfont_installer.nsi', 'w+')+ f.write("""; windows installation script generated by by build script++Name "Birdfont"+""")++ f.write("OutFile \"..\\")+ f.write("birdfont-")+ f.write(dodo.VERSION)+ f.write(".exe\"")+ + f.write("""+InstallDir $PROGRAMFILES\Birdfont+InstallDirRegKey HKLM "Software\NSIS_Birdfont" "Install_Dir"++Icon "birdfont.ico"++; Request application privileges for Windows Vista+RequestExecutionLevel admin++;--------------------------------++Page components+Page directory+Page instfiles++UninstPage uninstConfirm+UninstPage instfiles++;--------------------------------++Section "Birdfont (required)"++ SectionIn RO+""");++ os.chdir('../build/supplement')+ write_files ('.', f)++ f.write("""++ SetOutPath $INSTDIR++ ; Write the installation path into the registry+ WriteRegStr HKLM SOFTWARE\NSIS_Birdfont "Install_Dir" "$INSTDIR"+ + ; Write the uninstall keys for Windows+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont" "DisplayName" "NSIS Birdfont"+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont" "UninstallString" '"$INSTDIR\uninstall.exe"'+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont" "NoModify" 1+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont" "NoRepair" 1+ WriteUninstaller "uninstall.exe"+ +SectionEnd++Section "Start Menu Shortcuts"++ CreateDirectory "$SMPROGRAMS\Birdfont"+ CreateShortCut "$SMPROGRAMS\Birdfont\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0+ CreateShortCut "$SMPROGRAMS\Birdfont\Birdfont.lnk" "$INSTDIR\\birdfont.exe" ""+ + CreateShortCut "$DESKTOP\Birdfont.lnk" "$INSTDIR\\birdfont.exe" ""+ +SectionEnd++;--------------------------------++; Uninstaller++Section "Uninstall"+ + ; Remove registry keys+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont"+ DeleteRegKey HKLM SOFTWARE\NSIS_Birdfont++""")++ remove_files ('.', f)++ f.write("""++ Delete $INSTDIR\uninstall.exe+ RMDir "$INSTDIR\Birdfont"+ + Delete "$SMPROGRAMS\Birdfont\*.*"+ RMDir "$SMPROGRAMS\Birdfont"++ Delete "$DESKTOP\Birdfont.lnk"++SectionEnd+""")+ os.chdir('../../win32')++def write_files (dir, f):+ filenames = os.walk(dir)++ f.write(" SetOutPath $INSTDIR\n")+ + for path in (os.path.join(dir, f) for f in os.listdir(dir)):+ if not os.path.isdir(path):+ f.write(" File \"")+ f.write(path.replace ('./', '').replace ('/', '\\'))+ f.write("\"\n")+ + for dirname, dirnames, filenames in os.walk(dir):+ for subdirname in dirnames:+ ndir = os.path.join(dirname, subdirname)+ wdir = ndir.replace ('./', '').replace ('/', '\\')+ + f.write("\n")+ f.write(" SetOutPath $INSTDIR\\")+ f.write(wdir)+ f.write("\n")+ + dirList = os.listdir(ndir)+ for fname in dirList:+ fp = os.path.join(ndir, fname) + if not os.path.isdir(fp):+ f.write(" File ")+ f.write(wdir)+ f.write("\\")+ f.write(fname)+ f.write("\n")++def remove_files (dir, f):+ for path in (os.path.join(dir, f) for f in os.listdir(dir)):+ if os.path.isdir(path):+ remove_files (path, f)+ else:+ f.write(" Delete \"$INSTDIR\\")+ f.write(path.replace ('./', '').replace ('/', '\\'))+ f.write("\"\n")+ + if dir == '.':+ f.write(" RMDir \"$INSTDIR\"\n") + else:+ f.write(" RMDir \"$INSTDIR\\")+ f.write(dir.replace ('./', '').replace ('/', '\\'))+ f.write("\"\n")+ +def copy_runtime_dependencies ():++ MINGW = "/usr/i686-w64-mingw32/sys-root/mingw"+ MINGW_BIN = MINGW + "/bin"++ run("cp ../README ../build/supplement/")+ run("cp ../COPYING ../build/supplement/")+ run("cp ../NEWS ../build/supplement/")+ + run("cp -ra ../layout/ ../build/supplement/")+ run("cp -ra ../icons/ ../build/supplement/")+ run("cp -ra ../build/locale ../build/supplement/")+ + run("cp ../win32/birdfont.ico ../build/supplement/")+ run("cp -r " + MINGW + "/etc ../build/supplement/")++ run("cp " + MINGW_BIN + "/gspawn-win32-helper.exe ../build/supplement/")+ run("cp " + MINGW_BIN + "/gspawn-win32-helper-console.exe ../build/supplement/")++ # DLL-hell+ for dll in WIN32_DLLS:+ run("cp " + MINGW_BIN + "/" + dll + " ../build/supplement/")+++configure ()+build () deleted file mode 100755@@ -1,26 +0,0 @@-#!/usr/bin/python-import subprocess-import os--def task_update_translations ():- subprocess.check_output ("xgettext --language=C# --keyword=_ --add-comments=/ --from-code=utf-8 --output=./po/birdfont.pot ./libbirdfont/*.vala ./birdfont/*.vala ./birdfont-export/*.vala", shell=True)-- for file in os.listdir('./po'):- if file == "birdfont.pot": continue- - loc = file.replace (".po", "")- d = "./po/" + loc + ".po"-- subprocess.check_output ("wget -O build/" + loc + ".po.zip http://pootle.locamotion.org/" + loc + "/birdfont/export/zip", shell=True)- subprocess.check_output ("unzip build/" + loc + ".po.zip", shell=True)- subprocess.check_output ("mv " + loc + ".po " + d, shell=True)- - subprocess.check_output ("msgmerge " + d + " ./po/birdfont.pot > " + loc + ".po.new", shell=True)- subprocess.check_output ("mv " + loc + ".po.new " + d, shell=True)- - return {- 'actions': ['echo "done updating translations"'],- }---task_update_translations ()deleted file mode 100644@@ -1,2 +0,0 @@-#!/usr/bin/python-VERSION = '0.14'deleted file mode 100644Binary files a/win32/birdfont.ico and /dev/null differdeleted file mode 100755@@ -1,376 +0,0 @@-#!/usr/bin/python--import os-import shutil-import subprocess-import sys--sys.path.append('../')-import dodo # import version number--WIN32_LIBS = [- 'glib-2.0',- 'libxml-2.0',- 'gio-2.0',- 'libsoup-2.4',- 'gtk+-2.0',- 'webkit-1.0'-]--WIN32_DLLS = [ - "libcairo-2.dll",- "libgdk-win32-2.0-0.dll",- "libgdk_pixbuf-2.0-0.dll",- "libgio-2.0-0.dll",- "libglib-2.0-0.dll",- "libgobject-2.0-0.dll",- "libgthread-2.0-0.dll",- "libgtk-win32-2.0-0.dll",- "libxml2-2.dll",- "libfontconfig-1.dll",- "libfreetype-6.dll",- "libpixman-1-0.dll",- "libpng15-15.dll",- "zlib1.dll",- "libpixman-1-0.dll",- "libpng15-15.dll",- "libintl-8.dll",- "libgmodule-2.0-0.dll",- "libffi-5.dll",- "libgobject-2.0-0.dll",- "libjasper-1.dll",- "libjpeg-8.dll",- "libtiff-5.dll",- "libgdk_pixbuf-2.0-0.dll",- "libpango-1.0-0.dll",- "libpangocairo-1.0-0.dll",- "libgdk-win32-2.0-0.dll",- "libgmodule-2.0-0.dll",- "libexpat-1.dll",- "libpangoft2-1.0-0.dll",- "libpangowin32-1.0-0.dll",- "libpangocairo-1.0-0.dll",- "libgdk-win32-2.0-0.dll",- "libpangoft2-1.0-0.dll",- "libpangowin32-1.0-0.dll",- "libpangocairo-1.0-0.dll",- "libatk-1.0-0.dll",- "libsoup-2.4-1.dll",- "libsqlite3-0.dll",- "libxslt-1.dll",- "libgcc_s_sjlj-1.dll",- "libstdc++-6.dll",- "libjavascriptcoregtk-1.0-0.dll",- "libenchant-1.dll",- "libgailutil-18.dll",- "libwebkitgtk-1.0-0.dll",- "pthreadGC2.dll"-]--def run(cmd):- process = subprocess.Popen (cmd, shell=True)- process.communicate()[0]- if not process.returncode == 0:- print("Error: " + cmd)- exit(1)- -def configure():- print("")- print("Crosscompile for windows")- - os.chdir('../')- run('./configure')- os.chdir('./win32')- - run('i686-w64-mingw32-gcc --version')- run('i686-w64-mingw32-pkg-config --version') - run('windres --version') - run('wine --version')- run('ls ' + os.getenv("HOME") + "/.wine/drive_c/Program/NSIS/makensis.exe")- - for pkg in WIN32_LIBS:- run('i686-w64-mingw32-pkg-config --cflags --libs '+ pkg)--def build():- run("mkdir -p ../build/supplement")- run("mkdir -p ../build/win32")- run("mkdir -p ../build/win32/libbirdfont")- run("mkdir -p ../build/win32/birdfont")- run("mkdir -p ../build/win32/birdfont-export")-- run("windres ../win32/icon.rc -O coff -o ../build/icon.res")-- # generate c code- run("cp ../libbirdfont/*.c ../build/win32/libbirdfont/")- run("valac -C --basedir ../build/win32/libbirdfont/ --library libbirdfont -H ../build/win32/libbirdfont/birdfont.h ../libbirdfont/*.vala --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0")-- run("valac -C ../birdfont/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")- run("mv ./*.c ../build/win32/birdfont/")-- run("valac -C ../birdfont-export/* --vapidir=./ --pkg libxml-2.0 --pkg gio-2.0 --pkg cairo --pkg libsoup-2.4 --pkg gdk-pixbuf-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 --pkg libbirdfont")- run("mv ./*.c ../build/win32/birdfont-export/")-- # compile c code- run("""i686-w64-mingw32-gcc \- -c ../build/win32/libbirdfont/birdfont.h \- ../build/win32/birdfont/Main.c \- ../build/win32/birdfont/GtkWindow.c \- ../build/win32/birdfont-export/BirdfontExport.c \- ../build/win32/libbirdfont/*.c ./ \- -D 'GETTEXT_PACKAGE="birdfont"' \- -I ../build/win32/libbirdfont/ \- -mthreads \- $(i686-w64-mingw32-pkg-config --cflags --libs glib-2.0) \- $(i686-w64-mingw32-pkg-config --cflags --libs libxml-2.0) \- $(i686-w64-mingw32-pkg-config --cflags --libs gio-2.0) \- $(i686-w64-mingw32-pkg-config --cflags --libs libsoup-2.4) \- $(i686-w64-mingw32-pkg-config --cflags --libs gtk+-2.0) \- $(i686-w64-mingw32-pkg-config --cflags --libs webkit-1.0)""");- - # move object files to their folders- run("""mv BirdfontExport.o ../build/win32/birdfont-export """)- run("""mv Main.o ../build/win32/birdfont """)- run("""mv GtkWindow.o ../build/win32/birdfont """)- run("""mv *.o ../build/win32/libbirdfont/ """)-- # link binaries- run("""i686-w64-mingw32-gcc \- -shared \- ../build/win32/libbirdfont/*.o \- ../build/icon.res \- -Wl,-subsystem,windows \- -mthreads \- -L/usr/i686-w64-mingw32/sys-root/mingw/lib \- -static -B static -lintl.dll -B static -l glib-2.0.dll -B static -l xml2.dll \- -B static -lgio-2.0.dll -B static -l soup-2.4.dll \- -B static -l webkitgtk-1.0.dll -B static -lgtk-win32-2.0.dll -B static -lgdk-win32-2.0.dll -B static -latk-1.0.dll -B static -lgio-2.0.dll -B static -lpangowin32-1.0.dll -B static -lpangocairo-1.0.dll -B static -lgdk_pixbuf-2.0.dll -B static -lpango-1.0.dll -B static -lcairo.dll -B static -lgobject-2.0.dll -B static -lgmodule-2.0.dll -B static -lgthread-2.0.dll -B static -lglib-2.0.dll \- -l freetype.dll \- -static -o libbirdfont.dll""")- - run("""i686-w64-mingw32-ar rcs ../build/libbirdfont.dll.a ../build/win32/libbirdfont/*.o""")-- run("""i686-w64-mingw32-gcc \- ../build/win32/birdfont/Main.o \- ../build/win32/birdfont/GtkWindow.o \- ../build/icon.res \- -Wl,-subsystem,windows \- -mthreads \- -L../build/ \- -L/usr/i686-w64-mingw32/sys-root/mingw/lib \- -static -B -static -l birdfont.dll \- -static -B static -lintl.dll -B static -l glib-2.0.dll -B static -l xml2.dll \- -B static -l gio-2.0.dll -B static -l soup-2.4.dll \- -B static -l webkitgtk-1.0.dll -B static -l gtk-win32-2.0.dll -B static -l gdk-win32-2.0.dll -B static -l atk-1.0.dll -B static -l gio-2.0.dll -B static -l pangowin32-1.0.dll -B static -l pangocairo-1.0.dll -B static -l gdk_pixbuf-2.0.dll -B static -l pango-1.0.dll -B static -l cairo.dll -B static -l gobject-2.0.dll -B static -l gmodule-2.0.dll -B static -l gthread-2.0.dll -B static -l glib-2.0.dll \- -l freetype.dll \- -static -o birdfont.exe""")-- run("""i686-w64-mingw32-gcc \- ../build/win32/birdfont/Main.o \- ../build/win32/birdfont/GtkWindow.o \- ../build/icon.res \- -mthreads \- -L../build/ \- -L/usr/i686-w64-mingw32/sys-root/mingw/lib \- -static -B -static -l birdfont.dll \- -static -B static -lintl.dll -B static -l glib-2.0.dll -B static -l xml2.dll \- -B static -l gio-2.0.dll -B static -l soup-2.4.dll \- -B static -l webkitgtk-1.0.dll -B static -l gtk-win32-2.0.dll -B static -l gdk-win32-2.0.dll -B static -l atk-1.0.dll -B static -l gio-2.0.dll -B static -l pangowin32-1.0.dll -B static -l pangocairo-1.0.dll -B static -l gdk_pixbuf-2.0.dll -B static -l pango-1.0.dll -B static -l cairo.dll -B static -l gobject-2.0.dll -B static -l gmodule-2.0.dll -B static -l gthread-2.0.dll -B static -l glib-2.0.dll \- -l freetype.dll \- -static -o birdfont_terminal.exe""")-- run("""i686-w64-mingw32-gcc \- ../build/win32/birdfont-export/BirdfontExport.o \- ../build/icon.res \- -Wl,-subsystem,windows \- -mthreads \- -L../build/ \- -L/usr/local/lib -lfreetype -lz \- -L/usr/i686-w64-mingw32/sys-root/mingw/lib \- -static -B -static -l birdfont.dll \- -static -B static -lintl.dll -B static -l glib-2.0.dll -B static -l xml2.dll \- -B static -l gio-2.0.dll -B static -l soup-2.4.dll \- -B static -l webkitgtk-1.0.dll -B static -l gtk-win32-2.0.dll -B static -l gdk-win32-2.0.dll -B static -l atk-1.0.dll -B static -l gio-2.0.dll -B static -l pangowin32-1.0.dll -B static -l pangocairo-1.0.dll -B static -l gdk_pixbuf-2.0.dll -B static -l pango-1.0.dll -B static -l cairo.dll -B static -l gobject-2.0.dll -B static -l gmodule-2.0.dll -B static -l gthread-2.0.dll -B static -l glib-2.0.dll \- -l freetype.dll \- -static -o birdfont-export.exe""")-- run("mv birdfont-export.exe ../build/supplement/")- run("mv birdfont.exe ../build/supplement/")- run("mv birdfont_terminal.exe ../build/supplement/")- run("mv libbirdfont.dll ../build/supplement/")-- copy_runtime_dependencies ()- generate_nsi()- - run(os.getenv("HOME") + "/.wine/drive_c/Program/NSIS/makensis.exe ../build/supplement/birdfont_installer.nsi")- -def generate_nsi():- print ('generating build/supplement/birdfont_installer.nsi')-- run('mkdir -p ../build/supplement')-- f = open('../build/supplement/birdfont_installer.nsi', 'w+')- f.write("""; windows installation script generated by by build script--Name "Birdfont"-""")-- f.write("OutFile \"..\\")- f.write("birdfont-")- f.write(dodo.VERSION)- f.write(".exe\"")- - f.write("""-InstallDir $PROGRAMFILES\Birdfont-InstallDirRegKey HKLM "Software\NSIS_Birdfont" "Install_Dir"--Icon "birdfont.ico"--; Request application privileges for Windows Vista-RequestExecutionLevel admin--;----------------------------------Page components-Page directory-Page instfiles--UninstPage uninstConfirm-UninstPage instfiles--;----------------------------------Section "Birdfont (required)"-- SectionIn RO-""");-- os.chdir('../build/supplement')- write_files ('.', f)-- f.write("""-- SetOutPath $INSTDIR-- ; Write the installation path into the registry- WriteRegStr HKLM SOFTWARE\NSIS_Birdfont "Install_Dir" "$INSTDIR"- - ; Write the uninstall keys for Windows- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont" "DisplayName" "NSIS Birdfont"- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont" "UninstallString" '"$INSTDIR\uninstall.exe"'- WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont" "NoModify" 1- WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont" "NoRepair" 1- WriteUninstaller "uninstall.exe"- -SectionEnd--Section "Start Menu Shortcuts"-- CreateDirectory "$SMPROGRAMS\Birdfont"- CreateShortCut "$SMPROGRAMS\Birdfont\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0- CreateShortCut "$SMPROGRAMS\Birdfont\Birdfont.lnk" "$INSTDIR\\birdfont.exe" ""- - CreateShortCut "$DESKTOP\Birdfont.lnk" "$INSTDIR\\birdfont.exe" ""- -SectionEnd--;----------------------------------; Uninstaller--Section "Uninstall"- - ; Remove registry keys- DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Birdfont"- DeleteRegKey HKLM SOFTWARE\NSIS_Birdfont--""")-- remove_files ('.', f)-- f.write("""-- Delete $INSTDIR\uninstall.exe- RMDir "$INSTDIR\Birdfont"- - Delete "$SMPROGRAMS\Birdfont\*.*"- RMDir "$SMPROGRAMS\Birdfont"-- Delete "$DESKTOP\Birdfont.lnk"--SectionEnd-""")- os.chdir('../../win32')--def write_files (dir, f):- filenames = os.walk(dir)-- f.write(" SetOutPath $INSTDIR\n")- - for path in (os.path.join(dir, f) for f in os.listdir(dir)):- if not os.path.isdir(path):- f.write(" File \"")- f.write(path.replace ('./', '').replace ('/', '\\'))- f.write("\"\n")- - for dirname, dirnames, filenames in os.walk(dir):- for subdirname in dirnames:- ndir = os.path.join(dirname, subdirname)- wdir = ndir.replace ('./', '').replace ('/', '\\')- - f.write("\n")- f.write(" SetOutPath $INSTDIR\\")- f.write(wdir)- f.write("\n")- - dirList = os.listdir(ndir)- for fname in dirList:- fp = os.path.join(ndir, fname) - if not os.path.isdir(fp):- f.write(" File ")- f.write(wdir)- f.write("\\")- f.write(fname)- f.write("\n")--def remove_files (dir, f):- for path in (os.path.join(dir, f) for f in os.listdir(dir)):- if os.path.isdir(path):- remove_files (path, f)- else:- f.write(" Delete \"$INSTDIR\\")- f.write(path.replace ('./', '').replace ('/', '\\'))- f.write("\"\n")- - if dir == '.':- f.write(" RMDir \"$INSTDIR\"\n") - else:- f.write(" RMDir \"$INSTDIR\\")- f.write(dir.replace ('./', '').replace ('/', '\\'))- f.write("\"\n")- -def copy_runtime_dependencies ():-- MINGW = "/usr/i686-w64-mingw32/sys-root/mingw"- MINGW_BIN = MINGW + "/bin"-- run("cp ../README ../build/supplement/")- run("cp ../COPYING ../build/supplement/")- run("cp ../NEWS ../build/supplement/")- - run("cp -ra ../layout/ ../build/supplement/")- run("cp -ra ../icons/ ../build/supplement/")- run("cp -ra ../build/locale ../build/supplement/")- - run("cp ../win32/birdfont.ico ../build/supplement/")- run("cp -r " + MINGW + "/etc ../build/supplement/")-- run("cp " + MINGW_BIN + "/gspawn-win32-helper.exe ../build/supplement/")- run("cp " + MINGW_BIN + "/gspawn-win32-helper-console.exe ../build/supplement/")-- # DLL-hell- for dll in WIN32_DLLS:- run("cp " + MINGW_BIN + "/" + dll + " ../build/supplement/")---configure ()-build () deleted file mode 100644@@ -1 +0,0 @@-id ICON "../win32/birdfont.ico"deleted file mode 100755@@ -1,23 +0,0 @@-#!/usr/bin/python-import version-import time;--VERSION = version.VERSION--def write_config (prefix):- print ("Writing Config.vala")-- vars = (('VERSION', VERSION),- ('BUILD_TIMESTAMP', time.asctime( time.localtime(time.time()))),- ('PREFIX', prefix),- )-- f = open('./libbirdfont/Config.vala', 'w+')- f.write("// Don't edit this file -- it is generated by the build script\n")- f.write("namespace BirdFont {\n")-- var_line = ' internal static const string %s = "%s";\n'- for name, value in vars:- f.write(var_line % (name, value))-- f.write("}")