2025-12-06 19:32:31 +01:00
|
|
|
|
Name: package-manager
|
2025-12-14 13:39:52 +01:00
|
|
|
|
Version: 1.6.3
|
2025-12-06 19:32:31 +01:00
|
|
|
|
Release: 1%{?dist}
|
|
|
|
|
|
Summary: Wrapper that runs Kevin's package-manager via Nix flake
|
|
|
|
|
|
|
|
|
|
|
|
License: MIT
|
|
|
|
|
|
URL: https://github.com/kevinveenbirkenbach/package-manager
|
|
|
|
|
|
Source0: %{name}-%{version}.tar.gz
|
|
|
|
|
|
|
|
|
|
|
|
BuildArch: noarch
|
2025-12-08 15:08:42 +01:00
|
|
|
|
|
|
|
|
|
|
# NOTE:
|
|
|
|
|
|
# Nix is a runtime requirement, but it is *not* declared here as a hard
|
|
|
|
|
|
# RPM dependency, because many distributions do not ship a "nix" RPM.
|
2025-12-12 20:47:31 +01:00
|
|
|
|
# Instead, Nix is installed and initialized by nix/init.sh, which is
|
2025-12-08 15:08:42 +01:00
|
|
|
|
# called in the %post scriptlet below.
|
2025-12-06 19:32:31 +01:00
|
|
|
|
|
|
|
|
|
|
%description
|
|
|
|
|
|
This package provides the `pkgmgr` command, which runs Kevin's package
|
Refactor pkgmgr installers, introduce capability-based execution, and replace manifest layer
References:
- Current ChatGPT conversation: https://chatgpt.com/share/6935d6d7-0ae4-800f-988a-44a50c17ba48
- Extended discussion: https://chatgpt.com/share/6935d734-fd84-800f-9755-290902b8cee8
Summary:
This commit performs a major cleanup and modernization of the installation pipeline:
1. Introduced a new capability-detection subsystem:
- Capabilities (python-runtime, make-install, nix-flake) are detected per installer/layer.
- Installers run only when they add new capabilities.
- Prevents duplicated work such as Python installers running when Nix already provides the runtime.
2. Removed deprecated pkgmgr.yml manifest installer:
- Dependency resolution is now delegated entirely to real package managers (Nix, pip, make, distro build tools).
- Simplifies layering and avoids unnecessary recursion.
3. Reworked OS-specific installers:
- Arch PKGBUILD now uses 'makepkg --syncdeps --cleanbuild --install --noconfirm'.
- Debian installer now builds proper .deb packages via dpkg-buildpackage + installs them.
- RPM installer now builds packages using rpmbuild and installs them via rpm.
4. Switched from remote GitHub flakes to local-flake execution:
- Wrapper now executes: nix run /usr/lib/package-manager#pkgmgr
- Avoids lock-file write attempts and improves reliability in CI.
5. Added bash -i based integration test:
- Correctly sources ~/.bashrc and evaluates alias + venv activation.
- ‘pkgmgr --help’ is now printed for debugging without failing tests.
6. Updated unit tests across all installers:
- Removed references to manifest installer.
- Adjusted expectations for new behaviors (makepkg, dpkg-buildpackage, rpmbuild).
- Added capability subsystem tests.
7. Improved flake.nix packaging logic:
- The entire project source tree is copied into the runtime closure.
- pkgmgr wrapper now executes runpy inside the packaged directory.
Together, these changes create a predictable, layered, capability-driven installer pipeline with consistent behavior across Arch, Debian, RPM, Nix, and Python layers.
2025-12-07 20:36:39 +01:00
|
|
|
|
manager via a local Nix flake:
|
2025-12-06 19:32:31 +01:00
|
|
|
|
|
Refactor pkgmgr installers, introduce capability-based execution, and replace manifest layer
References:
- Current ChatGPT conversation: https://chatgpt.com/share/6935d6d7-0ae4-800f-988a-44a50c17ba48
- Extended discussion: https://chatgpt.com/share/6935d734-fd84-800f-9755-290902b8cee8
Summary:
This commit performs a major cleanup and modernization of the installation pipeline:
1. Introduced a new capability-detection subsystem:
- Capabilities (python-runtime, make-install, nix-flake) are detected per installer/layer.
- Installers run only when they add new capabilities.
- Prevents duplicated work such as Python installers running when Nix already provides the runtime.
2. Removed deprecated pkgmgr.yml manifest installer:
- Dependency resolution is now delegated entirely to real package managers (Nix, pip, make, distro build tools).
- Simplifies layering and avoids unnecessary recursion.
3. Reworked OS-specific installers:
- Arch PKGBUILD now uses 'makepkg --syncdeps --cleanbuild --install --noconfirm'.
- Debian installer now builds proper .deb packages via dpkg-buildpackage + installs them.
- RPM installer now builds packages using rpmbuild and installs them via rpm.
4. Switched from remote GitHub flakes to local-flake execution:
- Wrapper now executes: nix run /usr/lib/package-manager#pkgmgr
- Avoids lock-file write attempts and improves reliability in CI.
5. Added bash -i based integration test:
- Correctly sources ~/.bashrc and evaluates alias + venv activation.
- ‘pkgmgr --help’ is now printed for debugging without failing tests.
6. Updated unit tests across all installers:
- Removed references to manifest installer.
- Adjusted expectations for new behaviors (makepkg, dpkg-buildpackage, rpmbuild).
- Added capability subsystem tests.
7. Improved flake.nix packaging logic:
- The entire project source tree is copied into the runtime closure.
- pkgmgr wrapper now executes runpy inside the packaged directory.
Together, these changes create a predictable, layered, capability-driven installer pipeline with consistent behavior across Arch, Debian, RPM, Nix, and Python layers.
2025-12-07 20:36:39 +01:00
|
|
|
|
nix run /usr/lib/package-manager#pkgmgr -- ...
|
2025-12-06 19:32:31 +01:00
|
|
|
|
|
2025-12-08 15:08:42 +01:00
|
|
|
|
Nix is a runtime requirement and is installed/initialized by the
|
2025-12-12 20:47:31 +01:00
|
|
|
|
nix/init.sh helper during package installation if it is not yet
|
2025-12-08 15:08:42 +01:00
|
|
|
|
available on the system.
|
2025-12-06 19:32:31 +01:00
|
|
|
|
|
|
|
|
|
|
%prep
|
|
|
|
|
|
%setup -q
|
|
|
|
|
|
|
|
|
|
|
|
%build
|
2025-12-08 15:08:42 +01:00
|
|
|
|
# No build step required; we ship the project tree as-is.
|
2025-12-06 19:32:31 +01:00
|
|
|
|
:
|
|
|
|
|
|
|
|
|
|
|
|
%install
|
|
|
|
|
|
rm -rf %{buildroot}
|
2025-12-12 21:02:26 +01:00
|
|
|
|
|
2025-12-06 19:32:31 +01:00
|
|
|
|
install -d %{buildroot}%{_bindir}
|
2025-12-09 05:50:08 +01:00
|
|
|
|
install -d %{buildroot}/usr/lib/package-manager
|
2025-12-06 19:32:31 +01:00
|
|
|
|
|
Refactor pkgmgr installers, introduce capability-based execution, and replace manifest layer
References:
- Current ChatGPT conversation: https://chatgpt.com/share/6935d6d7-0ae4-800f-988a-44a50c17ba48
- Extended discussion: https://chatgpt.com/share/6935d734-fd84-800f-9755-290902b8cee8
Summary:
This commit performs a major cleanup and modernization of the installation pipeline:
1. Introduced a new capability-detection subsystem:
- Capabilities (python-runtime, make-install, nix-flake) are detected per installer/layer.
- Installers run only when they add new capabilities.
- Prevents duplicated work such as Python installers running when Nix already provides the runtime.
2. Removed deprecated pkgmgr.yml manifest installer:
- Dependency resolution is now delegated entirely to real package managers (Nix, pip, make, distro build tools).
- Simplifies layering and avoids unnecessary recursion.
3. Reworked OS-specific installers:
- Arch PKGBUILD now uses 'makepkg --syncdeps --cleanbuild --install --noconfirm'.
- Debian installer now builds proper .deb packages via dpkg-buildpackage + installs them.
- RPM installer now builds packages using rpmbuild and installs them via rpm.
4. Switched from remote GitHub flakes to local-flake execution:
- Wrapper now executes: nix run /usr/lib/package-manager#pkgmgr
- Avoids lock-file write attempts and improves reliability in CI.
5. Added bash -i based integration test:
- Correctly sources ~/.bashrc and evaluates alias + venv activation.
- ‘pkgmgr --help’ is now printed for debugging without failing tests.
6. Updated unit tests across all installers:
- Removed references to manifest installer.
- Adjusted expectations for new behaviors (makepkg, dpkg-buildpackage, rpmbuild).
- Added capability subsystem tests.
7. Improved flake.nix packaging logic:
- The entire project source tree is copied into the runtime closure.
- pkgmgr wrapper now executes runpy inside the packaged directory.
Together, these changes create a predictable, layered, capability-driven installer pipeline with consistent behavior across Arch, Debian, RPM, Nix, and Python layers.
2025-12-07 20:36:39 +01:00
|
|
|
|
# Copy full project source into /usr/lib/package-manager
|
2025-12-09 05:50:08 +01:00
|
|
|
|
cp -a . %{buildroot}/usr/lib/package-manager/
|
Refactor pkgmgr installers, introduce capability-based execution, and replace manifest layer
References:
- Current ChatGPT conversation: https://chatgpt.com/share/6935d6d7-0ae4-800f-988a-44a50c17ba48
- Extended discussion: https://chatgpt.com/share/6935d734-fd84-800f-9755-290902b8cee8
Summary:
This commit performs a major cleanup and modernization of the installation pipeline:
1. Introduced a new capability-detection subsystem:
- Capabilities (python-runtime, make-install, nix-flake) are detected per installer/layer.
- Installers run only when they add new capabilities.
- Prevents duplicated work such as Python installers running when Nix already provides the runtime.
2. Removed deprecated pkgmgr.yml manifest installer:
- Dependency resolution is now delegated entirely to real package managers (Nix, pip, make, distro build tools).
- Simplifies layering and avoids unnecessary recursion.
3. Reworked OS-specific installers:
- Arch PKGBUILD now uses 'makepkg --syncdeps --cleanbuild --install --noconfirm'.
- Debian installer now builds proper .deb packages via dpkg-buildpackage + installs them.
- RPM installer now builds packages using rpmbuild and installs them via rpm.
4. Switched from remote GitHub flakes to local-flake execution:
- Wrapper now executes: nix run /usr/lib/package-manager#pkgmgr
- Avoids lock-file write attempts and improves reliability in CI.
5. Added bash -i based integration test:
- Correctly sources ~/.bashrc and evaluates alias + venv activation.
- ‘pkgmgr --help’ is now printed for debugging without failing tests.
6. Updated unit tests across all installers:
- Removed references to manifest installer.
- Adjusted expectations for new behaviors (makepkg, dpkg-buildpackage, rpmbuild).
- Added capability subsystem tests.
7. Improved flake.nix packaging logic:
- The entire project source tree is copied into the runtime closure.
- pkgmgr wrapper now executes runpy inside the packaged directory.
Together, these changes create a predictable, layered, capability-driven installer pipeline with consistent behavior across Arch, Debian, RPM, Nix, and Python layers.
2025-12-07 20:36:39 +01:00
|
|
|
|
|
2025-12-06 19:32:31 +01:00
|
|
|
|
# Wrapper
|
2025-12-13 21:25:02 +01:00
|
|
|
|
install -m0755 scripts/launcher.sh %{buildroot}%{_bindir}/pkgmgr
|
2025-12-06 19:32:31 +01:00
|
|
|
|
|
2025-12-12 21:02:26 +01:00
|
|
|
|
# Nix bootstrap (init + lib)
|
2025-12-12 20:47:31 +01:00
|
|
|
|
install -d %{buildroot}/usr/lib/package-manager/nix
|
2025-12-12 21:02:26 +01:00
|
|
|
|
cp -a scripts/nix/* %{buildroot}/usr/lib/package-manager/nix/
|
|
|
|
|
|
chmod 0755 %{buildroot}/usr/lib/package-manager/nix/init.sh
|
2025-12-06 19:32:31 +01:00
|
|
|
|
|
Refactor pkgmgr installers, introduce capability-based execution, and replace manifest layer
References:
- Current ChatGPT conversation: https://chatgpt.com/share/6935d6d7-0ae4-800f-988a-44a50c17ba48
- Extended discussion: https://chatgpt.com/share/6935d734-fd84-800f-9755-290902b8cee8
Summary:
This commit performs a major cleanup and modernization of the installation pipeline:
1. Introduced a new capability-detection subsystem:
- Capabilities (python-runtime, make-install, nix-flake) are detected per installer/layer.
- Installers run only when they add new capabilities.
- Prevents duplicated work such as Python installers running when Nix already provides the runtime.
2. Removed deprecated pkgmgr.yml manifest installer:
- Dependency resolution is now delegated entirely to real package managers (Nix, pip, make, distro build tools).
- Simplifies layering and avoids unnecessary recursion.
3. Reworked OS-specific installers:
- Arch PKGBUILD now uses 'makepkg --syncdeps --cleanbuild --install --noconfirm'.
- Debian installer now builds proper .deb packages via dpkg-buildpackage + installs them.
- RPM installer now builds packages using rpmbuild and installs them via rpm.
4. Switched from remote GitHub flakes to local-flake execution:
- Wrapper now executes: nix run /usr/lib/package-manager#pkgmgr
- Avoids lock-file write attempts and improves reliability in CI.
5. Added bash -i based integration test:
- Correctly sources ~/.bashrc and evaluates alias + venv activation.
- ‘pkgmgr --help’ is now printed for debugging without failing tests.
6. Updated unit tests across all installers:
- Removed references to manifest installer.
- Adjusted expectations for new behaviors (makepkg, dpkg-buildpackage, rpmbuild).
- Added capability subsystem tests.
7. Improved flake.nix packaging logic:
- The entire project source tree is copied into the runtime closure.
- pkgmgr wrapper now executes runpy inside the packaged directory.
Together, these changes create a predictable, layered, capability-driven installer pipeline with consistent behavior across Arch, Debian, RPM, Nix, and Python layers.
2025-12-07 20:36:39 +01:00
|
|
|
|
# Remove packaging-only and development artefacts from the installed tree
|
|
|
|
|
|
rm -rf \
|
2025-12-09 05:50:08 +01:00
|
|
|
|
%{buildroot}/usr/lib/package-manager/PKGBUILD \
|
|
|
|
|
|
%{buildroot}/usr/lib/package-manager/Dockerfile \
|
|
|
|
|
|
%{buildroot}/usr/lib/package-manager/debian \
|
|
|
|
|
|
%{buildroot}/usr/lib/package-manager/.git \
|
|
|
|
|
|
%{buildroot}/usr/lib/package-manager/.github \
|
|
|
|
|
|
%{buildroot}/usr/lib/package-manager/tests \
|
|
|
|
|
|
%{buildroot}/usr/lib/package-manager/.gitignore \
|
|
|
|
|
|
%{buildroot}/usr/lib/package-manager/__pycache__ \
|
|
|
|
|
|
%{buildroot}/usr/lib/package-manager/.gitkeep || true
|
Refactor pkgmgr installers, introduce capability-based execution, and replace manifest layer
References:
- Current ChatGPT conversation: https://chatgpt.com/share/6935d6d7-0ae4-800f-988a-44a50c17ba48
- Extended discussion: https://chatgpt.com/share/6935d734-fd84-800f-9755-290902b8cee8
Summary:
This commit performs a major cleanup and modernization of the installation pipeline:
1. Introduced a new capability-detection subsystem:
- Capabilities (python-runtime, make-install, nix-flake) are detected per installer/layer.
- Installers run only when they add new capabilities.
- Prevents duplicated work such as Python installers running when Nix already provides the runtime.
2. Removed deprecated pkgmgr.yml manifest installer:
- Dependency resolution is now delegated entirely to real package managers (Nix, pip, make, distro build tools).
- Simplifies layering and avoids unnecessary recursion.
3. Reworked OS-specific installers:
- Arch PKGBUILD now uses 'makepkg --syncdeps --cleanbuild --install --noconfirm'.
- Debian installer now builds proper .deb packages via dpkg-buildpackage + installs them.
- RPM installer now builds packages using rpmbuild and installs them via rpm.
4. Switched from remote GitHub flakes to local-flake execution:
- Wrapper now executes: nix run /usr/lib/package-manager#pkgmgr
- Avoids lock-file write attempts and improves reliability in CI.
5. Added bash -i based integration test:
- Correctly sources ~/.bashrc and evaluates alias + venv activation.
- ‘pkgmgr --help’ is now printed for debugging without failing tests.
6. Updated unit tests across all installers:
- Removed references to manifest installer.
- Adjusted expectations for new behaviors (makepkg, dpkg-buildpackage, rpmbuild).
- Added capability subsystem tests.
7. Improved flake.nix packaging logic:
- The entire project source tree is copied into the runtime closure.
- pkgmgr wrapper now executes runpy inside the packaged directory.
Together, these changes create a predictable, layered, capability-driven installer pipeline with consistent behavior across Arch, Debian, RPM, Nix, and Python layers.
2025-12-07 20:36:39 +01:00
|
|
|
|
|
2025-12-06 19:32:31 +01:00
|
|
|
|
%post
|
2025-12-12 20:47:31 +01:00
|
|
|
|
/usr/lib/package-manager/nix/init.sh || echo ">>> ERROR: /usr/lib/package-manager/nix/init.sh not found or not executable."
|
2025-12-06 19:32:31 +01:00
|
|
|
|
|
|
|
|
|
|
%postun
|
|
|
|
|
|
echo ">>> package-manager removed. Nix itself was not removed."
|
|
|
|
|
|
|
|
|
|
|
|
%files
|
|
|
|
|
|
%doc README.md
|
|
|
|
|
|
%license LICENSE
|
|
|
|
|
|
%{_bindir}/pkgmgr
|
2025-12-09 05:50:08 +01:00
|
|
|
|
/usr/lib/package-manager/
|
2025-12-06 19:32:31 +01:00
|
|
|
|
|
|
|
|
|
|
%changelog
|
2025-12-14 13:39:52 +01:00
|
|
|
|
* Sun Dec 14 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 1.6.3-1
|
|
|
|
|
|
- ***Fixed:*** Corrected repository path resolution so release and version logic consistently use the canonical packaging/* layout, preventing changelog and packaging files from being read or updated from incorrect locations.
|
|
|
|
|
|
|
2025-12-10 22:56:04 +01:00
|
|
|
|
* Wed Dec 10 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.9.1-1
|
|
|
|
|
|
- * Refactored installer: new `venv-create.sh`, cleaner root/user setup flow, updated README with architecture map.
|
|
|
|
|
|
* Split virgin tests into root/user workflows; stabilized Nix installer across distros; improved test scripts with dynamic distro selection and isolated Nix stores.
|
|
|
|
|
|
* Fixed repository directory resolution; improved `pkgmgr path` and `pkgmgr shell`; added full unit/E2E coverage.
|
|
|
|
|
|
* Removed deprecated files and updated `.gitignore`.
|
|
|
|
|
|
|
2025-12-10 18:38:10 +01:00
|
|
|
|
* Wed Dec 10 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.9.0-1
|
|
|
|
|
|
- Introduce a virgin Arch-based Nix flake E2E workflow that validates pkgmgr’s full flake installation path using shared caches for faster and reproducible CI runs.
|
|
|
|
|
|
|
2025-12-10 17:32:00 +01:00
|
|
|
|
* Wed Dec 10 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.8.0-1
|
|
|
|
|
|
- **v0.7.15 — Installer & Command Resolution Improvements**
|
|
|
|
|
|
|
|
|
|
|
|
* Introduced a unified **layer-based installer pipeline** with clear precedence (OS-packages, Nix, Python, Makefile).
|
|
|
|
|
|
* Reworked installer structure and improved Python/Nix/Makefile installers, including isolated Python venvs and refined flake-output handling.
|
|
|
|
|
|
* Fully rewrote **command resolution** with stronger typing, safer fallbacks, and explicit support for `command: null` to mark library-only repositories.
|
|
|
|
|
|
* Added extensive **unit and integration tests** for installer capability ordering, command resolution, and Nix/Python installer behavior.
|
|
|
|
|
|
* Expanded documentation with capability hierarchy diagrams and scenario matrices.
|
|
|
|
|
|
* Removed deprecated repository entries and obsolete configuration files.
|
|
|
|
|
|
|
2025-12-10 10:38:36 +01:00
|
|
|
|
* Wed Dec 10 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.14-1
|
|
|
|
|
|
- Fixed the clone-all integration test so that `SystemExit(0)` from the proxy is treated as a successful command instead of a failure.
|
|
|
|
|
|
|
2025-12-10 10:27:27 +01:00
|
|
|
|
* Wed Dec 10 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.13-1
|
|
|
|
|
|
- Automated release.
|
|
|
|
|
|
|
2025-12-09 23:36:38 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.12-1
|
|
|
|
|
|
- Fixed self refering alias during setup
|
|
|
|
|
|
|
2025-12-09 23:16:48 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.11-1
|
|
|
|
|
|
- test: fix installer unit tests for OS packages and Nix dev shell
|
|
|
|
|
|
|
2025-12-09 22:57:11 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.10-1
|
|
|
|
|
|
- Fixed test_install_pkgmgr_shallow.py
|
|
|
|
|
|
|
2025-12-09 21:19:13 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.9-1
|
|
|
|
|
|
- 'main' and 'master' are now both accepted as branches for branch close merge
|
|
|
|
|
|
|
2025-12-09 21:03:24 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.8-1
|
|
|
|
|
|
- Missing pyproject.toml doesn't lead to an error during release
|
|
|
|
|
|
|
2025-12-09 17:54:41 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.7-1
|
|
|
|
|
|
- Added TEST_PATTERN parameter to execute dedicated tests
|
|
|
|
|
|
|
2025-12-09 17:14:22 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.6-1
|
|
|
|
|
|
- Fixed pull --preview bug in e2e test
|
|
|
|
|
|
|
2025-12-09 16:45:45 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.5-1
|
|
|
|
|
|
- Fixed wrong directory permissions for nix
|
|
|
|
|
|
|
2025-12-09 16:22:03 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.4-1
|
|
|
|
|
|
- Fixed missing build in test workflow -> Tests pass now
|
|
|
|
|
|
|
2025-12-09 16:08:34 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.3-1
|
|
|
|
|
|
- Fixed bug: Ignored packages are now ignored
|
|
|
|
|
|
|
2025-12-09 15:49:01 +01:00
|
|
|
|
* Tue Dec 09 2025 Kevin Veen-Birkenbach <kevin@veen.world> - 0.7.2-1
|
|
|
|
|
|
- Implemented Changelog Support for Fedora and Debian
|
|
|
|
|
|
|
2025-12-06 19:32:31 +01:00
|
|
|
|
* Sat Dec 06 2025 Kevin Veen-Birkenbach <info@veen.world> - 0.1.1-1
|
|
|
|
|
|
- Initial RPM packaging for package-manager
|