Skip to content

Commit

Permalink
Create an RPM for Qubes
Browse files Browse the repository at this point in the history
Allow creating an RPM package that is to be installed specifically on
Qubes. This package has the following extra properties from our regular
RPM packages:

1. Make `python3-magic`, `libreoffice` and `tesseract` requirements
   for installing Dangerzone, since the conversion takes place in a
   disposable qube that needs these packages.
2. Ignore the container.tar.gz file, if it exists.
3. Add our RPC calls under `/etc/qubes-rpc`
  • Loading branch information
deeplow authored and apyrgio committed Jun 21, 2023
1 parent 5191556 commit a1d40fd
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 12 deletions.
28 changes: 27 additions & 1 deletion install/linux/build-rpm.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import argparse
import inspect
import os
import shutil
Expand All @@ -17,6 +18,12 @@


def main():
parser = argparse.ArgumentParser()
parser.add_argument(
"--qubes", action="store_true", help="Build RPM package for a Qubes OS system"
)
args = parser.parse_args()

build_path = os.path.join(root, "build")
dist_path = os.path.join(root, "dist")

Expand All @@ -26,9 +33,28 @@ def main():
if os.path.exists(dist_path):
shutil.rmtree(dist_path)

if args.qubes:
print("> Building for a Qubes system")
os.environ["QUBES_TARGET"] = "1"

# Server and Client package requirements are bundled together since
# we assume the server and client qubes are installed on the same
# template
platform_dependant_packages = ",".join(
[
# Server package requirements
"python3-magic",
"libreoffice",
# Client package requirements
"tesseract", # FIXME add other languages
]
)
else:
platform_dependant_packages = "podman"

print("* Building RPM package")
subprocess.run(
"python3 setup.py bdist_rpm --requires='podman,python3-pyside2,python3-appdirs,python3-click,python3-pyxdg,python3-colorama'",
f"python3 setup.py bdist_rpm --requires='{platform_dependant_packages},python3-pyside2,python3-appdirs,python3-click,python3-pyxdg,python3-colorama'",
shell=True,
cwd=root,
check=True,
Expand Down
36 changes: 25 additions & 11 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,39 @@
with open("share/version.txt") as f:
version = f.read().strip()

qubes_target = os.environ.get("QUBES_TARGET") == "1"
if qubes_target:
print("Target: Qubes OS")


def file_list(path):
files = []
for filename in os.listdir(path):
if os.path.isfile(os.path.join(path, filename)):
if qubes_target and filename.endswith("container.tar.gz"):
continue # ignore container when building a Qubes package
files.append(os.path.join(path, filename))
return files


def data_files_list():
data_files = [
(
"share/applications",
["install/linux/press.freedom.dangerzone.desktop"],
),
(
"share/icons/hicolor/64x64/apps",
["install/linux/press.freedom.dangerzone.png"],
),
("share/dangerzone", file_list("share")),
]
if qubes_target:
# Qubes RPC policy
data_files.append(("/etc/qubes-rpc/", ["qubes/dz.Convert"]))
return data_files


setuptools.setup(
name="dangerzone",
version=version,
Expand All @@ -35,17 +59,7 @@ def file_list(path):
"dangerzone.gui",
"dangerzone.isolation_provider",
],
data_files=[
(
"share/applications",
["install/linux/press.freedom.dangerzone.desktop"],
),
(
"share/icons/hicolor/64x64/apps",
["install/linux/press.freedom.dangerzone.png"],
),
("share/dangerzone", file_list("share")),
],
data_files=data_files_list(),
classifiers=[
"Programming Language :: Python",
"Intended Audience :: End Users/Desktop",
Expand Down

0 comments on commit a1d40fd

Please sign in to comment.