diff options
author | Marek Olejnik <molejnik@fluendo.com> | 2019-07-09 16:56:54 +0200 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2019-08-23 18:47:38 +0000 |
commit | cf02aaeaeb162f592babb4adcb83ad0a3b0a496b (patch) | |
tree | 1413cc2207fd86fe48a7685ba9d4cecaac75bccc | |
parent | d18e07a8ae0712edb2390ad0b72916722fd3bc1e (diff) |
Strip files in tarball packages if wanted
-rw-r--r-- | cerbero/commands/package.py | 5 | ||||
-rw-r--r-- | cerbero/packages/disttarball.py | 39 | ||||
-rw-r--r-- | cerbero/packages/linux.py | 4 |
3 files changed, 41 insertions, 7 deletions
diff --git a/cerbero/commands/package.py b/cerbero/commands/package.py index d8c32299..40f14483 100644 --- a/cerbero/commands/package.py +++ b/cerbero/commands/package.py @@ -99,8 +99,9 @@ class Package(Command): m.action(_("Creating package for %s") % p.name) output_dir = os.path.abspath(args.output_dir) if args.tarball: - paths = pkg.pack(output_dir, args.no_devel, - args.force, args.keep_temp, split=not args.no_split) + paths = pkg.pack(output_dir, args.no_devel, args.force, + args.keep_temp, split=not args.no_split, + strip_binaries=p.strip) else: paths = pkg.pack(output_dir, args.no_devel, args.force, args.keep_temp) diff --git a/cerbero/packages/disttarball.py b/cerbero/packages/disttarball.py index c428c45d..d980c363 100644 --- a/cerbero/packages/disttarball.py +++ b/cerbero/packages/disttarball.py @@ -19,12 +19,14 @@ import os import shutil import tarfile +import tempfile import cerbero.utils.messages as m from cerbero.utils import shell, _ from cerbero.enums import Platform from cerbero.errors import FatalError, UsageError, EmptyPackageError from cerbero.packages import PackagerBase, PackageType +from cerbero.tools import strip class DistTarball(PackagerBase): @@ -42,7 +44,7 @@ class DistTarball(PackagerBase): raise UsageError('Invalid compression type {!r}'.format(self.compress)) def pack(self, output_dir, devel=True, force=False, keep_temp=False, - split=True, package_prefix=''): + split=True, package_prefix='', strip_binaries=False): try: dist_files = self.files_list(PackageType.RUNTIME, force) except EmptyPackageError: @@ -66,8 +68,12 @@ class DistTarball(PackagerBase): filenames = [] if dist_files: - runtime = self._create_tarball(output_dir, PackageType.RUNTIME, - dist_files, force, package_prefix) + if not strip_binaries: + runtime = self._create_tarball(output_dir, PackageType.RUNTIME, + dist_files, force, package_prefix) + else: + runtime = self._create_tarball_stripped(output_dir, PackageType.RUNTIME, + dist_files, force, package_prefix) filenames.append(runtime) if split and devel and len(devel_files) != 0: @@ -90,6 +96,33 @@ class DistTarball(PackagerBase): return "%s%s-%s-%s-%s%s.%s" % (self.package_prefix, self.package.name, platform, self.config.target_arch, self.package.version, package_type, ext) + def _create_tarball_stripped(self, output_dir, package_type, files, force, + package_prefix): + tmpdir = tempfile.mkdtemp(dir=self.config.home_dir) + + if hasattr(self.package, 'strip_excludes'): + s = strip.Strip(self.config, self.package.strip_excludes) + else: + s = strip.Strip(self.config) + + for f in files: + orig_file = os.path.join(self.prefix, f) + tmp_file = os.path.join(tmpdir, f) + tmp_file_dir = os.path.dirname(tmp_file) + if not os.path.exists(tmp_file_dir): + os.makedirs(tmp_file_dir) + shutil.copy(orig_file, tmp_file, follow_symlinks=False) + s.strip_file(tmp_file) + + prefix_restore = self.prefix + self.prefix = tmpdir + tarball = self._create_tarball(output_dir, package_type, + files, force, package_prefix) + self.prefix = prefix_restore + shutil.rmtree(tmpdir) + + return tarball + def _create_tarball(self, output_dir, package_type, files, force, package_prefix): filename = os.path.join(output_dir, self._get_name(package_type)) diff --git a/cerbero/packages/linux.py b/cerbero/packages/linux.py index 9dd550a0..acd3357f 100644 --- a/cerbero/packages/linux.py +++ b/cerbero/packages/linux.py @@ -60,8 +60,8 @@ class LinuxPackager(PackagerBase): # create a tarball with all the package's files tarball_packager = DistTarball(self.config, self.package, self.store) - tarball = tarball_packager.pack(tmpdir, devel, True, - split=False, package_prefix=self.full_package_name)[0] + tarball = tarball_packager.pack(tmpdir, devel, True, split=False, + package_prefix=self.full_package_name, strip_binaries=False)[0] tarname = self.setup_source(tarball, tmpdir, packagedir, srcdir) else: # metapackages only contains Requires dependencies with |