summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olejnik <molejnik@fluendo.com>2019-07-09 16:56:54 +0200
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2019-08-23 18:47:38 +0000
commitcf02aaeaeb162f592babb4adcb83ad0a3b0a496b (patch)
tree1413cc2207fd86fe48a7685ba9d4cecaac75bccc
parentd18e07a8ae0712edb2390ad0b72916722fd3bc1e (diff)
Strip files in tarball packages if wanted
-rw-r--r--cerbero/commands/package.py5
-rw-r--r--cerbero/packages/disttarball.py39
-rw-r--r--cerbero/packages/linux.py4
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