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
|
#! /usr/bin/env python
"""
help -> scons -h
compile -> scons
clean -> scons -c
install -> scons install
uninstall -> scons -c install
configure -> scons configure prefix=/tmp/ita debug=full extraincludes=/usr/local/include:/tmp/include prefix=/usr/local
Run from a subdirectory -> scons -u
The variables are saved automatically after the first run (look at cache/kde.cache.py, ..)
"""
###################################################################
# LOAD THE ENVIRONMENT AND SET UP THE TOOLS
###################################################################
## Load the builders in config
env = Environment( tools=['default', 'generic', 'kde'], toolpath=['./', './admin'])
#env = Environment( tools=['default', 'generic', 'kde', 'othertool'], toolpath=['./', './admin'])
env.KDEuse("environ rpath")
#env.KDEuse("environ rpath lang_qt thread nohelp")
###################################################################
# SCRIPTS FOR BUILDING THE TARGETS
###################################################################
dirs="""
src
doc
"""
env.subdirs(dirs)
## Process the translations in the po/ directory
env.KDElang('po/', '%{APPNAMELC}')
###################################################################
# CONVENIENCE FUNCTIONS TO EMULATE 'make dist' and 'make distclean'
###################################################################
### To make a tarball of your masterpiece, use 'scons dist'
if 'dist' in COMMAND_LINE_TARGETS:
## The target scons dist requires the python module shutil which is in 2.3
env.EnsurePythonVersion(2, 3)
import os
APPNAME = 'bksys'
VERSION = os.popen("cat VERSION").read().rstrip()
FOLDER = APPNAME+'-'+VERSION
ARCHIVE = FOLDER+'.tar.bz2'
## If your app name and version number are defined in 'version.h', use this instead:
## (contributed by Dennis Schridde devurandom@gmx@net)
#import re
#INFO = dict( re.findall( '(?m)^#define\s+(\w+)\s+(.*)(?<=\S)', open(r"version.h","rb").read() ) )
#APPNAME = INFO['APPNAME']
#VERSION = INFO['VERSION']
import shutil
import glob
## check if the temporary directory already exists
if os.path.isdir(FOLDER):
shutil.rmtree(FOLDER)
if os.path.isfile(ARCHIVE):
os.remove(ARCHIVE)
## create a temporary directory
startdir = os.getcwd()
shutil.copytree(startdir, FOLDER)
## remove our object files first
os.popen("find "+FOLDER+" -name \"*cache*\" | xargs rm -rf")
os.popen("find "+FOLDER+" -name \"*.pyc\" | xargs rm -f")
#os.popen("pushd %s && scons -c " % FOLDER) # TODO
## CVS cleanup
os.popen("find "+FOLDER+" -name \"CVS\" | xargs rm -rf")
os.popen("find "+FOLDER+" -name \".cvsignore\" | xargs rm -rf")
## Subversion cleanup
os.popen("find %s -name .svn -type d | xargs rm -rf" % FOLDER)
## GNU Arch cleanup
os.popen("find "+FOLDER+" -name \"{arch}\" | xargs rm -rf")
os.popen("find "+FOLDER+" -name \".arch-i*\" | xargs rm -rf")
## Create the tarball (coloured output)
print "\033[92m"+"Writing archive "+ARCHIVE+"\033[0m"
os.popen("tar cjf "+ARCHIVE+" "+FOLDER)
## Remove the temporary directory
if os.path.isdir(FOLDER):
shutil.rmtree(FOLDER)
env.Default(None)
env.Exit(0)
### Emulate "make distclean"
if 'distclean' in COMMAND_LINE_TARGETS:
## Remove the cache directory
import os, shutil
if os.path.isdir(env['CACHEDIR']):
shutil.rmtree(env['CACHEDIR'])
os.popen("find . -name \"*.pyc\" | xargs rm -rf")
env.Default(None)
env.Exit(0)
|