diff --git a/CHANGELOG b/CHANGELOG index 9cfadc6..a380e91 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,10 @@ Version 1.0 +2005-05-25: + + * solved problems install-problems: use at least scons 0.96.90 + * minor tweaks to buildsystem + 2005-05-24: * updated documentation diff --git a/SConstruct b/SConstruct index 8dca801..24edcd3 100644 --- a/SConstruct +++ b/SConstruct @@ -7,6 +7,7 @@ import sys import os +from scons_alock import * alock_name = 'alock' alock_version = '1.0' @@ -30,7 +31,7 @@ alock_doc_files = [ 'alock.1' ] Default(alock_target) -SConsignFile() +SConsignFile('SConsign') alock_options = Options(alock_optfile) alock_options.AddOptions( @@ -55,7 +56,8 @@ alock_options.AddOptions( alock_env = Environment(options = alock_options, TARFLAGS = '-c -z', - TARSUFFIX = '.tgz') + TARSUFFIX = '.tgz' + ) alock_options.Update(alock_env) Help(alock_options.GenerateHelpText(alock_env)) @@ -67,7 +69,7 @@ alock_instdir_bin = os.path.join(alock_instdir,'bin') alock_instdir_data = os.path.join(alock_instdir,'share') alock_instdir_meta = os.path.join(alock_instdir_data, alock_name + '-' + alock_version) alock_instdir_meta_contrib = os.path.join(alock_instdir_meta, 'contrib') -alock_instdir_man = os.path.join(alock_instdir_data, os.path.join('man', 'man1')) +alock_instdir_man = os.path.join(alock_instdir, os.path.join('man', 'man1')) ########################################################### # @@ -164,8 +166,6 @@ if alock_env['xrender']: conf.Finish() - - ############################################################################ # # @@ -187,21 +187,14 @@ alock_options.Save('scons.opts', alock_env) # building alock_program = SConscript( 'src/SConscript', exports = ['alock_env']) - - -def createManPage(target, source, env): - os.system('asciidoc -d manpage -b docbook -o alock.xml ' + str(source[0])) - os.system('xmlto man alock.xml') - os.remove('alock.xml') - return None - -def createHtml(target, source, env): - os.system('asciidoc -d manpage -b xhtml -o ' + str(target[0]) + ' ' + - str(source[0])) - alock_env.Command('alock.1', 'alock.txt', createManPage) alock_env.Command('alock.html', 'alock.txt', createHtml) +alock_env.AddPostAction(alock_target, Chmod(alock_target, 0755)) +alock_env.AddPostAction('alock.txt', Chmod('alock.txt', 0644)) +alock_env.AddPostAction('alock.1', Chmod('alock.1', 0644)) +alock_env.AddPostAction('alock.html', Chmod('alock.html', 0644)) + ############################################################################ # # installing diff --git a/scons_alock.py b/scons_alock.py new file mode 100644 index 0000000..e860764 --- /dev/null +++ b/scons_alock.py @@ -0,0 +1,61 @@ +import os +import shutil + +def createManPage(target, source, env): + """Creates a manpage via asciidoc and xmlto.""" + os.system('asciidoc -d manpage -b docbook -o alock.xml ' + str(source[0])) + os.system('xmlto man alock.xml') + os.remove('alock.xml') + return None + +def createHtml(target, source, env): + """Creates a html-site via asciidoc.""" + os.system('asciidoc -d manpage -b xhtml -o ' + str(target[0]) + ' ' + + str(source[0])) + +def prefixCombiner(prefix, itemlist, glue=''): + """Returns a list of items where each element is prepend by given + prefix.""" + result = [] + for item in itemlist: + result.append(prefix + glue + item) + return result + +# http://scons.tigris.org/servlets/ReadMsg?listName=users&msgNo=2739 +# http://scons.tigris.org/servlets/ReadMsg?list=users&msgNo=2783 +def alock_installFunc(dest, source, env): + """Install a source file into a destination by copying it (and its + permission/mode bits).""" + + owner = env.get('INSTALL_OWNER', None) + if owner: + try: + uid = pwd.getpwnam(owner)[2] + except TypeError: + uid = owner + else: + uid = -1 + + group = env.get('INSTALL_GROUP', None) + if group: + try: + gid = grp.getgrnam(group)[2] + except TypeError: + gid = group + else: + gid = -1 + + mode = env.get('INSTALL_MODE', None) + if not mode: + st = os.stat(source) + mode = (stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE) + if isinstance(mode, str): + mode = int(mode, 8) + + shutil.copy2(source, dest) + + if owner or group: + os.chown(dest, uid, gid) + + os.chmod(dest, mode) + return 0 diff --git a/src/SConscript b/src/SConscript index 5abd62f..95807c0 100644 --- a/src/SConscript +++ b/src/SConscript @@ -33,7 +33,6 @@ if build['xrender']: alock_sources += auth_sources + bg_sources + cursor_sources alock = build.Program('alock', alock_sources) -build.AddPostAction(alock, Chmod(alock, 0755)) if build['amd5']: md5 = alock_env.Copy()