diff --git a/SConstruct b/SConstruct index 7502a19..92a33bb 100644 --- a/SConstruct +++ b/SConstruct @@ -14,9 +14,11 @@ env = Environment(CPPPATH='#/include', LIBPATH=['/usr/lib','/usr/local/lib']) # Import GZip builder import gzipBuilder -env.Append(BUILDERS = {'GZip' : Builder(action=gzipBuilder.GZip)}) - -#import environment +# Import Symlink builder +import symlinkBuilder +env.Append(BUILDERS = {'GZip' : Builder(action=gzipBuilder.GZip), + 'Symlink': Builder(action=symlinkBuilder.Symlink)}) +# Import environment from importer import importEnvironment,importVariable importEnvironment(env,'HOME') importVariable(env,'CC') diff --git a/man/SConscript b/man/SConscript index b17edf5..c416bdc 100644 --- a/man/SConscript +++ b/man/SConscript @@ -36,14 +36,7 @@ for page in MAN7: # install symlinks for man pages if 'install' in COMMAND_LINE_TARGETS: for pair in SYMLINKS: - try: - unlink(MANDIR+'/man1/'+pair[1]+'.1.gz') - except OSError: - pass - try: - symlink(MANDIR+'/man1/'+pair[0]+'.1.gz', MANDIR+'/man1/'+pair[1]+'.1.gz') - except OSError: - pass + env.Symlink(MANDIR+'/man1/'+pair[1]+'.1.gz',MANDIR+'/man1/'+pair[0]+'.1.gz') env.Alias("install",MANDIR) diff --git a/site_scons/symlinkBuilder.py b/site_scons/symlinkBuilder.py new file mode 100644 index 0000000..61c21c2 --- /dev/null +++ b/site_scons/symlinkBuilder.py @@ -0,0 +1,32 @@ +# +# Symlink SCons builder +# +# Version 1.0 +# 02-Aug-2009 +# + +def Symlink(target, source, env=None): + """Create symlink target pointing to source. + + This builder creates symlinks named target pointing to source. + Target is removed if exists. + + Keyword arguments: + target -- list of symlink targets + source -- list of files to be compressed + env -- SCons environment (not used) + """ + import os + if not isinstance(target, list): + raise TypeError,"target must be list" + elif not isinstance(source, list): + raise TypeError,"source must be list" + if len(target) != len(source): + raise ValueError,"target and source list must have same size" + for i in range(0,len(target)): + try: + os.unlink(str(target[i])) + except OSError: + pass + os.symlink(str(source[i]),str(target[i])) + return None