Philipp Hörist pushed to branch master at gajim / gajim
Commits: ce5c3f48 by lovetox at 2022-05-22T21:58:34+02:00 ci: Add debian build script
- - - - - 86d8ea51 by lovetox at 2022-05-22T21:58:34+02:00 ci: Update debian files
- Make changelog generic - Change package name
- - - - -
3 changed files:
- + .ci/debian_build.py - debian/changelog - debian/control
Changes:
===================================== .ci/debian_build.py ===================================== @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import argparse +import dataclasses +import logging +import shutil +import subprocess +from datetime import datetime +from datetime import timezone +from pathlib import Path + +LOG_FORMAT = '%(asctime)s %(levelname)s %(message)s' +logging.basicConfig(format=LOG_FORMAT, level=logging.DEBUG) +log = logging.getLogger() + +ROOT_DIR = Path(__file__).resolve().parent.parent +BUILD_DIR = ROOT_DIR / 'debian_build' + +DATE = datetime.now().strftime('%Y%m%d') +DATE_TIME = datetime.now(tz=timezone.utc).strftime('%a, %d %b %Y %T %z') + + +@dataclasses.dataclass +class ReleaseContext: + app: str + pkg_name: str + release_name: str + release_dir: Path + tarball: Path + + @classmethod + def from_tarball(cls, path: str) -> ReleaseContext: + tarball = Path(path) + app = tarball.name.split('-', maxsplit=1)[0] + pkg_name = f'{app}-nightly' + release_name = f'{pkg_name}_{DATE}' + release_dir = BUILD_DIR / release_name + return cls(app=app, + pkg_name=pkg_name, + release_name=release_name, + release_dir=release_dir, + tarball=tarball) + + +def clean_build_dir() -> None: + log.info('Cleanup build directory') + if BUILD_DIR.exists(): + shutil.rmtree(BUILD_DIR) + BUILD_DIR.mkdir() + + +def prepare_package_dir(context: ReleaseContext) -> None: + log.info('Extract tarball') + tarball = Path(shutil.copy(context.tarball, BUILD_DIR)) + tarball = tarball.rename(BUILD_DIR / f'{context.release_name}.orig.tar.gz') + shutil.unpack_archive(tarball, BUILD_DIR) + + log.info('Rename dir to: %s', context.release_name) + folder = list(BUILD_DIR.glob(f'{context.app}-?.?.?'))[0] + folder = folder.rename(context.release_dir) + + log.info('Copy debian folder into release directory') + shutil.copytree(ROOT_DIR / 'debian', context.release_dir / 'debian') + + +def prepare_changelog(context: ReleaseContext) -> None: + log.info('Prepare Changelog') + changelog = context.release_dir / 'debian' / 'changelog' + content = changelog.read_text() + content = content.replace('{DATE}', DATE) + content = content.replace('{DATE_TIME}', DATE_TIME) + changelog.write_text(content) + + +def build(context: ReleaseContext) -> None: + log.info('Start package build') + subprocess.run( + [ + 'dpkg-buildpackage', + '-rfakeroot', + '--no-sign' + ], + cwd=context.release_dir, + check=True) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Build debian package') + parser.add_argument('tarball', help='Path to tarball e.g. app.tar.gz') + args = parser.parse_args() + + context = ReleaseContext.from_tarball(args.tarball) + + clean_build_dir() + prepare_package_dir(context) + prepare_changelog(context) + build(context)
===================================== debian/changelog ===================================== @@ -1,6 +1,5 @@ -gajim-svn (20060820) unstable; urgency=low +gajim-nightly ({DATE}) unstable; urgency=low
- * daily snapshot - - -- Yann Le Boulanger asterix@lagaule.org Sun, 20 Aug 2006 01:30:01 +0200 + * https://dev.gajim.org/gajim/gajim/-/commits/master
+ -- Gajim CI ci@gajim.org {DATE_TIME}
===================================== debian/control ===================================== @@ -1,4 +1,4 @@ -Source: gajim-default-nightly +Source: gajim-nightly Section: net Priority: optional Maintainer: Yann Leboulanger asterix@lagaule.org @@ -12,7 +12,7 @@ Homepage: https://gajim.org Vcs-Git: https://dev.gajim.org/gajim/gajim.git Vcs-Browser: https://dev.gajim.org/gajim/gajim/tree/master
-Package: gajim-default-nightly +Package: gajim-nightly Architecture: all Depends: python3 (>= 3.9),
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/c88a131bc02ea7d1fe04d0960c8c28cb...