ec2a830876
To make unified relocatable package easily, we may want to merge tarballs to single tarball like this: zcat .tar.gz | gzip -c > scylla-unified.tar.xz But it's not possible with current relocatable package format, since there are multiple files conflicts, install.sh, SCYLLA--FILE, dist/, README.md, etc.. To support this, we need to archive everything in the directory when building relocatable package. See: scylladb/scylla#6315
65 lines
2.1 KiB
Python
Executable File
65 lines
2.1 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
#
|
|
# Copyright (C) 2018 ScyllaDB
|
|
#
|
|
|
|
#
|
|
# This file is part of Scylla.
|
|
#
|
|
# Scylla is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Scylla is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Scylla. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
|
|
import argparse
|
|
import io
|
|
import os
|
|
import tarfile
|
|
import pathlib
|
|
|
|
RELOC_PREFIX='scylla-jmx'
|
|
def reloc_add(self, name, arcname=None, recursive=True, *, filter=None):
|
|
if arcname:
|
|
return self.add(name, arcname="{}/{}".format(RELOC_PREFIX, arcname))
|
|
else:
|
|
return self.add(name, arcname="{}/{}".format(RELOC_PREFIX, name))
|
|
|
|
tarfile.TarFile.reloc_add = reloc_add
|
|
|
|
ap = argparse.ArgumentParser(description='Create a relocatable scylla package.')
|
|
ap.add_argument('dest',
|
|
help='Destination file (tar format)')
|
|
|
|
args = ap.parse_args()
|
|
|
|
output = args.dest
|
|
|
|
ar = tarfile.open(output, mode='w|gz')
|
|
# relocatable package format version = 2
|
|
with open('build/.relocatable_package_version', 'w') as f:
|
|
f.write('2\n')
|
|
ar.add('build/.relocatable_package_version', arcname='.relocatable_package_version')
|
|
|
|
pathlib.Path('build/SCYLLA-RELOCATABLE-FILE').touch()
|
|
ar.reloc_add('build/SCYLLA-RELOCATABLE-FILE', arcname='SCYLLA-RELOCATABLE-FILE')
|
|
ar.reloc_add('build/SCYLLA-RELEASE-FILE', arcname='SCYLLA-RELEASE-FILE')
|
|
ar.reloc_add('build/SCYLLA-VERSION-FILE', arcname='SCYLLA-VERSION-FILE')
|
|
ar.reloc_add('build/SCYLLA-PRODUCT-FILE', arcname='SCYLLA-PRODUCT-FILE')
|
|
ar.reloc_add('dist')
|
|
ar.reloc_add('install.sh')
|
|
ar.reloc_add('target/scylla-jmx-1.0.jar', arcname='scylla-jmx-1.0.jar')
|
|
ar.reloc_add('scripts/scylla-jmx', arcname='scylla-jmx')
|
|
ar.reloc_add('README.md')
|
|
ar.reloc_add('NOTICE')
|
|
ar.reloc_add('build/debian/debian', arcname='debian')
|