From 62ca3b0c4062af23ab5ee082e287008e46c86683 Mon Sep 17 00:00:00 2001 From: Rune Morling Date: Mon, 17 Jun 2024 18:20:45 +0200 Subject: [PATCH 1/2] eopkg: Sync to v4.1.1, remove eopkg4-bin symlink **Summary** - Remove eopkg4-bin symlink. Use eopkg.bin instead. - eopkg.bin and eopkg.py3 will now deterministically install baselayout and eopkg packages before anything else. - Add eopkg to system.base in preparation for epoch bump process. - Add mirrors.conf and sandbox.conf files in preparation for epoch bump process ownership changes between pisi(py2) and eopkg(py3) packages. Signed-off-by: Rune Morling --- packages/e/eopkg/files/mirrors.conf | 224 ++++++++++++++++++++++++++++ packages/e/eopkg/files/sandbox.conf | 42 ++++++ packages/e/eopkg/package.yml | 103 ++++++------- packages/e/eopkg/pspec_x86_64.xml | 59 +++----- 4 files changed, 328 insertions(+), 100 deletions(-) create mode 100644 packages/e/eopkg/files/mirrors.conf create mode 100644 packages/e/eopkg/files/sandbox.conf diff --git a/packages/e/eopkg/files/mirrors.conf b/packages/e/eopkg/files/mirrors.conf new file mode 100644 index 00000000000..7f8589f8683 --- /dev/null +++ b/packages/e/eopkg/files/mirrors.conf @@ -0,0 +1,224 @@ +apache http://www.eu.apache.org/dist/ +apache http://www.apache.org/dist/ +apache http://apache.planetmirror.com.au/dist/ +apache http://gd.tuwien.ac.at/infosys/servers/http/apache/dist/ +apache http://apache.fastorama.com/dist/ +apache http://mir2.ovh.net/ftp.apache.org/dist/ +apache ftp://ftp.planetmirror.com/pub/apache/dist/ +apache ftp://gd.tuwien.ac.at/pub/infosys/servers/http/apache/dist/ +apache ftp://ftp.fastorama.com/mirrors/ftp.apache.org/dist/ +berlios http://download.berlios.de/ +berlios http://download2.berlios.de/ +cpan http://search.cpan.org/CPAN/ +cpan http://cpan.ulak.net.tr/ +cpan http://www.perl.com/CPAN/ +cpan http://mirrors.jtlnet.com/CPAN/ +cpan ftp://ftp.ncsu.edu/pub/mirror/CPAN/ +cpan ftp://ftp.duke.edu/pub/perl/ +gnome http://ftp.gnome.org/pub/GNOME/sources +gnome http://ftp.rpmfind.net/linux/gnome.org/sources/ +gnome http://ftp.unina.it/pub/linux/GNOME/sources/ +gnome http://ftp.acc.umu.se/pub/GNOME/sources/ +gnome http://ftp.belnet.be/mirror/ftp.gnome.org/sources/ +gnome ftp://ftp.cse.buffalo.edu/pub/Gnome/sources/ +gnu http://ftp.gnu.org/gnu/ +gnu ftp://ftp.gnu.org/gnu/ +gnu http://ftp.club.cc.cmu.edu/pub/gnu/ +gnu http://mirrors.usc.edu/pub/gnu/ +gnu http://mirrors.kernel.org/gnu/ +gnu ftp://ftp.club.cc.cmu.edu/gnu/ +gnu ftp://aeneas.mit.edu/pub/gnu/ +gnu ftp://ftp.cse.ohio-state.edu/mirror/gnu/ +gnu ftp://ftp.cs.tu-berlin.de/pub/gnu/ +gnu ftp://mirrors.kernel.org/gnu/ +gnu ftp://ftp.cs.ubc.ca/pub/gnu/ +gnu ftp://ftp.math.uni-bremen.de/pub/gnu/ +gnu ftp://ftp.informatik.rwth-aachen.de/pub/gnu/ +gnu ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/ +gnu ftp://ftp.mirror.ac.uk/sites/ftp.gnu.org/gnu/ +gnu ftp://sunsite.cnlab-switch.ch/mirror/gnu/ +gnu http://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/ +gnu ftp://ftp.stacken.kth.se/pub/gnu/ +gnu ftp://ftp.isy.liu.se/pub/gnu/ +gnu ftp://ftp.task.gda.pl/pub/gnu/ +gnu ftp://ftp.nluug.nl/pub/gnu/ +gnu ftp://ftp.funet.fi/pub/gnu/prep/ +gnu ftp://sunsite.icm.edu.pl/pub/gnu/ +gnu ftp://ftp.freenet.de/pub/mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/ +gnu ftp://ftp.mirror.nl/pub/mirror/gnu/ +gnu ftp://ftp.esat.net/pub/gnu/ +gnu ftp://ftp.mcc.ac.uk/pub/gnu/ +gnu ftp://ftp.cise.ufl.edu/pub/mirrors/GNU/ +gnu ftp://ftp.uninett.no/pub/gnu/ +gnu ftp://ftp.duth.gr/pub/gnu/ +gnu ftp://sunsite.dk/mirrors/gnu/ +gnu http://mirrors.sunsite.dk/gnu/ +gnu ftp://ftp.etsimo.uniovi.es/pub/gnu/ +gnu ftp://ftp.sunet.se/pub/gnu/ +gnu http://ftp.roedu.net/mirrors/gnu.org/ +gnu ftp://ftp.forthnet.gr/pub/gnu/ +gnu ftp://ftp.univie.ac.at/packages/gnu/ +gnu ftp://core.ring.gr.jp/pub/GNU/ +gnu ftp://ftp.cs.cuhk.edu.hk/pub/gnu/gnu/ +gnu ftp://tron.um.u-tokyo.ac.jp/pub/GNU/ +gnu http://ftp.azc.uam.mx/mirrors/gnu/ +gnu ftp://ftp.kaist.ac.kr/gnu/ +gnu ftp://ftp.chg.ru/pub/gnu/ +gnu ftp://ftp.inf.utfsm.cl/pub/gnu/ +gnu ftp://ftp.arnes.si/software/gnu/ +gnu ftp://gnu.cs.lewisu.edu/gnu/ +gnu http://ftp.wayne.edu/pub/gnu/ +gnu ftp://ftp.wayne.edu/pub/gnu/ +gnu http://kambing.vlsm.org/gnu/ +gnu http://gd.tuwien.ac.at/gnu/gnusrc/ +kde http://download.kde.org/ +kde http://master.kde.org/ +kde ftp://ftp.kde.org/pub/kde/ +kde http://ftp.icm.edu.pl/pub/unix/kde/ +kde http://ftp.pbone.net/pub/kde/ +kde http://ftp.fi.muni.cz/pub/kde/ +kde http://mirror.karneval.cz/pub/kde/ +kde http://ftp.funet.fi/pub/mirrors/ftp.kde.org/pub/kde/ +kde http://ftp.rz.uni-wuerzburg.de/pub/unix/kde/ +kde http://ftp-stud.fht-esslingen.de/Mirrors/ftp.kde.org/pub/kde/ +kde http://ftp5.gwdg.de/pub/linux/kde/ +kde http://fr2.rpmfind.net/linux/KDE/ +kde http://archive.sunet.se/pub/X11/kde/ +kde http://vesta.informatik.rwth-aachen.de/ftp/pub/mirror/kde/ +kde http://mirrors.dotsrc.org/kde/ +kde http://ftp.nluug.nl/pub/windowing/kde/ +kde http://ftp.SURFnet.nl/windowing/kde/ +kde http://kde-mirror.freenux.org/stable/ +kde http://www-ftp.lip6.fr/pub/X11/kde/ +kde http://mirrors.ircam.fr/pub/KDE/ +kde http://www.mirrorservice.org/sites/ftp.kde.org/pub/kde/ +kde http://kde.mirror.anlx.net/ +kde http://mirror.catn.com/pub/kde/ +kde http://mirrors.fe.up.pt/pub/kde/ +kde http://ftp.heanet.ie/mirrors/ftp.kde.org/ +kde http://ftp.rhnet.is/pub/kde/ +kde http://chernabog.cc.vt.edu/pub/projects/kde/ +kde http://ftp.gtlib.cc.gatech.edu/pub/kde/ +kde ftp://chernabog.cc.vt.edu/pub/projects/kde/ +kde ftp://ftp.gtlib.cc.gatech.edu/pub/kde/ +kde ftp://carroll.aset.psu.edu/pub/kde/ +kde ftp://ftp.oregonstate.edu/pub/kde/ +kde ftp://ftp.ussg.iu.edu/pub/kde/ +kde http://mirrors.isc.org/pub/kde/ +kde http://mirror.karneval.cz/pub/kde/ +kde http://ftp.belnet.be/packages/kde/ +kde http://ftp.fi.muni.cz/pub/kde/ +kde http://ftp.funet.fi/pub/mirrors/ftp.kde.org/pub/kde/ +kde http://ftp.funet.fi/pub/mirrors/ftp.kde.org/pub/kde/ +kde http://ftp.rhnet.is/pub/kde/ +kde http://ftp-stud.fht-esslingen.de/Mirrors/ftp.kde.org/pub/kde/ +kde http://ftp.tiscali.nl/kde/ +kde http://mirrors.isc.org/pub/kde/ +kde http://sunsite.icm.edu.pl/pub/unix/kde/ +kde ftp://ftp.belnet.be/packages/kde/ +kde ftp://ftp.estpak.ee/pub/kde/ +kde ftp://ftp.fu-berlin.de/pub/unix/X11/gui/kde/ +kde ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.kde.org/pub/kde/ +kde http://ftp.du.se/pub/mirrors/kde/ +kde ftp://ftp.du.se/pub/mirrors/kde/ +kde ftp://ftp.funet.fi/pub/mirrors/ftp.kde.org/pub/kde/ +kde ftp://ftp.mirrorservice.org/sites/ftp.kde.org/pub/kde/ +kde ftp://ftp.rhnet.is/pub/kde/ +kde ftp://ftp.sunet.se/pub/kde/ +kde ftp://ftp.tu-chemnitz.de/pub/X11/kde/ +kde ftp://ftp.tuniv.szczecin.pl/pub/kde/ +kde http://ftp.esat.net/mirrors/ftp.kde.org/pub/kde/ +kde http://ftp.kde.org.yu/kde/ +kde http://ftp.ring.gr.jp/pub/X/kde/ +kde http://ftp.tuniv.szczecin.pl/pub/kde/ +kde http://ftp.unina.it/pub/Linux/kde/ +kde http://mi.mirror.garr.it/mirrors/KDE/ +kde http://mirrors.dotsrc.org/kde/ +kde ftp://ftp.duth.gr/pub/kde/ +kde ftp://ftp.kde.org.yu/kde/ +kde ftp://ftp.pbone.net/mirror/ftp.kde.org/pub/kde/ +kde ftp://ftp.rz.uni-wuerzburg.de/pub/unix/kde/ +kde ftp://ftp.unina.it/pub/Linux/kde/ +kde ftp://mirrors.dotsrc.org/kde/ +kde ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/kde/ +kde http://ftp.duth.gr/pub/kde/ +kde http://ftp.hol.gr/mirror/kde/ +kde http://ftp.sunet.se/pub/kde/ +kde http://ring.asahi-net.or.jp/pub/X/kde/ +kde ftp://ftp.esat.net/mirrors/ftp.kde.org/pub/kde/ +kde ftp://ftp.no.kde.org/pub/kde/ +kde ftp://ftp.tiscali.nl/pub/mirrors/kde/ +kde http://ftp.heanet.ie/mirrors/ftp.kde.org/ +kde http://ftp.scarlet.be/pub/kde/ +kde ftp://ftp.solnet.ch/mirror/KDE/ +kde ftp://ftp.heanet.ie/mirrors/ftp.kde.org/ +kde ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.kde.org/ +kde ftp://ftp.xcp.kiev.ua/ftp.kde.org/ +kde ftp://ring.asahi-net.or.jp/pub/X/kde/ +kde http://ftp.yz.yamagata-u.ac.jp/pub/X11/wm/kde/ +kde ftp://ftp.scarlet.be/pub/kde/ +kde ftp://sunsite.icm.edu.pl/pub/unix/kde/ +kde http://www.mirrorservice.org/sites/ftp.kde.org/pub/kde/ +kde ftp://ftp.hol.gr/pub/mirror/kde/ +kde http://gd.tuwien.ac.at/kde/ +kde ftp://ftp.ntua.gr/pub/X11/kde/ +kde http://ftp.ntua.gr/pub/X11/kde/ +kde ftp://ftp.fi.muni.cz/pub/kde/ +kde ftp://ftp.planetmirror.com/pub/kde/ +kde http://public.planetmirror.com/pub/kde/ +kde ftp://ftp.yz.yamagata-u.ac.jp/pub/X11/wm/kde/ +kde ftp://ftp.ring.gr.jp/pub/X/kde/ +kde ftp://kde.paralax.org/kde/ +kde http://ftp.kddlabs.co.jp/pub/X11/kde/ +kde ftp://ftp.kddlabs.co.jp/pub/X11/kde/ +kde ftp://ftp.nectec.or.th/pub/linux-softwares/KDE/ +kde ftp://ftp.chg.ru/pub/kde/ +kde http://ftp.chg.ru/pub/kde/ +kde http://ftp.gwdg.de/pub/x11/kde/ +kde ftp://gd.tuwien.ac.at/kde/ +kde ftp://ftp.gwdg.de/pub/x11/kde/ +kde http://gd.tuwien.ac.at/kde/ +kde ftp://ftp.sayclub.com/pub/X/KDE/ +kde http://ftp.sayclub.com/pub/X/KDE/ +sourceforge http://heanet.dl.sourceforge.net/ +sourceforge http://hivelocity.dl.sourceforge.net/ +sourceforge http://garr.dl.sourceforge.net/ +sourceforge http://biznetnetworks.dl.sourceforge.net/ +sourceforge http://internap.dl.sourceforge.net/ +sourceforge http://internode.dl.sourceforge.net/ +sourceforge http://iweb.dl.sourceforge.net/ +sourceforge http://jaist.dl.sourceforge.net/ +sourceforge http://kent.dl.sourceforge.net/ +sourceforge http://mesh.dl.sourceforge.net/ +sourceforge http://nchc.dl.sourceforge.net/ +sourceforge http://nfsi.dl.sourceforge.net/ +sourceforge http://ovh.dl.sourceforge.net/ +sourceforge http://puzzle.dl.sourceforge.net/ +sourceforge http://softlayer.dl.sourceforge.net/ +sourceforge http://sunet.dl.sourceforge.net/ +sourceforge http://superb-east.dl.sourceforge.net/ +sourceforge http://superb-west.dl.sourceforge.net/ +sourceforge http://surfnet.dl.sourceforge.net/ +sourceforge http://switch.dl.sourceforge.net/ +sourceforge http://transact.dl.sourceforge.net/ +sourceforge http://ufpr.dl.sourceforge.net/ +sourceforge http://voxel.dl.sourceforge.net/ +sourceforge http://waix.dl.sourceforge.net/ +sourceforge http://easynews.dl.sourceforge.net/ +sourceforge http://optusnet.dl.sourceforge.net/ +sourceforge http://dfn.dl.sourceforge.net/ +sourceforge http://freefr.dl.sourceforge.net/ +xorg http://ftp.x.org/pub/ +xorg http://xorg.freedesktop.org/archive/ +xorg http://mirror.sg.depaul.edu/pub/x.org/ +xorg http://x.paracoda.com/pub/ +xorg http://x.hostingzero.com/ +xfce http://mirror.netcologne.de/xfce/ +xfce http://ftp.udc.es/xfce/ +xfce http://www.p0llux.be/xfce/ +xfce http://archive.be.xfce.org/ +xfce http://archive.be2.xfce.org/ +xfce http://archive.se.xfce.org/ +xfce http://xfce.mirror.uber.com.au/ +xfce http://mirror.yongbok.net/X11/xfce-mirror/ +xfce http://archive.al-us.xfce.org/ diff --git a/packages/e/eopkg/files/sandbox.conf b/packages/e/eopkg/files/sandbox.conf new file mode 100644 index 00000000000..a965e1cf579 --- /dev/null +++ b/packages/e/eopkg/files/sandbox.conf @@ -0,0 +1,42 @@ +# This file contains valid path list for pisi sandbox +# and used in the build process to constrain actions.py inside +# the build directories + +# Paths like /tmp allow writing to /tmp2/lala +# while /tmp/ only allows inside the /tmp directory +# ~ at the beginning of the path is replaced by pisi user's home directory + +# Each package has its build directory (/var/pisi/pkgname) allowed by default +# And ccache directory is automatically added when that feature is enabled +# Any other extra path should be configured here + +# Generic system paths needed by almost all programs +/tmp/ +/var/tmp/ +/var/run/utmp +/dev/tty +/dev/pts/ +/dev/pty +/dev/null +/dev/zero +/dev/ptmx +/dev/shm/ +/dev/full +/proc/ +# stupid autoconf family needs /usr/lib/conftest* and /usr/lib/cf* for some conftest, +# http://sources.gentoo.org/viewcvs.py/portage/trunk/sandbox/files/sandbox/sandbox.c also permits these +/usr/lib/conftest +/usr/lib/cf +# every qt/KDE application check these +~/.qt/.qt_plugins_3.3rc.lock +~/.qt/qt_plugins_3.3rc.tmp +~/.qt/.qtrc.lock +~/.qt/.qt_designerrc.lock +/usr/qt/3/etc/settings/.qt_plugins_3.3rc.lock +/usr/qt/3/etc/settings/qt_plugins_3.3rc.tmp +/usr/qt/3/etc/settings/qt_plugins_3.3rc +/usr/qt/3/etc/settings/.qtrc.lock +/usr/qt/3/etc/settings/.qt_designerrc.lock + +# FontConfig cache directory +/var/cache/fontconfig diff --git a/packages/e/eopkg/package.yml b/packages/e/eopkg/package.yml index 9e7625d0bc3..2910d0c3183 100644 --- a/packages/e/eopkg/package.yml +++ b/packages/e/eopkg/package.yml @@ -1,23 +1,18 @@ name : eopkg -version : 4.0.0 -release : 6 +version : 4.1.1 +release : 7 source : - - git|https://github.com/getsolus/eopkg : df625c985004bf3407e1fe5eb3e03b01346b4558 + - git|https://github.com/getsolus/eopkg : 1f1fc60acccbe9ac30adf114072ecfc3086ed8a1 - git|https://github.com/getsolus/PackageKit.git : dcfcd941d2aa09a1378d738bc98afb4ca52d14df homepage : https://github.com/getsolus/eopkg license : GPL-2.0-or-later -component : system.utils -summary : UNSUPPORTED & EXPERIMENTAL (reserved for Solus Staff testing) -description: | - - WARNING: This package is **unsupported**, **experimental and may **break your system!!!** - - It is included at this early stage to make it easier for Solus Staff to test and debug it. - - Experienced contributors with packaging and bugreporting experience are welcome to help us test and report (non-duplicate!) problems here: - - https://github.com/getsolus/packages/issues/1316 - +component : system.base +summary : + - The Solus package manager (python3 eopkg.bin nuitka-compiled version) + - python-eopkg : The Solus package manager (pure python3 eopkg.py3 version) +description: + - The Solus package manager (python3 eopkg.bin nuitka-compiled version) + - python-eopkg : The Solus package manager (pure python3 eopkg.py3 version) strip : no debug : no builddeps : @@ -25,33 +20,32 @@ builddeps : - pkgconfig(python3) - iksemel-devel - nuitka + - pandoc - patchelf - python-build - python-installer - python-magic + - python-ordered-set - python-packaging - python-wheel - python-xattr - python-zstandard - - tree rundeps : - #- ^eopkg-symlinks: - # - eopkg - ^python-eopkg : - iksemel + - python-ordered-set - python-xattr - #- ^python-eopkg-symlinks: - # - python-eopkg setup : | - # NOTE: please leave the grep commands in for visibility purposes during build. Thanks. /ermo # get rid of any existing lines w/git ref version info sed "/__version__ += /d" -i pisi/__init__.py + # Show clean version info grep -Hn version pisi/__init__.py # append the git ref to __version__ on a new line gawk -i inplace \ 'BEGIN { "git rev-parse --short HEAD" | getline gitref } { print }; /__version__ = / { printf "%s %s\n", $1, "+= \" (" gitref ")\"" };' \ pisi/__init__.py + # Verify added git ref version info for build introspection purposes grep -Hn version pisi/__init__.py %python3_setup @@ -66,50 +60,49 @@ build : | # builddeps for now). # The context is that the py3 ssl module depends on openssl and openssl needs # ca-certs to be able to check https connections. - + # We're not actually using self-execution. In this case, eopkg is using the -c flag as shorthand for --component, rather than for passing the program as a string (as is default python behavior). - nuitka3 --onefile --include-module=dbm.gnu --show-scons --no-deployment-flag=self-execution $workdir/eopkg-cli + nuitka3 --onefile --include-module=dbm.gnu --show-scons --no-deployment-flag=self-execution $workdir/eopkg.py3 nuitka3 --onefile --include-module=dbm.gnu $sources/PackageKit.git/backends/eopkg/eopkgBackend.py install : | # install the normal pure py3 stuff %python3_install - # Pure py3 initial installed state - tree -L 1 $installdir/usr/bin $installdir/usr/lib - - # ensure no conflict w/eopkg py2 stuff, ensure this stuff goes into the ^python-eopkg pattern + # .py3 ensures no conflict w/eopkg py2 stuff (shuffle it into the ^python-eopkg pattern later) for exe in eopkg lseopkg uneopkg; do mv -v $installdir/usr/bin/${exe} $installdir/usr/bin/${exe}.py3 done + # install the nuitka-compiled eopkg PackageKit backend + install -Dm0755 $workdir/eopkgBackend.bin $installdir/usr/share/PackageKit/helpers/eopkg/eopkgBackend.bin + # install the compiled eopkg.bin nuitka standalone thing - install -Dm0755 $workdir/eopkg-cli.bin $installdir/usr/bin/eopkg.bin - - # ensure that existing eopkg4-bin aliases keep working for backwards compat purposes currently - ln -srvf $installdir/usr/bin/eopkg.bin $installdir/usr/bin/eopkg4-bin - - # If we want to make eopkg.bin the default at some point - # (patterned into the eopkg-symlinks package) + install -Dm0755 $workdir/eopkg.py3.bin $installdir/usr/bin/eopkg.bin + + ## BEGIN post epoch ownership changes + # This makes eopkg.bin the default package manager on Solus #ln -srv $installdir/usr/bin/eopkg.bin $installdir/usr/bin/eopkg #ln -srv $installdir/usr/bin/eopkg.bin $installdir/usr/bin/eopkg-cli - # If we want to make python-eopkg take over some pisi symlinks at some point - # (patterned into the python-eopkg-symlinks package) - #test -f $installdir/usr/bin/check-newconfigs.py3 \ - # && ln -srv $installdir/usr/bin/check-newconfigs.py3 $installdir/usr/bin/check-newconfigs.py + # If we want to make python-eopkg take over the remaining pisi symlinks at some point + # (patterned into the python-eopkg package) + ##test -f $installdir/usr/bin/check-newconfigs.py3 \ + ## && ln -srv $installdir/usr/bin/check-newconfigs.py3 $installdir/usr/bin/check-newconfigs.py #ln -srv $installdir/usr/bin/lseopkg.py3 $installdir/usr/bin/lseopkg - #ln -srv $installdir/usr/bin/lseopkg.py3 $installdir/usr/bin/lspisi - #test -f $installdir/usr/bin/revdep-rebuild.py3 \ - # && ln -srv $installdir/usr/bin/revdep-rebuild.py3 $installdir/usr/bin/revdep-rebuild + ##ln -srv $installdir/usr/bin/lseopkg.py3 $installdir/usr/bin/lspisi + ##test -f $installdir/usr/bin/revdep-rebuild.py3 \ + ## && ln -srv $installdir/usr/bin/revdep-rebuild.py3 $installdir/usr/bin/revdep-rebuild #ln -srv $installdir/usr/bin/uneopkg.py3 $installdir/usr/bin/uneopkg - #ln -srv $installdir/usr/bin/uneopkg.py3 $installdir/usr/bin/unpisi - - # install the nuitka-compiled eopkg PackageKit backend - install -Dm0755 $workdir/eopkgBackend.bin $installdir/usr/share/PackageKit/helpers/eopkg/eopkgBackend.bin - - # list which executables and symlinks were installed for reference - # /usr/bin final output - tree -L 1 $installdir/usr/bin $installdir/usr/lib + ##ln -srv $installdir/usr/bin/uneopkg.py3 $installdir/usr/bin/unpisi + + # man page is re-generated by eopkg_build.py if pandoc is in builddeps + #install -Dm0644 $workdir/dist/man/eopkg.1 $installdir/usr/share/man/man1/eopkg.1 + + # install default eopkg config files (eopkg.conf will be overridden) + #install -Dm0644 $installdir/usr/lib/python3.11/site-packages/pisi/data/eopkg.conf $installdir/usr/share/defaults/eopkg/eopkg.conf + #install -Dm0644 $pkgfiles/mirrors.conf $installdir/usr/share/defaults/eopkg/mirrors.conf + #install -Dm0644 $pkgfiles/mirrors.conf $installdir/usr/share/defaults/eopkg/sandbox.conf + ## END post epoch ownership changes replaces : - eopkg4-bin patterns : @@ -118,16 +111,10 @@ patterns : - ^python-eopkg : - /usr/lib/python3.*/site-packages/eopkg* - /usr/lib/python3.*/site-packages/pisi - - /usr/bin/*.py3 - # Together, these two symlink patterns comprise the full list of pisi py2 /usr/bin binaries/symlinks - # -- some may not yet be available in the present packages yet... - #- ^python-eopkg-symlinks : + - /usr/bin/*eopkg.py3 + - /usr/bin/??eopkg + # Not available/ported (yet) # - /usr/bin/check-newconfigs.py - # - /usr/bin/lseopkg # - /usr/bin/lspisi # - /usr/bin/revdep-rebuild - # - /usr/bin/uneopkg # - /usr/bin/unpisi - #- symlinks : - # - /usr/bin/eopkg - # - /usr/bin/eopkg-cli diff --git a/packages/e/eopkg/pspec_x86_64.xml b/packages/e/eopkg/pspec_x86_64.xml index be11b67a7d6..17fe60c649d 100644 --- a/packages/e/eopkg/pspec_x86_64.xml +++ b/packages/e/eopkg/pspec_x86_64.xml @@ -7,35 +7,18 @@ ermo@serpentos.com GPL-2.0-or-later - system.utils - UNSUPPORTED & EXPERIMENTAL (reserved for Solus Staff testing) - -WARNING: This package is **unsupported**, **experimental and may **break your system!!!** - -It is included at this early stage to make it easier for Solus Staff to test and debug it. - -Experienced contributors with packaging and bugreporting experience are welcome to help us test and report (non-duplicate!) problems here: - -https://github.com/getsolus/packages/issues/1316 - + system.base + The Solus package manager (python3 eopkg.bin nuitka-compiled version) + The Solus package manager (python3 eopkg.bin nuitka-compiled version) https://sources.getsol.us/README.Solus eopkg - UNSUPPORTED & EXPERIMENTAL (reserved for Solus Staff testing) - -WARNING: This package is **unsupported**, **experimental and may **break your system!!!** - -It is included at this early stage to make it easier for Solus Staff to test and debug it. - -Experienced contributors with packaging and bugreporting experience are welcome to help us test and report (non-duplicate!) problems here: - -https://github.com/getsolus/packages/issues/1316 - - system.utils + The Solus package manager (python3 eopkg.bin nuitka-compiled version) + The Solus package manager (python3 eopkg.bin nuitka-compiled version) + system.base /usr/bin/eopkg.bin - /usr/bin/eopkg4-bin /usr/share/PackageKit/helpers/eopkg/eopkgBackend.bin @@ -44,26 +27,18 @@ https://github.com/getsolus/packages/issues/1316 python-eopkg - UNSUPPORTED & EXPERIMENTAL (reserved for Solus Staff testing) - -WARNING: This package is **unsupported**, **experimental and may **break your system!!!** - -It is included at this early stage to make it easier for Solus Staff to test and debug it. - -Experienced contributors with packaging and bugreporting experience are welcome to help us test and report (non-duplicate!) problems here: - -https://github.com/getsolus/packages/issues/1316 - + The Solus package manager (python3 eopkg.bin nuitka-compiled version) + The Solus package manager (python3 eopkg.bin nuitka-compiled version) /usr/bin/eopkg.py3 /usr/bin/lseopkg.py3 /usr/bin/uneopkg.py3 - /usr/lib/python3.11/site-packages/eopkg-4.0.0.dist-info/AUTHORS - /usr/lib/python3.11/site-packages/eopkg-4.0.0.dist-info/METADATA - /usr/lib/python3.11/site-packages/eopkg-4.0.0.dist-info/RECORD - /usr/lib/python3.11/site-packages/eopkg-4.0.0.dist-info/WHEEL - /usr/lib/python3.11/site-packages/eopkg-4.0.0.dist-info/entry_points.txt - /usr/lib/python3.11/site-packages/eopkg-4.0.0.dist-info/top_level.txt + /usr/lib/python3.11/site-packages/eopkg-4.1.1.dist-info/AUTHORS + /usr/lib/python3.11/site-packages/eopkg-4.1.1.dist-info/METADATA + /usr/lib/python3.11/site-packages/eopkg-4.1.1.dist-info/RECORD + /usr/lib/python3.11/site-packages/eopkg-4.1.1.dist-info/WHEEL + /usr/lib/python3.11/site-packages/eopkg-4.1.1.dist-info/entry_points.txt + /usr/lib/python3.11/site-packages/eopkg-4.1.1.dist-info/top_level.txt /usr/lib/python3.11/site-packages/pisi/__init__.py /usr/lib/python3.11/site-packages/pisi/__pycache__/__init__.cpython-311.opt-1.pyc /usr/lib/python3.11/site-packages/pisi/__pycache__/__init__.cpython-311.pyc @@ -465,9 +440,9 @@ https://github.com/getsolus/packages/issues/1316 - - 2024-06-11 - 4.0.0 + + 2024-06-24 + 4.1.1 Packaging update Rune Morling ermo@serpentos.com From 02f1d61c4b8685f579b844a5bcf3228c5e4acb85 Mon Sep 17 00:00:00 2001 From: Rune Morling Date: Thu, 13 Jun 2024 16:33:04 +0200 Subject: [PATCH 2/2] pisi: sync to v3.12.1, add dep on python2-ordered-set **Summary** - Sync with pisi v3.12.1 upstream release, which always installs baselayout eopkg first if they are present in any given install/upgrade order. - Add rundep on python2-ordered-set package - Make pisi co-installable with the eopkg(py3) package - Miscellaneous shebang and file name extension changes - Sort pspec.xml file sections lexically for ease of reading/tweaking - Change long_description to indicate that pisi is now considered legacy - Create new comar/manager.py3 and comar/package.py3 build scripts in preparation for enabling building pisi with `eopkg.py3 build`. Thank you to @ultr4_l4s3r for the porting work. The current comar/*.py scripts are still python2 for now. Signed-off-by: Rune Morling --- packages/p/pisi/actions.py | 21 ++- packages/p/pisi/comar/manager.py3 | 253 ++++++++++++++++++++++++++++++ packages/p/pisi/comar/package.py3 | 9 ++ packages/p/pisi/pspec.xml | 56 +++++-- 4 files changed, 321 insertions(+), 18 deletions(-) create mode 100755 packages/p/pisi/comar/manager.py3 create mode 100755 packages/p/pisi/comar/package.py3 diff --git a/packages/p/pisi/actions.py b/packages/p/pisi/actions.py index 59c3a347144..f369f413c75 100644 --- a/packages/p/pisi/actions.py +++ b/packages/p/pisi/actions.py @@ -3,8 +3,23 @@ def install(): pythonmodules.install() - pisitools.dosym("eopkg-cli", "/usr/bin/eopkg") - pisitools.dosym("uneopkg", "/usr/bin/unpisi") - pisitools.dosym("lseopkg", "/usr/bin/lspisi") + # BEGIN comment these out for the epoch bump build of pisi + pisitools.dosym("eopkg.py2", "/usr/bin/eopkg") + pisitools.dosym("eopkg.py2", "/usr/bin/eopkg-cli") + pisitools.dosym("lseopkg.py2", "/usr/bin/lseopkg") + pisitools.dosym("lseopkg.py2", "/usr/bin/lspisi.py2") + pisitools.dosym("uneopkg.py2", "/usr/bin/uneopkg") + pisitools.dosym("uneopkg.py2", "/usr/bin/unpisi.py2") + # END comment these out for the epoch bump build of pisi pisitools.dodir("/etc/mudur") shelltools.echo("%s/etc/mudur/locale" % get.installDIR(), "") + + # Everything below here _removes_ stuff that we don't want installed. + # After the epoch bump, the goal is to make pisi own as little as + # practically possible, so that eopkg4 can own it instead for + # co-installability purposes as we deprecate pisi. + # + # Uncomment the line below for the epoch bump build of pisi + #shelltools.unlinkDir("%s/usr/share/defaults" % get.installDIR()) + pisitools.remove("/usr/share/doc/pisi/dependency.pdf") + pisitools.remove("/usr/share/doc/pisi/package_versions.pdf") diff --git a/packages/p/pisi/comar/manager.py3 b/packages/p/pisi/comar/manager.py3 new file mode 100755 index 00000000000..ab89bc48693 --- /dev/null +++ b/packages/p/pisi/comar/manager.py3 @@ -0,0 +1,253 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Copyright (C) 2005-2009 TUBITAK/UEKAE +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# Please read the COPYING file. +# + +# Disable cyclic garbage collector of Python to avoid comar segmentation +# faults under high load (#11110) +import gc +gc.disable() + +import os +import os.path +import locale +import string + +# FIXME: later this will be Comar's job +systemlocale = open("/etc/mudur/locale", "r").readline().strip() + +# for pisi +os.environ["LC_ALL"] = systemlocale + +# for system error messages +locale.setlocale(locale.LC_ALL, systemlocale) + +try: + import pisi.api + import pisi.db + import pisi.ui + import pisi.util as util + import pisi.configfile + from pisi.version import Version +except KeyboardInterrupt: + notify("System.Manager", "cancelled", "") + +class UI(pisi.ui.UI): + def error(self, msg): + notify("System.Manager", "error", str(msg)) + + def warning(self, msg): + notify("System.Manager", "warning", str(msg)) + + def notify(self, event, **keywords): + if event == pisi.ui.installing: + pkgname = keywords["package"].name + notify("System.Manager", "status", ("installing", pkgname, "", "")) + elif event == pisi.ui.configuring: + pkgname = keywords["package"].name + notify("System.Manager", "status", ("configuring", pkgname, "", "")) + elif event == pisi.ui.extracting: + pkgname = keywords["package"].name + notify("System.Manager", "status", ("extracting", pkgname, "", "")) + elif event == pisi.ui.updatingrepo: + reponame = keywords["name"] + notify("System.Manager", "status", ("updatingrepo", reponame, "", "")) + elif event == pisi.ui.removing: + pkgname = keywords["package"].name + notify("System.Manager", "status", ("removing", pkgname, "", "")) + elif event == pisi.ui.cached: + total = str(keywords["total"]) + cached = str(keywords["cached"]) + notify("System.Manager", "status", ("cached", total, cached, "")) + elif event == pisi.ui.installed: + notify("System.Manager", "status", ("installed", "", "", "")) + elif event == pisi.ui.removed: + notify("System.Manager", "status", ("removed", "", "", "")) + elif event == pisi.ui.upgraded: + notify("System.Manager", "status", ("upgraded", "", "", "")) + elif event == pisi.ui.packagestogo: + notify("System.Manager", "status", ("order", "", "", "")) + elif event == pisi.ui.desktopfile: + filepath = keywords["desktopfile"] + notify("System.Manager", "status", ("desktopfile", filepath, "", "")) + elif event == pisi.ui.systemconf: + notify("System.Manager", "status", ("systemconf", "", "", "")) + else: + return + + def ack(self, msg): + return True + + def confirm(self, msg): + return True + + def display_progress(self, operation, percent, info="", **kw): + if operation == "fetching": + file_name = kw["filename"] + if not file_name.startswith("eopkg-index.xml"): + file_name = pisi.util.parse_package_name(file_name)[0] + out = (operation, file_name, str(percent), int(kw["rate"]), kw["symbol"], int(kw["downloaded_size"]), int(kw["total_size"])) + else: + out = (operation, str(percent), info, 0, 0, 0, 0) + notify("System.Manager", "progress", out) + +def _init_pisi(): + ui = UI() + try: + pisi.api.set_userinterface(ui) + except KeyboardInterrupt: + cancelled() + +def _get_eopkg_config(): + if os.path.exists("/etc/eopkg/eopkg.conf"): + return "/etc/eopkg/eopkg.conf" + return "/usr/share/defaults/eopkg/eopkg.conf" + +def cancelled(): + notify("System.Manager", "cancelled", None) + +def started(operation=""): + notify("System.Manager", "started", operation) + +def finished(operation=""): + if operation in ["System.Manager.setCache", "System.Manager.installPackage", "System.Manager.removePackage", "System.Manager.updatePackage"]: + __checkCacheLimits() + + notify("System.Manager", "finished", operation) + +def privileged(func): + """ + Decorator for synchronizing privileged functions + """ + def wrapper(*__args,**__kw): + operation = "System.Manager.%s" % func.__name__ + + started(operation) + _init_pisi() + try: + func(*__args,**__kw) + except KeyboardInterrupt: + cancelled() + return + except Exception(e): + notify("System.Manager", "error", str(e)) + return + finished(operation) + + return wrapper + +@privileged +def installPackage(package=None): + if package: + package = package.split(",") + reinstall = package[0].endswith(".eopkg") + pisi.api.install(package, ignore_file_conflicts=True, reinstall=reinstall) + +@privileged +def reinstallPackage(package=None): + if package: + package = package.split(",") + pisi.api.install(package, ignore_file_conflicts=True, reinstall=True) + +@privileged +def updatePackage(package=None): + if package is None: + package = [] + else: + package = package.split(",") + pisi.api.upgrade(package) + +@privileged +def removePackage(package=None): + if package: + package = package.split(",") + pisi.api.remove(package) + +@privileged +def updateRepository(repository=None): + if repository: + pisi.api.update_repo(repository) + +@privileged +def updateAllRepositories(): + repos = pisi.db.repodb.RepoDB().list_repos() + for repo in repos: + try: + pisi.api.update_repo(repo) + except pisi.db.repodb.RepoError(e): + notify("System.Manager", "error", str(e)) + +@privileged +def addRepository(name=None,uri=None): + if name and uri: + pisi.api.add_repo(name,uri) + +@privileged +def removeRepository(repo=None): + if repo: + pisi.api.remove_repo(repo) + +@privileged +def setRepoActivities(repos=None): + if repos: + for repo, active in list(repos.items()): + pisi.api.set_repo_activity(repo, active) + +@privileged +def setRepositories(repos): + oldRepos = pisi.db.repodb.RepoDB().list_repos(only_active=False) + + for repo in oldRepos: + pisi.api.remove_repo(repo) + + for repo in repos: + pisi.api.add_repo(repo[0], repo[1]) + +@privileged +# ex: setConfig("general", "bandwidth_limit", "30") +def setConfig(category, name, value): + config = pisi.configfile.ConfigurationFile("/etc/eopkg/eopkg.conf") + config.set(category, name, value) + + config.write_config() + +@privileged +def setCache(enabled, limit): + config = pisi.configfile.ConfigurationFile("/etc/eopkg/eopkg.conf") + config.set("general", "package_cache", str(enabled)) + config.set("general", "package_cache_limit", str(limit)) + + config.write_config() + +@privileged +def takeSnapshot(): + pisi.api.snapshot() + +@privileged +def takeBack(operation): + pisi.api.takeback(operation) + +@privileged +def clearCache(cacheDir, limit): + pisi.api.clearCache(int(limit) == 0) + +def __checkCacheLimits(): + cached_pkgs_dir = "/var/cache/eopkg/packages" + config = pisi.configfile.ConfigurationFile(_get_eopkg_config()) + cache = config.get("general", "package_cache") + if cache == "True": + limit = config.get("general", "package_cache_limit") + + # If PackageCache is used and limit is 0. It means limitless. + if limit and int(limit) != 0: + clearCache(cached_pkgs_dir, int(limit) * 1024 * 1024) + elif cache == "False": + clearCache(cached_pkgs_dir, 0) diff --git a/packages/p/pisi/comar/package.py3 b/packages/p/pisi/comar/package.py3 new file mode 100755 index 00000000000..7daa908ad56 --- /dev/null +++ b/packages/p/pisi/comar/package.py3 @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 + +import os + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + if not os.path.exists("/var/lib/pisi/package"): + os.system("mkdir /var/lib/pisi/package") + os.system("mv /var/lib/pisi/* /var/lib/pisi/package/") + os.system("mv /var/lib/pisi/package/scripts /var/lib/pisi/") diff --git a/packages/p/pisi/pspec.xml b/packages/p/pisi/pspec.xml index bac44066c5f..8aaaaa3908e 100644 --- a/packages/p/pisi/pspec.xml +++ b/packages/p/pisi/pspec.xml @@ -12,13 +12,14 @@ app:console PISI PISI is a modern package management system implemented in Python. Some of its main features are: package sources are written in XML and python, implements all functions through a simple-to-use API, integrates low-level and high-level package management features. - https://github.com/getsolus/eopkg/archive/refs/tags/v3.11.tar.gz + https://github.com/getsolus/eopkg/archive/refs/tags/v3.12.1.tar.gz - python - python2-xattr db5 - piksemel intltool + piksemel + python + python2-ordered-set + python2-xattr @@ -28,40 +29,65 @@ pisi + /etc/pisi/pisi.conf + /etc/mudur/locale + /usr/lib/tmpfiles.d/pisi.conf + /usr/share/defaults/eopkg + /usr/share/factory/var/db/comar3/scripts/System.Manager/pisi.py + /usr/share/mime/packages + /usr/share/doc + /usr/share/man/man1 /usr/bin /usr/sbin /usr/lib/python* /usr/share/locale - /usr/share/doc - /usr/share/man/man1 - /usr/share/defaults/eopkg - /etc/pisi/pisi.conf - /etc/mudur/locale - /usr/share/mime/packages - /usr/share/factory/var/db/comar3/scripts/System.Manager/pisi.py - /usr/lib/tmpfiles.d/pisi.conf + pisi.tmpfiles + mirrors.conf sandbox.conf - pisi.tmpfiles + manager.py + eopkg.1 + System.Package System.Manager - python - python2-xattr db5 + piksemel + python + python2-ordered-set + python2-xattr usysconf + + 24-06-2024 + 3.12.1 + sync to v3.12.1, add dep on python2-ordered-set +**Summary** +- Sync with pisi v3.12.1 upstream release, which always installs baselayout eopkg first if they are present in any given install/upgrade order. +- Add rundep on python2-ordered-set package +- Make pisi co-installable with the eopkg(py3) package +- Miscellaneous shebang and file name extension changes +- Sort pspec.xml file sections lexically for ease of reading/tweaking +- Change long_description to indicate that pisi is now considered legacy +- Create new comar/manager.py3 and comar/package.py3 build scripts in preparation for enabling building pisi with `eopkg.py3 build`. + Thank you to @ultr4_l4s3r for the porting work. The current comar/*.py scripts are still python2 for now. + + Rune Morling + ermo@serpentos.com + 10-06-2024 3.11