mit neuen venv und exe-Files
This commit is contained in:
122
venv3_12/Lib/site-packages/cx_Freeze/command/bdist_deb.py
Normal file
122
venv3_12/Lib/site-packages/cx_Freeze/command/bdist_deb.py
Normal file
@@ -0,0 +1,122 @@
|
||||
"""Implements the 'bdist_deb' command (create DEB binary distributions).
|
||||
|
||||
This is a simple wrapper around 'alien' that converts a rpm to deb.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
from typing import ClassVar
|
||||
|
||||
from setuptools import Command
|
||||
|
||||
from cx_Freeze.command.bdist_rpm import bdist_rpm
|
||||
from cx_Freeze.exception import ExecError, PlatformError
|
||||
|
||||
__all__ = ["bdist_deb"]
|
||||
|
||||
|
||||
class bdist_deb(Command):
|
||||
"""Create an DEB distribution."""
|
||||
|
||||
description = "create an DEB distribution"
|
||||
|
||||
user_options: ClassVar[list[tuple[str, str | None, str]]] = [
|
||||
(
|
||||
"bdist-base=",
|
||||
None,
|
||||
"base directory for creating built distributions",
|
||||
),
|
||||
(
|
||||
"build-dir=",
|
||||
"b",
|
||||
"directory of built executables and dependent files",
|
||||
),
|
||||
("dist-dir=", "d", "directory to put final built distributions in"),
|
||||
]
|
||||
|
||||
def initialize_options(self) -> None:
|
||||
self.bdist_base = None
|
||||
self.build_dir = None
|
||||
self.dist_dir = None
|
||||
|
||||
def finalize_options(self) -> None:
|
||||
if os.name != "posix":
|
||||
msg = (
|
||||
"don't know how to create DEB "
|
||||
f"distributions on platform {os.name}"
|
||||
)
|
||||
raise PlatformError(msg)
|
||||
if not shutil.which("alien"):
|
||||
msg = "failed to find 'alien' for this platform."
|
||||
raise PlatformError(msg)
|
||||
if os.getuid() != 0 and not shutil.which("fakeroot"):
|
||||
msg = "failed to find 'fakeroot' for this platform."
|
||||
raise PlatformError(msg)
|
||||
|
||||
self.set_undefined_options("bdist", ("bdist_base", "bdist_base"))
|
||||
self.set_undefined_options(
|
||||
"bdist",
|
||||
("bdist_base", "bdist_base"),
|
||||
("dist_dir", "dist_dir"),
|
||||
)
|
||||
|
||||
def run(self) -> None:
|
||||
# make a binary RPM to convert
|
||||
cmd_rpm = bdist_rpm(
|
||||
self.distribution,
|
||||
bdist_base=self.bdist_base,
|
||||
dist_dir=self.dist_dir,
|
||||
)
|
||||
cmd_rpm.ensure_finalized()
|
||||
if not self.dry_run:
|
||||
cmd_rpm.run()
|
||||
rpm_filename = None
|
||||
for command, _, filename in self.distribution.dist_files:
|
||||
if command == "bdist_rpm":
|
||||
rpm_filename = os.path.basename(filename)
|
||||
break
|
||||
if rpm_filename is None:
|
||||
msg = "could not build rpm"
|
||||
raise ExecError(msg)
|
||||
else:
|
||||
rpm_filename = "filename.rpm"
|
||||
|
||||
# convert rpm to deb (by default in dist directory)
|
||||
logging.info("building DEB")
|
||||
cmd = ["alien", "--to-deb", rpm_filename]
|
||||
if os.getuid() != 0:
|
||||
cmd.insert(0, "fakeroot")
|
||||
if self.dry_run:
|
||||
self.spawn(cmd)
|
||||
else:
|
||||
logging.info(subprocess.list2cmdline(cmd))
|
||||
process = subprocess.run(
|
||||
cmd,
|
||||
text=True,
|
||||
capture_output=True,
|
||||
check=False,
|
||||
cwd=self.dist_dir,
|
||||
)
|
||||
if process.returncode != 0:
|
||||
msg = process.stderr.splitlines()[0]
|
||||
if msg.startswith(f"Unpacking of '{rpm_filename}' failed at"):
|
||||
info = [
|
||||
"\n\t\x08Please check if you have `cpio 2.13` on "
|
||||
"Ubuntu 22.04.",
|
||||
"\t\x08You can try to install a previous version:",
|
||||
"\t\x08$ sudo apt-get install cpio=2.13+dfsg-7",
|
||||
]
|
||||
msg += "\n".join(info)
|
||||
raise ExecError(msg)
|
||||
output = process.stdout
|
||||
logging.info(output)
|
||||
filename = output.splitlines()[0].split()[0]
|
||||
filename = os.path.join(self.dist_dir, filename)
|
||||
if not os.path.exists(filename):
|
||||
msg = "could not build deb"
|
||||
raise ExecError(msg)
|
||||
self.distribution.dist_files.append(("bdist_deb", "any", filename))
|
||||
Reference in New Issue
Block a user