#!/usr/bin/env python3 # SPDX-License-Identifier: GPL-3.0-or-later # # SPDX-FileCopyrightText: 2023 PeppemrintOS Team (peppermintosteam@proton.me) import os import subprocess import sys import shutil os.environ["PATH"] = "/sbin:/usr/sbin:/usr/local/sbin:" + os.environ["PATH"] # Set the working folder variable uchinanchu = os.getcwd() # This cleanup might be better served in the BldHelper*.sh script. # Create the build folder, move into it removing stale mountpoints and files there. if os.path.exists("fusato") and not os.path.isdir("fusato"): os.remove("fusato") elif not os.path.exists("fusato"): os.mkdir("fusato") os.chdir("fusato") subprocess.run(["umount", "$(mount | grep '{}' | tac | cut -f3 -d' ')".format(os.path.join(os.getcwd(), "chroot"))], stderr=subprocess.DEVNULL) for item in os.listdir(): if item == "cache": continue shutil.rmtree(item, ignore_errors=True) # Define as configurações do Live Build lb_command = [ "lb", "config", "noauto", "--binary-images", "iso-hybrid", "--architectures", "amd64", "--linux-flavours", "amd64", "--distribution", "bookworm", "--archive-areas", "main contrib non-free non-free-firmware", "--apt-recommends", "true", "--security", "true", "--updates", "true", "--backports", "true", "--debian-installer", "live", "--debian-installer-distribution", "bookworm", "--debian-installer-gui", "true", "--iso-preparer", "PeppermintOS-https://peppermintos.com/", "--iso-publisher", "Peppermint OS Team", "--iso-volume", "PepOS-server", "--image-name", "PepOS-Server", "--debian-installer-preseedfile", "preseed.cfg", "--checksums", "sha512", "--zsync", "false", "--win32-loader", "false" ] subprocess.run(lb_command + sys.argv[1:], check=True) # Setup the chroot structure os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.installer"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "config", "package-lists"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.chroot"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "hooks", "normal"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "archives"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.binary"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.chroot", "boot", "grub"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.chroot", "etc", "default"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.installer", "usr", "share"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.chroot", "etc"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.chroot", "etc", "firewalld", "zones"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.installer", "preseed", "grub"), exist_ok=True) os.makedirs(os.path.join(uchinanchu, "fusato", "config", "includes.installer", "usr", "lib", "finish-install.d"), exist_ok=True) # Install software with open(os.path.join(uchinanchu, "fusato", "config", "package-lists", "package.list.chroot"), "a") as file: file.write("# Install system packages.\n") file.write("zonefstoolspep\n") file.write("dmzonedtoolspep\n") file.write("libzbdpep1\n") file.write("sudo\n") file.write("task-ssh-server\n") file.write("task-web-server\n") file.write("sshguard\n") file.write("htop\n") file.write("whois\n") file.write("rkhunter\n") file.write("debsecan\n") file.write("net-tools\n") file.write("cockpit\n") file.write("cockpit-podman\n") file.write("cockpit-machines\n") file.write("cockpit-pcp\n") file.write("podman\n") file.write("nfs-common\n") file.write("firewalld\n") file.write("samba\n") file.write("cups\n") file.write("gvfs-backends\n") file.write("git\n") file.write("wget\n") # Copy single files and folder to the chroot shutil.copy2(os.path.join(uchinanchu, "pepgrub", "grub"), os.path.join(uchinanchu, "fusato", "config", "includes.installer", "preseed", "grub")) for item in os.listdir(os.path.join(uchinanchu, "pephooks", "normal")): shutil.copy2(os.path.join(uchinanchu, "pephooks", "normal", item), os.path.join(uchinanchu, "fusato", "config", "hooks", "normal")) for item in os.listdir(os.path.join(uchinanchu, "peprepo")): shutil.copy2(os.path.join(uchinanchu, "peprepo", item), os.path.join(uchinanchu, "fusato", "config", "archives")) for item in os.listdir(os.path.join(uchinanchu, "pepfirewall")): shutil.copy2(os.path.join(uchinanchu, "pepfirewall", item), os.path.join(uchinanchu, "fusato", "config", "includes.chroot", "etc", "firewalld", "zones")) shutil.copy2(os.path.join(uchinanchu, "pepinstaller", "preseed", "preseed.cfg"), os.path.join(uchinanchu, "fusato", "config", "includes.installer")) for item in os.listdir(os.path.join(uchinanchu, "pepscripts")): shutil.copy2(os.path.join(uchinanchu, "pepscripts", item), os.path.join(uchinanchu, "fusato", "config", "includes.installer", "usr", "lib", "finish-install.d")) # Copy recursive files and sub-directories, containing symlinks. shutil.copytree(os.path.join(uchinanchu, "peploadersplash", "boot"), os.path.join(uchinanchu, "fusato", "config", "includes.binary", "boot")) shutil.copytree(os.path.join(uchinanchu, "peploadersplash", "isolinux"), os.path.join(uchinanchu, "fusato", "config", "includes.binary", "isolinux")) shutil.copytree(os.path.join(uchinanchu, "pepgrub", "themes"), os.path.join(uchinanchu, "fusato", "config", "includes.chroot", "boot", "grub", "themes")) shutil.copytree(os.path.join(uchinanchu, "pepinstaller", "graphics"), os.path.join(uchinanchu, "fusato", "config", "includes.installer", "usr", "share", "graphics")) shutil.copytree(os.path.join(uchinanchu, "pepinstaller", "themes"), os.path.join(uchinanchu, "fusato", "config", "includes.installer", "usr", "share", "themes")) subprocess.run(["lb", "build"], check=True)