return 'x.x.x'
+def relativePath(path, base):
+ '''return relative path from base, which is usually top source dir'''
+ # full pathname of path
+ path1 = os.path.normpath(os.path.realpath(path)).split(os.sep)
+ path2 = os.path.normpath(os.path.realpath(base)).split(os.sep)
+ if path1[:len(path2)] != path2:
+ print "Path %s is not under top source directory" % path
+ if len(path2) == len(path1):
+ return ''
+ path3 = os.path.join(*path1[len(path2):]);
+ # replace all \ by / such that we get the same comments on Windows and *nix
+ path3 = path3.replace('\\', '/')
+ return path3
+
+
+def isSubDir(path, base):
+ '''Whether or not path is a subdirectory of base'''
+ path1 = os.path.normpath(os.path.realpath(path)).split(os.sep)
+ path2 = os.path.normpath(os.path.realpath(base)).split(os.sep)
+ return len(path2) <= len(path1) and path1[:len(path2)] == path2
+
def writeToFile(filename, lines, append = False):
" utility function: write or append lines to filename "
doc_toc.build_toc(str(target[0]), [file.abspath for file in source])
-def relativePath(env, path):
- '''return relative path from top source dir'''
- # full pathname of path
- path1 = os.path.normpath(env.File(path).abspath).split(os.sep)
- path2 = os.path.normpath(env.Dir('$TOP_SRCDIR').abspath).split(os.sep)
- if path1[:len(path2)] != path2:
- print "Path %s is not under top source directory" % path
- return os.path.join(*path1[len(path2):])
-
-
-def env_language_l10n(target, source, env):
- '''Generate pot file from lib/language'''
- input = open(env.File(source[0]).abspath)
+def env_cat(target, source, env):
+ '''Cat source > target. Avoid pipe to increase portability'''
output = open(env.File(target[0]).abspath, 'w')
- for lineno, line in enumerate(input.readlines()):
- if line[0] == '#':
- continue
- items = line.split('"')
- # empty lines?
- if len(items) != 5:
- print 'Warning: this line looks strange:'
- print line
- # From:
- # afrikaans afrikaans "Afrikaans" false iso8859-15 af_ZA ""
- # To:
- # #: lib/languages:2
- # msgid "Afrikaans"
- # msgstr ""
- print >> output, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % (relativePath(env, source[0]), lineno+1, items[1])
- input.close()
+ for src in source:
+ input = open(env.File(src).abspath)
+ output.write(input.read())
+ input.close()
output.close()
+def env_potfiles(target, source, env):
+ '''Build po/POTFILES.in'''
+ # command
+ # grep -l '_(\".*\")' `find src \( -name '*.h' -o -name '*.cpp' -o -name '*.cpp.in' \) -print` | grep -v -e "src/support/Package.cpp$$" | sort | uniq
+ # is used under *nix but windows users have to do these all in python
+ target_file = open(str(target[0]), "w")
+ potfiles = []
+ trans = re.compile('_\(".*"\)', re.M)
+ for file in source:
+ rel_file = relativePath(str(file), env.subst('$TOP_SRCDIR'))
+ if rel_file not in potfiles and trans.search(open(str(file)).read()):
+ potfiles.append(rel_file)
+ potfiles.sort()
+ print >> target_file, '\n'.join(potfiles)
+ target_file.close()
+
+
def createResFromIcon(env, icon_file, rc_file):
''' create a rc file with icon, and return res file (windows only) '''
if os.name == 'nt':