forked from projecthamster/hamster
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wscript
121 lines (89 loc) · 3.92 KB
/
wscript
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
# -*- python -*-
VERSION = '2.0'
APPNAME = 'hamster-time-tracker'
top = '.'
out = 'build'
import os
from waflib import Logs, Utils
def configure(conf):
conf.load('gnu_dirs') # for DATADIR
conf.load('python')
conf.check_python_version(minver=(3,4,0))
conf.load('intltool')
conf.env.ENABLE_NLS = 1
conf.env.HAVE_BIND_TEXTDOMAIN_CODESET = 1
conf.env.VERSION = VERSION
conf.env.GETTEXT_PACKAGE = "hamster-time-tracker"
conf.env.PACKAGE = "hamster-time-tracker"
# gconf_dir is defined in options
conf.env.schemas_destination = '{}/schemas'.format(conf.options.gconf_dir)
conf.recurse("help")
def options(opt):
opt.add_option('--gconf-dir', action='store', default='/etc/gconf', dest='gconf_dir',
help='gconf base directory [default: /etc/gconf]')
# the waf default value is /usr/local, which causes issues (e.g. #309)
# opt.parser.set_defaults(prefix='/usr') did not update the help string,
# hence need to replace the whole option
opt.parser.remove_option('--prefix')
default_prefix = '/usr'
opt.add_option('--prefix', dest='prefix', default=default_prefix,
help='installation prefix [default: {}]'.format(default_prefix))
def build(bld):
bld.install_files('${LIBDIR}/hamster-time-tracker',
"""src/hamster-service
src/hamster-windows-service
""",
chmod=Utils.O755)
bld.install_as('${BINDIR}/hamster', "src/hamster-cli", chmod=Utils.O755)
bld.install_files('${PREFIX}/share/bash-completion/completion',
'src/hamster.bash')
bld(features='py',
source=bld.path.ant_glob('src/**/*.py'),
install_from='src')
# set correct flags in defs.py
bld(features="subst",
source="src/hamster/defs.py.in",
target="src/hamster/defs.py",
install_path="${PYTHONDIR}/hamster"
)
bld(features="subst",
source= "org.gnome.hamster.service.in",
target= "org.gnome.hamster.service",
install_path="${DATADIR}/dbus-1/services",
)
bld(features="subst",
source= "org.gnome.hamster.Windows.service.in",
target= "org.gnome.hamster.Windows.service",
install_path="${DATADIR}/dbus-1/services",
)
bld.recurse("po data help")
def manage_gconf_schemas(ctx, action):
"""Install or uninstall hamster gconf schemas.
Requires the stored hamster-time-tracker.schemas
(usually in /etc/gconf/schemas/) to be present.
Hence install should be a post-fun,
and uninstall a pre-fun.
"""
assert action in ("install", "uninstall")
if ctx.cmd == action:
schemas_file = "{}/hamster-time-tracker.schemas".format(ctx.env.schemas_destination)
cmd = 'GCONF_CONFIG_SOURCE=$(gconftool-2 --get-default-source) gconftool-2 --makefile-{}-rule {} 1> /dev/null'.format(action, schemas_file)
err = ctx.exec_command(cmd)
if err:
Logs.warn('The following command failed:\n{}'.format(cmd))
else:
Logs.pprint('YELLOW', 'Successfully {}ed gconf schemas'.format(action))
def update_icon_cache(ctx):
"""Update the gtk icon cache."""
if ctx.cmd == "install":
# adapted from the previous waf gnome.py
icon_dir = os.path.join(ctx.env.DATADIR, 'icons/hicolor')
cmd = 'gtk-update-icon-cache -q -f -t {}'.format(icon_dir)
err = ctx.exec_command(cmd)
if err:
Logs.warn('The following command failed:\n{}'.format(cmd))
else:
Logs.pprint('YELLOW', 'Successfully updated GTK icon cache')
bld.add_post_fun(lambda bld: manage_gconf_schemas(bld, "install"))
bld.add_post_fun(update_icon_cache)
bld.add_pre_fun(lambda bld: manage_gconf_schemas(bld, "uninstall"))