Changeset 232 for SConstruct


Ignore:
Timestamp:
04/28/11 12:45:10 (13 years ago)
Author:
tim
Message:

added a convenience openHive function in pyregfi
standardized static function names
improvements to scons release script and library versioning

File:
1 edited

Legend:

Unmodified
Added
Removed
  • SConstruct

    r226 r232  
     1import sys
     2import os
     3
    14cflags = '-std=gnu99 -pedantic -Wall -D_FILE_OFFSET_BITS=64 -DREGFI_WIN32'
    25
    3 libiconv_path='win32/libiconv/'
    4 libpthreads_path='win32/libpthreads/'
     6libiconv_path='.export/win32/libiconv/'
     7libpthreads_path='.export/win32/libpthreads/'
    58libpthread_name='pthreadGC2'
    6 libtalloc_path='win32/libtalloc/'
     9libtalloc_path='.export/win32/libtalloc/'
    710
    8 source_targets=('reglookup-src-trunk.tar.gz',)
    9 win32_targets=('reglookup-win32-trunk.zip',)
    10 doc_targets=('reglookup-doc-trunk.tar.gz',)
    11 all_targets = source_targets+win32_targets+doc_targets 
     11source_targets=('src-trunk',)
     12win32_targets=('win32-trunk',)
     13doc_targets=('doc-trunk',)
     14all_targets = source_targets+win32_targets+doc_targets
    1215
    13 def target2version(target):
     16
     17
     18def parse_target(target):
    1419    chunks = target.split('-')
    15     if len(chunks) != 3:
     20    if len(chunks) != 2:
    1621        return None
    17     return chunks[2].split('.')[0]
     22    return chunks
    1823
    1924def version2input(version):
     
    2429
    2530
    26 source_cmds='''
    27 rm -rf .release;
    28 svn export svn+ssh://sentinelchicken.org/home/projects/subversion/reglookup/$SOURCE .release/%s;
    29 cd .release/%s && scons doc
    30 cd .release && tar cf %s.tar %s && gzip -9 %s.tar;
    31 mv .release/%s.tar.gz . && rm -rf .release
     31export_cmds='''
     32rm -rf .export
     33svn export --depth files svn+ssh://sentinelchicken.org/home/projects/subversion/reglookup .export
     34svn export svn+ssh://sentinelchicken.org/home/projects/subversion/reglookup/doc .export/doc
     35svn export svn+ssh://sentinelchicken.org/home/projects/subversion/reglookup/win32 .export/win32
     36svn export svn+ssh://sentinelchicken.org/home/projects/subversion/reglookup/%s .export/%s
    3237'''
    3338
     39version_cmds='''
     40echo 'REGFI_VERSION="%s"' > .export/%s/regfi_version.py
     41'''
     42
     43cleanup_cmds='''
     44rm -rf .export
     45'''
     46
     47source_cmds='''
     48cd %s && scons doc
     49mv %s %s && tar cf %s.tar %s && gzip -9 %s.tar;
     50'''+cleanup_cmds
     51
    3452win32_cmds='''
    35 rm -rf .release && mkdir -p .release/%s/python/pyregfi
     53mkdir -p .release/%s/python/pyregfi
    3654cp %s/src/*.exe .release/%s
    3755
     
    3957cp %s/python/pyregfi/*.py .release/%s/python/pyregfi
    4058
    41 cp win32/libiconv/bin/*.dll win32/libpthreads/bin/*.dll win32/libtalloc/bin/*.dll trunk/lib/*.dll .release/%s
     59cp .export/win32/libiconv/bin/*.dll .export/win32/libpthreads/bin/*.dll .export/win32/libtalloc/bin/*.dll trunk/lib/*.dll .release/%s
    4260cd .release && zip -r %s.zip %s
    4361mv .release/%s.zip . && rm -rf .release
    44 '''
     62'''+cleanup_cmds
    4563
    4664doc_cmds='''
    47 rm -rf .release;
    48 svn export svn+ssh://sentinelchicken.org/home/projects/subversion/reglookup/ .release;
    49 cd .release && doxygen Doxyfile.regfi
    50 cd .release && doxygen Doxyfile.pyregfi
    51 mv .release/doc .release/%s
    52 cd .release && tar cf %s.tar %s && gzip -9 %s.tar;
    53 mv .release/%s.tar.gz . && rm -rf .release
    54 '''
     65cd .export && doxygen Doxyfile.regfi
     66cd .export && doxygen Doxyfile.pyregfi
     67mv .export/doc .export/%s
     68cd .export && tar cf %s.tar %s && gzip -9 %s.tar
     69mv .export/%s.tar.gz .
     70'''+cleanup_cmds
    5571
    5672def generate_cmds(source, target, env, for_signature):
    5773    ret_val = ''
     74    input_prefix = str(source[0])+'/'
     75
    5876    for t in target:
    59         t = str(t)
    60         t_base = t.split('.tar.gz')[0].split('.zip')[0]
    61         if t in source_targets:
    62             ret_val += source_cmds % (t_base,t_base,t_base,
    63                                       t_base,t_base,t_base)
    64         elif t in win32_targets:
    65             version = target2version(t)
    66             input_prefix = version2input(version)
     77        ttype,version = parse_target(str(t))
     78        t_base = 'reglookup-%s-%s' % (ttype, version)
    6779
     80        if ttype == 'src':
     81            ret_val += source_cmds % (input_prefix, input_prefix, t_base, t_base, t_base, t_base)
     82        elif ttype == 'win32':
    6883            env['platform']='cygwin'
    6984            env['CC']='i586-mingw32msvc-cc'
     
    122137
    123138            ret_val += win32_cmds % (t_base,input_prefix,t_base,input_prefix,
    124                                      t_base,input_prefix,
    125                                      t_base,t_base,t_base,t_base,t_base)
     139                                     t_base,input_prefix,t_base,
     140                                     t_base,t_base,t_base,t_base)
    126141
    127         elif t in doc_targets:
     142        elif ttype == 'doc':
    128143            ret_val += doc_cmds % (t_base,t_base,t_base,t_base,t_base)
    129144       
     
    131146
    132147
    133 
    134148release_builder = Builder(generator = generate_cmds,
    135                           suffix = '.tar.gz',
     149                          suffix = '',
    136150                          src_suffix = '',
    137                           prefix='reglookup-')
    138 
     151                          prefix='')
    139152
    140153env = Environment()
     154env['ENV']['SSH_AGENT_PID'] = os.environ['SSH_AGENT_PID']
     155env['ENV']['SSH_AUTH_SOCK'] = os.environ['SSH_AUTH_SOCK']
    141156env['BUILDERS']['Release'] = release_builder
    142157
     
    145160
    146161for target in COMMAND_LINE_TARGETS:
    147     AlwaysBuild(target)
    148162    if target not in all_targets:
    149163        print('ERROR: cannot build "%s".  Acceptable targets: %s'
    150164              % (target, repr(all_targets)))
    151         break
    152     env.Release(target, Dir(version2input(target2version(target))))
     165        sys.exit(1)
     166    AlwaysBuild(target)
     167    ttype,version = parse_target(target)
     168
     169    i = version2input(version)
     170    env.Execute(export_cmds % (i, i))
     171    if version != 'trunk':
     172        env.Execute(version_cmds % (version, i))
     173    env.Release(target, Dir('.export/'+i))
    153174
    154175Default(None)
Note: See TracChangeset for help on using the changeset viewer.