pkgname = "kde-plasma" pkgver = "6.5.2" kf6_ver = "6.20.0" source = f"https://rocketleaguechatp.duckdns.org/pappalaugh.jpg" builddir = f"/tmp/fempkg/build/{pkgname}/{pkgname}-{pkgver}" fembuilddir = f"/tmp/fempkg/build/{pkgname}" outputdir = "/home/gabry/lfs-repo/binpkg" manifestdir = "/home/gabry/lfs-repo/manifests" destdir = f"{fembuilddir}/DESTDIR" deps = [ # REQUIRED "boost", "ffmpeg", "gtk3", "kf6", "kirigami-addons", "libdisplay-info", "libpwquality", "libqalculate", "libnl", "libxcvt", "libxkbcommon", "mesa", "wayland", "opencv", "phonon", "pipewire", "pulseaudio-qt", "qca", "qcoro", "sassc", "taglib", "xdotool", "xorg-evdev", "phonon-backend-vlc", # Reccomended (practically required) "gsettings-desktop-schemas", "libcanberra", "libinput", "libpcap", "libwacom", "xorg-wacom", "Linux-PAM", "lm-sensors", "oxygen-icons", "pciutils", "power-profiles-daemon", "python", # Reccomended (runtime) "accountsservice", "breeze-icons", "xdg-desktop-portal", "xwayland", "noto-fonts", "system-config-printer", #"kio-extras", smartmontools # optional "appstream", "glu", "plymouth" # wont add more since no have :laugh: ] build = [ # make fembuiasczxcx zxczxczxc f"mkdir -p {fembuilddir}", f"mkdir -p {destdir}/opt/kf6-{kf6_ver} && ln -sfn kf6-{kf6_ver} {destdir}/opt/kf6", f"mkdir -p {destdir}/opt/kf6/{{etc,share}}", f"""mkdir -p {destdir}$KF6_PREFIX/etc/dbus-1 && mkdir -p {destdir}$KF6_PREFIX/share/dbus-1 && mkdir -p {destdir}$KF6_PREFIX/share/polkit-1""", f"mkdir -p {destdir}/etc/dbus-1 {destdir}/usr/share/dbus-1 {destdir}/usr/share/polkit-1", f"cd {fembuilddir} && wget https://rocketleaguechatp.duckdns.org/plasma-{pkgver}.md5 && " f"wget -r -nH -nd -A '*.xz' -np https://rocketleaguechatp.duckdns.org/plasma/ || true", f"""cd {fembuilddir} && bash -e <<'EOF' while read -r line; do # Get the file name, ignoring comments and blank lines if $(echo $line | grep -E -q '^ *$|^#' ); then continue; fi file=$(echo $line | cut -d" " -f2) pkg=$( echo $file|sed 's|^.*/||') # Remove directory name=$( echo $pkg |sed 's|-6.*$||') # Isolate package name packagedir=$(echo $pkg |sed 's|\\.tar.*||') # Source directory tar -xvf $file pushd $packagedir mkdir build cd build cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \\ -D CMAKE_INSTALL_LIBEXECDIR=libexec \\ -D CMAKE_BUILD_TYPE=Release \\ -D BUILD_QT5=OFF \\ -D BUILD_TESTING=OFF \\ -D ENABLE_DOCS=OFF \\ -W no-dev .. && make -j$(nproc) make DESTDIR={destdir} install # ---- license copying (best-effort) ---- licensedir={destdir}/usr/share/licenses/$name mkdir -p $licensedir find .. -type f \\( \\ -iname COPYING -o \\ -iname COPYRIGHT -o \\ -iname NOTICE -o \\ -iname LICENSE -o \\ -iname LICENCE \\ \\) -exec cp -pv {{}} $licensedir \\; || true find .. -type d -iname LICENSES | while read -r licdir; do cp -pvra $licdir/* $licensedir/ || true done || true popd rm -rf $packagedir /sbin/ldconfig || true done < plasma-{pkgver}.md5 EOF""", # DM & portals etc f"""# Setup xsessions (X11 sessions) install -dvm 755 {destdir}/usr/share/xsessions cd {destdir}/usr/share/xsessions [ -e plasma.desktop ] || ln -sfv $KF6_PREFIX/share/xsessions/plasmax11.desktop # Setup wayland-sessions install -dvm 755 {destdir}/usr/share/wayland-sessions cd {destdir}/usr/share/wayland-sessions [ -e plasmawayland.desktop ] || ln -sfv $KF6_PREFIX/share/wayland-sessions/plasma.desktop # Setup xdg-desktop-portal install -dvm 755 {destdir}/usr/share/xdg-desktop-portal cd {destdir}/usr/share/xdg-desktop-portal [ -e kde-portals.conf ] || ln -sfv $KF6_PREFIX/share/xdg-desktop-portal/kde-portals.conf # Setup kde portal install -dvm 755 {destdir}/usr/share/xdg-desktop-portal/portals cd {destdir}/usr/share/xdg-desktop-portal/portals [ -e kde.portal ] || ln -sfv $KF6_PREFIX/share/xdg-desktop-portal/portals/kde.portal""", # remove useless systemd bloat f"rm -rf {destdir}$KF6_PREFIX/lib/systemd", # Linux-PAM setup f"mkdir -p {destdir}/etc/pam.d", f"wget https://rocketleaguechatp.duckdns.org/kde -O {destdir}/etc/pam.d/kde", f"wget https://rocketleaguechatp.duckdns.org/kde-np -O {destdir}/etc/pam.d/kde-np", f"wget https://rocketleaguechatp.duckdns.org/kscreensaver -O {destdir}/etc/pam.d/kscreensaver", # Move payloads safely (no globbing, no dotfile loss) f"""if [ -d {destdir}/opt/kf6/etc/dbus-1 ]; then cp -aT {destdir}/opt/kf6/etc/dbus-1 {destdir}/etc/dbus-1 && rm -rf {destdir}/opt/kf6/etc/dbus-1 fi""", f"""if [ -d {destdir}/opt/kf6/share/dbus-1 ]; then cp -aT {destdir}/opt/kf6/share/dbus-1 {destdir}/usr/share/dbus-1 && rm -rf {destdir}/opt/kf6/share/dbus-1 fi""", f"""if [ -d {destdir}/opt/kf6/share/polkit-1 ]; then cp -aT {destdir}/opt/kf6/share/polkit-1 {destdir}/usr/share/polkit-1 && rm -rf {destdir}/opt/kf6/share/polkit-1 fi""", # Replace directories with symlinks (explicit + safe) f"""rm -rf {destdir}$KF6_PREFIX/etc/dbus-1 && ln -sfn /etc/dbus-1 {destdir}$KF6_PREFIX/etc/dbus-1""", f"""rm -rf {destdir}$KF6_PREFIX/share/dbus-1 && ln -sfn /usr/share/dbus-1 {destdir}$KF6_PREFIX/share/dbus-1 && ln -sfn /usr/share/polkit-1 {destdir}$KF6_PREFIX/share/polkit-1""", # Make tarball + manifests f"mkdir -p {outputdir} && cd {destdir} && tar --transform 's|^\\.||' -I zstd -cf {outputdir}/{pkgname}-{pkgver}.tar.zst .", f"mkdir -p {manifestdir} && tar -tf {outputdir}/{pkgname}-{pkgver}.tar.zst | grep -v '/$' > {manifestdir}/{pkgname}.txt", # Cleanup f"rm -rf {fembuilddir}" ]