mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2025-04-20 16:03:34 +02:00
Release 0.5.0
This commit is contained in:
commit
2279ce36c4
1
devtools/__init__.py
Normal file
1
devtools/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
# module
|
53
devtools/tarball.py
Normal file
53
devtools/tarball.py
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import os.path
|
||||||
|
import gzip
|
||||||
|
import tarfile
|
||||||
|
|
||||||
|
TARGZ_DEFAULT_COMPRESSION_LEVEL = 9
|
||||||
|
|
||||||
|
def make_tarball(tarball_path, sources, base_dir, prefix_dir=''):
|
||||||
|
"""Parameters:
|
||||||
|
tarball_path: output path of the .tar.gz file
|
||||||
|
sources: list of sources to include in the tarball, relative to the current directory
|
||||||
|
base_dir: if a source file is in a sub-directory of base_dir, then base_dir is stripped
|
||||||
|
from path in the tarball.
|
||||||
|
prefix_dir: all files stored in the tarball be sub-directory of prefix_dir. Set to ''
|
||||||
|
to make them child of root.
|
||||||
|
"""
|
||||||
|
base_dir = os.path.normpath( os.path.abspath( base_dir ) )
|
||||||
|
def archive_name( path ):
|
||||||
|
"""Makes path relative to base_dir."""
|
||||||
|
path = os.path.normpath( os.path.abspath( path ) )
|
||||||
|
common_path = os.path.commonprefix( (base_dir, path) )
|
||||||
|
archive_name = path[len(common_path):]
|
||||||
|
if os.path.isabs( archive_name ):
|
||||||
|
archive_name = archive_name[1:]
|
||||||
|
return os.path.join( prefix_dir, archive_name )
|
||||||
|
def visit(tar, dirname, names):
|
||||||
|
for name in names:
|
||||||
|
path = os.path.join(dirname, name)
|
||||||
|
if os.path.isfile(path):
|
||||||
|
path_in_tar = archive_name(path)
|
||||||
|
tar.add(path, path_in_tar )
|
||||||
|
compression = TARGZ_DEFAULT_COMPRESSION_LEVEL
|
||||||
|
tar = tarfile.TarFile.gzopen( tarball_path, 'w', compresslevel=compression )
|
||||||
|
try:
|
||||||
|
for source in sources:
|
||||||
|
source_path = source
|
||||||
|
if os.path.isdir( source ):
|
||||||
|
os.path.walk(source_path, visit, tar)
|
||||||
|
else:
|
||||||
|
path_in_tar = archive_name(source_path)
|
||||||
|
tar.add(source_path, path_in_tar ) # filename, arcname
|
||||||
|
finally:
|
||||||
|
tar.close()
|
||||||
|
|
||||||
|
def decompress( tarball_path, base_dir ):
|
||||||
|
"""Decompress the gzipped tarball into directory base_dir.
|
||||||
|
"""
|
||||||
|
# !!! This class method is not documented in the online doc
|
||||||
|
# nor is bz2open!
|
||||||
|
tar = tarfile.TarFile.gzopen(tarball_path, mode='r')
|
||||||
|
try:
|
||||||
|
tar.extractall( base_dir )
|
||||||
|
finally:
|
||||||
|
tar.close()
|
@ -167,8 +167,11 @@ Must be started in the project top directory.
|
|||||||
source_tarball_path = 'dist/%s.tar.gz' % source_dir
|
source_tarball_path = 'dist/%s.tar.gz' % source_dir
|
||||||
print 'Generating source tarball to', source_tarball_path
|
print 'Generating source tarball to', source_tarball_path
|
||||||
tarball.make_tarball( source_tarball_path, [export_dir], export_dir, prefix_dir=source_dir )
|
tarball.make_tarball( source_tarball_path, [export_dir], export_dir, prefix_dir=source_dir )
|
||||||
|
|
||||||
|
distcheck_dir = 'dist/distcheck'
|
||||||
|
print 'Decompressing source tarball to', distcheck_dir
|
||||||
|
tarball.decompress( source_tarball_path, distcheck_dir )
|
||||||
#@todo:
|
#@todo:
|
||||||
# decompress source tarball
|
|
||||||
# ?compile & run & check
|
# ?compile & run & check
|
||||||
# ?upload documentation
|
# ?upload documentation
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user