1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
#! /usr/bin/env python
# encoding: utf-8
import os
import sys
import Configure
import Utils
# the following two variables are used by the target "waf dist"
APPNAME="kupfer"
VERSION = "undefined"
def _get_git_version():
""" try grab the current version number from git"""
version = None
if os.path.exists(".git"):
try:
version = os.popen("git describe").read().strip()
except Exception, e:
print e
return version
def _read_git_version():
"""Read version from git repo, or from GIT_VERSION"""
version = _get_git_version()
if not version and os.path.exists("GIT_VERSION"):
f = open("GIT_VERSION", "r")
version = f.read().strip()
f.close()
if version:
global VERSION
VERSION = version
_read_git_version()
VERSION_MAJOR_MINOR = ".".join(VERSION.split(".")[0:2])
# these variables are mandatory ('/' are converted automatically)
srcdir = '.'
blddir = 'build'
def dist():
"""Make the dist tarball and print its SHA-1 """
def write_git_version():
""" Write the revision to a file called GIT_VERSION,
to grab the current version number from git when
generating the dist tarball."""
version = _get_git_version()
if not version:
return False
version_file = open("GIT_VERSION", "w")
version_file.write(version + "\n")
version_file.close()
return True
import Scripting
write_git_version()
Scripting.g_gz = "gz"
Scripting.dist(APPNAME, VERSION)
def set_options(opt):
# options for disabling pyc or pyo compilation
opt.tool_options("python")
opt.tool_options("misc")
opt.tool_options("gnu_dirs")
def configure(conf):
conf.check_tool("python")
conf.check_python_version((2,5,0))
conf.check_tool("misc gnu_dirs")
# BUG: intltool requires gcc
conf.check_tool("gcc intltool")
python_modules = """
gio
gtk
xdg
dbus
wnck
"""
for module in python_modules.split():
conf.check_python_module(module)
Utils.pprint("NORMAL", "Checking optional dependencies:")
opt_programs = ["dbus-send"]
opt_pymodules = "gnome.ui".split()
for prog in opt_programs:
prog_path = conf.find_program(prog)
try:
conf.check_python_module("keybinder")
except Configure.ConfigurationError, e:
Utils.pprint("RED", "Python module keybinder is recommended")
Utils.pprint("RED", "Please see README")
for mod in opt_pymodules:
try:
conf.check_python_module(mod)
except Configure.ConfigurationError, e:
pass
#Utils.pprint("YELLOW", "python module %s is recommended" % prog)
conf.env["KUPFER"] = Utils.subst_vars("${BINDIR}/kupfer", conf.env)
conf.env["VERSION"] = VERSION
# Check sys.path
Utils.pprint("NORMAL", "Installing python modules into: %(PYTHONDIR)s" % conf.env)
pipe = os.popen("""%(PYTHON)s -c "import sys; print '%(PYTHONDIR)s' in sys.path" """ % conf.env)
if "False" in pipe.read():
Utils.pprint("YELLOW", "Please add %(PYTHONDIR)s to your sys.path!" % conf.env)
def new_module(bld, name, sources=None):
if not sources: sources = name
obj = bld.new_task_gen("py")
obj.find_sources_in_dirs(sources)
obj.install_path = "${PYTHONDIR}/%s" % name
return obj
def build(bld):
# kupfer module version info file
version_subst_file = "kupfer/version_subst.py"
obj = bld.new_task_gen("subst",
source=version_subst_file + ".in",
target=version_subst_file,
install_path="${PYTHONDIR}/kupfer",
dict = bld.env,
)
# modules
new_module(bld, "kupfer")
new_module(bld, "kupfer/plugin")
# binary
# Subst in the python version
# We have to put this in an intermediate build directory,
# inside data/ not to clash with the 'kupfer' module(!)
binary_subst_file = "kupfer-activate.sh"
bin = bld.new_task_gen("subst",
source = binary_subst_file,
target = "data/kupfer",
install_path = "${BINDIR}",
chmod = 0755,
dict = {"PYTHON": bld.env["PYTHON"]}
)
bld.add_subdirs("po data")
def intlupdate(util):
"""Extract new strings for localization"""
os.chdir("po")
for line in open("LINGUAS"):
""" Run xgettext for all listed languages
to extract translatable strings and merge with
the old file """
if line.startswith("#"):
continue
lang = line.strip()
lang_file = "%s.po" % lang
if not os.path.exists(lang_file):
print "Creating %s" % lang_file
os.popen("xgettext -D .. -f POTFILES.in --output=%s -F" % lang_file)
print "Processing", lang
os.popen("intltool-update %s" % lang)
def shutdown():
pass
|