dangerzone/install/linux/build-deb.py
Alexis Métaireau 396c3b56c8
packaging: replace stdeb by pybuild
As a result, a new `debian` folder is now living in the repository.
Debian packaging is now done manually rather than using tools that do
the heavy-lifting for us.

The `build-deb.py` script has also been updated to use `dpkg-buildpackage`
2024-09-11 16:20:27 +02:00

75 lines
2 KiB
Python
Executable file

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import argparse
import os
import shutil
import subprocess
import sys
from pathlib import Path
# .absolute() is needed for python<=3.8, for which
# __file__ returns an absolute path.
root = Path(__file__).parent.parent.parent.absolute()
with open(root / "share" / "version.txt") as f:
version = f.read().strip()
def run(cmd):
subprocess.run(cmd, cwd=root, check=True)
def main():
parser = argparse.ArgumentParser(
prog=sys.argv[0],
description="Dev script for building Dangerzone debs",
)
# FIXME: The name of the distro is important, as it can help users who are upgrading
# from a distro version to another. If we *do* need to provide a name at some point,
# here's a suggestion on how we should tackle naming:
#
# https://github.com/freedomofpress/dangerzone/pull/322#issuecomment-1428665162
parser.add_argument(
"--distro",
required=False,
help="The name of the Debian-based distro",
)
args = parser.parse_args()
dist_path = root / "dist"
deb_dist_path = root / "deb_dist"
print("* Deleting old dist and deb_dist")
if os.path.exists(dist_path):
shutil.rmtree(dist_path)
if os.path.exists(deb_dist_path):
shutil.rmtree(deb_dist_path)
print("* Building DEB package")
if args.distro is None:
deb_ver = "1"
else:
deb_ver = args.distro
run(
[
"dpkg-buildpackage",
]
)
os.makedirs(deb_dist_path, exist_ok=True)
print("")
print("* To install run:")
# dpkg-buildpackage produces a .deb file in the parent folder
# that needs to be copied to the `deb_dist` folder manually
for item in root.parent.glob(f"dangerzone_{version}_*.deb"):
arch = item.stem.split("_")[-1]
destination = root / "deb_dist" / f"dangerzone_{version}-{deb_ver}_{arch}.deb"
shutil.move(item, destination)
print(f"sudo dpkg -i {destination}")
if __name__ == "__main__":
main()