diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index d9f9481..47386f8 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,21 @@ /chkconfig-1.8.tar.bz2 /chkconfig-1.9.tar.gz /chkconfig-1.10.tar.gz +/chkconfig-1.11.tar.gz +/chkconfig-1.14.tar.gz +/chkconfig-1.15.tar.gz +/chkconfig-1.18.tar.gz +/chkconfig-1.19.tar.gz +/chkconfig-1.21.tar.gz +/chkconfig-1.22.tar.gz +/chkconfig-1.23.tar.gz +/chkconfig-1.24.tar.gz +/chkconfig-1.25.tar.gz +/chkconfig-1.26.tar.gz +/chkconfig-1.27.tar.gz +/chkconfig-1.28.tar.gz +/chkconfig-1.29.tar.gz +/chkconfig-1.30.tar.gz +/chkconfig-1.31.tar.gz +/chkconfig-1.32.tar.gz +/chkconfig-1.33.tar.gz diff --git a/0001-Ignore-alternatives-that-are-binary-identical-to-exi.patch b/0001-Ignore-alternatives-that-are-binary-identical-to-exi.patch new file mode 100644 index 0000000..4cfbccc --- /dev/null +++ b/0001-Ignore-alternatives-that-are-binary-identical-to-exi.patch @@ -0,0 +1,49 @@ +From 1cdf46d6c5d0fa094f46ecef7e4294144d956988 Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Fri, 24 Oct 2025 12:05:00 -0700 +Subject: [PATCH] Ignore alternatives that are binary-identical to existing + ones + +In https://bugzilla.redhat.com/show_bug.cgi?id=2363937 we found +a problem that is ultimately triggered by alternatives configs +having multiple entries that point to the same binary, or the +same *effective* binary after /usr and /sbin merges (which is +what streq_bin handles). I can't see a reason why we'd ever want +to support this as a real thing, so when reading the config, +let's just skip ingesting any alternative whose leader target is +the same effective binary as an alternative we've already read. + +Signed-off-by: Adam Williamson +--- + alternatives.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/alternatives.c b/alternatives.c +index 61a95ad..75d3a54 100644 +--- a/alternatives.c ++++ b/alternatives.c +@@ -520,6 +520,12 @@ static int readConfig(struct alternativeSet *set, const char *title, + newAlt.followers[i - 1].target = (line && strlen(line)) ? strsteal(&line) : NULL; + } + ++ for (i = 0; i < set->numAlts; i++) { ++ if (streq_bin(newAlt.leader.target, set->alts[i].leader.target)) { ++ goto nextalt; ++ } ++ } ++ + set->alts = realloc(set->alts, (set->numAlts + 1) * sizeof(*set->alts)); + set->alts[set->numAlts] = newAlt; + +@@ -527,7 +533,7 @@ static int readConfig(struct alternativeSet *set, const char *title, + set->best = set->numAlts; + + set->numAlts++; +- ++nextalt: + memset(&newAlt, 0, sizeof(struct alternative)); + + nextLine(&buf, &line); +-- +2.51.0 + diff --git a/chkconfig.spec b/chkconfig.spec index 62b94d8..97d30f8 100644 --- a/chkconfig.spec +++ b/chkconfig.spec @@ -1,24 +1,37 @@ Summary: A system tool for maintaining the /etc/rc*.d hierarchy Name: chkconfig -Version: 1.10 +Version: 1.33 Release: 3%{?dist} -License: GPLv2 -Group: System Environment/Base +License: GPL-2.0-only URL: https://github.com/fedora-sysv/chkconfig Source: https://github.com/fedora-sysv/chkconfig/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: newt-devel gettext popt-devel libselinux-devel + +# https://github.com/fedora-sysv/chkconfig/pull/157 +# https://bugzilla.redhat.com/show_bug.cgi?id=2363937 +# ignore 'duplicate' entries in config file (same effective binary) +# avoids issue where package install/update disables service +Patch: 0001-Ignore-alternatives-that-are-binary-identical-to-exi.patch + +BuildRequires: gcc gettext libselinux-devel make newt-devel popt-devel pkgconfig(systemd) +# beakerlib might not be available on CentOS Stream any more +%if 0%{?fedora} +BuildRequires: beakerlib +%endif + +%global merged_sbin %["%{_sbindir}" == "%{_bindir}"] + Conflicts: initscripts <= 5.30-1 +Provides: /sbin/chkconfig + %description Chkconfig is a basic system utility. It updates and queries runlevel information for system services. Chkconfig manipulates the numerous -symbolic links in /etc/rc.d, to relieve system administrators of some +symbolic links in /etc/rc.d, to relieve system administrators of some of the drudgery of manually editing the symbolic links. %package -n ntsysv Summary: A tool to set the stop/start of system services in a runlevel -Group: System Environment/Base Requires: chkconfig = %{version}-%{release} %description -n ntsysv @@ -28,18 +41,35 @@ manipulating the numerous symbolic links in /etc/rc.d). Unless you specify a runlevel or runlevels on the command line (see the man page), ntsysv configures the current runlevel (5 if you're using X). +%package -n alternatives +Summary: A tool to maintain symbolic links determining default commands +%if %{merged_sbin} +Provides: /usr/sbin/alternatives +Provides: /usr/sbin/update-alternatives +Requires: filesystem(unmerged-sbin-symlinks) +%endif + +%description -n alternatives +alternatives creates, removes, maintains and displays information about the +symbolic links comprising the alternatives system. It is possible for several +programs fulfilling the same or similar functions to be installed on a single +system at the same time. + %prep -%setup -q +%autosetup -p1 %build -make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" %{?_smp_mflags} +%make_build RPM_OPT_FLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" MERGED_SBIN=%{merged_sbin} +# tests are executed using tmt and tf on CentOS Stream and RHEL +%if 0%{?fedora} %check make check +%endif %install rm -rf $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir} SBINDIR=%{_sbindir} install +%make_install MANDIR=%{_mandir} SBINDIR=%{_sbindir} mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d ln -s rc.d/init.d $RPM_BUILD_ROOT/etc/init.d @@ -51,27 +81,18 @@ mkdir -p $RPM_BUILD_ROOT/etc/chkconfig.d %find_lang %{name} -%clean -rm -rf $RPM_BUILD_ROOT - %files -f %{name}.lang %defattr(-,root,root) %{!?_licensedir:%global license %%doc} %license COPYING -%dir /etc/alternatives -/sbin/chkconfig -%{_sbindir}/update-alternatives -%{_sbindir}/alternatives -/etc/chkconfig.d -/etc/init.d -/etc/rc.d -/etc/rc.d/init.d -/etc/rc[0-6].d -/etc/rc.d/rc[0-6].d -%dir /var/lib/alternatives +%{_sbindir}/chkconfig +%{_sysconfdir}/chkconfig.d +%{_sysconfdir}/init.d +%{_sysconfdir}/rc.d +%{_sysconfdir}/rc.d/init.d +%{_sysconfdir}/rc[0-6].d +%{_sysconfdir}/rc.d/rc[0-6].d %{_mandir}/*/chkconfig* -%{_mandir}/*/update-alternatives* -%{_mandir}/*/alternatives* %{_prefix}/lib/systemd/systemd-sysv-install %files -n ntsysv @@ -79,12 +100,251 @@ rm -rf $RPM_BUILD_ROOT %{_sbindir}/ntsysv %{_mandir}/*/ntsysv.8* -%changelog -* Wed Aug 02 2017 Fedora Release Engineering - 1.10-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild +%files -n alternatives +%license COPYING +%dir /etc/alternatives +%ghost %dir %attr(755, root, root) /etc/alternatives.admindir +%ghost %dir %attr(755, root, root) /var/lib/alternatives +%{_sbindir}/update-alternatives +%{_sbindir}/alternatives +%{_mandir}/*/update-alternatives* +%{_mandir}/*/alternatives* -* Wed Jul 26 2017 Fedora Release Engineering - 1.10-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild +%changelog +* Fri Oct 24 2025 Adam Williamson - 1.33-3 +- Backport PR #157 to fix MTA service disablement on package update (#2363937) + +* Wed Jul 23 2025 Fedora Release Engineering - 1.33-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri May 09 2025 Lukas Nykryn - 1.33-1 +- alternatives: ignore all bin/sbin differences on systems with merged bin/sbin + +* Thu Mar 13 2025 Jan Macku - 1.32-1 +- Allow paths with /usr/sbin and /usr/bin as equivalent +- mkosi: update conf to match latest mkosi version +- Translated using Weblate (Italian) + +* Sun Jan 12 2025 Zbigniew Jędrzejewski-Szmek - 1.31-2 +- Rebuilt for the bin-sbin merge (2nd attempt) + +* Wed Dec 18 2024 Jan Macku - 1.31-1 +- Translated using Weblate (Ukrainian) +- Translated using Weblate (Ukrainian) +- Translated using Weblate (French) +- Update translation files +- Translated using Weblate (Turkish) + +* Wed Aug 07 2024 Jan Macku - 1.30-1 +- ostree: move admindir to /etc/alternatives.admindir +- update po/chkconfig.pot + +* Tue Jul 30 2024 Jan Macku - 1.29-1 +- add basic mkosi config +- remove not used directory from makefile +- ntsysv: fix leaks +- leveldb: security_context_t is deprecated +- leveldb: fix leak +- leveldb: fix leak +- leveldb: fix leak +- leveldb: fix leak +- leveldb: fix leak +- chkconfig: fix leak +- chkconfig: fix leak +- chkconfig: fix memory leak when deleting a service +- leveldb: add destructors for service +- leveldb: fix memory leak +- leveldb.c: fix memory leak +- chkconfig: fix leak +- leveldb: fix memory leak +- alternatives: ensure the current alt. is freed if parsing fails +- alternatives: ensure the current group is freed +- Translated using Weblate (English (United Kingdom)) +- Translated using Weblate (Turkish) + +* Fri Jun 21 2024 Jan Macku - 1.28-1 +- Prepare for bin-sbin merge +- tests: fix integration with github actions + +* Tue May 14 2024 Jan Macku - 1.27-1 +- alternatives: properly handle chars with const in normalize_path +- alternatives: use exit in main instead of return for critical failures +- alternatives: fix leak +- alternatives: fix leak +- alternatives: fix possible overrun +- alternatives: fix all the leaks of groups in readConfig +- alternatives: fix all the leaks of read line in readConfig +- alternatives: fix leak +- alternatives: fix memory leak +- alternatives: fix memory leak +- alternatives: initialize parameters in main to NULL +- alternatives: fix memory leak +- Translated using Weblate (Korean) +- Translated using Weblate (English (United Kingdom)) +- Translated using Weblate (Finnish) +- Translated using Weblate (Finnish) +- Translated using Weblate (Japanese) +- Translated using Weblate (Swedish) +- Translated using Weblate (Japanese) +- Translated using Weblate (Polish) +- Translated using Weblate (Korean) +- Translated using Weblate (Georgian) +- Update translation files +- Translated using Weblate (Japanese) +- Fix systemd dependency + +* Wed Jan 17 2024 Jan Macku - 1.26-1 +- fix(test): dot't call `basename` with empty string +- spec: sort BuildRequires alphabetically +- fix(test): remove dangling `rlPhase` fn call +- ci: run tests using Packit and Testing Farm +- build: update `.pot` file +- ci: fix typo in test workflow +- test: add support for running using tmt +- Translated using Weblate (Czech) +- Translated using Weblate (Punjabi) +- build(deps): bump actions/upload-artifact from 3 to 4 +- build(deps): bump github/codeql-action from 2 to 3 +- leveldb: fix systemdActive() +- build(deps): bump redhat-plumbers-in-action/differential-shellcheck +- Translated using Weblate (Hungarian) +- build(deps): bump actions/checkout from 3 to 4 + +* Wed Aug 02 2023 Jan Macku - 1.25-1 +- alternatives: fix possible buffer overrun +- Translated using Weblate (Korean) +- Translated using Weblate (Chinese (Simplified) (zh_CN)) + +* Thu May 04 2023 Jan Macku - 1.24-1 +- ci: fix `NEXT_VERSION` in Makefile +- revert: releng: Enable Packit to handle Fedora updates +- revert: releng: Convert to rpmautospec + +* Thu May 04 2023 Jan Macku - 1.23-1 +- Translated using Weblate (Korean) +- Translated using Weblate (English (United Kingdom)) +- alternatives: --keep-foreign incorrectly handles non-existent files +- alternatives: isLink should return 0 in case of lstat error +- Translated using Weblate (Swedish) +- Translated using Weblate (Korean) +- Translated using Weblate (Georgian) +- Translated using Weblate (Finnish) +- Translated using Weblate (Ukrainian) +- Translated using Weblate (Polish) +- Update translation files +- Translated using Weblate (German) +- doc: update translations +- spec: remote changelog + +* Thu Mar 23 2023 Jan Macku - 1.22-1 +- migrate to SPDX license +- Translated using Weblate (English (United Kingdom)) +- Translated using Weblate (Japanese) +- ci: Add locale linter +- ci: update workflows +- test: fix ShellCheck error[SC2070] +- Bump redhat-plumbers-in-action/differential-shellcheck from 3 to 4 (#94) +- releng: Packit remove extra job trigger +- releng: Enable Packit to handle Fedora updates +- releng: Convert to rpmautospec + +* Wed Oct 05 2022 Jan Macku - 1.21-1 +- ci: Add CodeQL to replace LGTM +- alternatives: replace master/slave with leader/follower +- chkconfig: use correct cmp function +- Bump redhat-plumbers-in-action/differential-shellcheck from 2 to 3 +- ci: Add Shell linter - Differential ShellCheck +- ci: Use more inclusive terminology in workflows +- ci: Update workflows, packit and dependabot +- Translated using Weblate (Friulian) +- Translated using Weblate (Swedish) +- Translated using Weblate (Estonian) +- Translated using Weblate (Georgian) +- Translated using Weblate (Polish) +- Translated using Weblate (Korean) +- Translated using Weblate (Czech) +- Translations update from Fedora Weblate (#77) +- Translations update from Fedora Weblate (#75) +- Translations update from Fedora Weblate (#74) +- Translations update from Fedora Weblate (#73) +- Translated using Weblate (Ukrainian) +- Update translation files +- Family mentioned for --set in both man and help +- Translated using Weblate (French) +- build-sys: Ensure `systemd-sysv-install` symlink does not have `//` +- Translated using Weblate (German) +- Add LGTM badges to README +- Merge remote-tracking branch 'weblate/master' +- Translated using Weblate (Indonesian) +- Translated using Weblate (Finnish) +- Translated using Weblate (Korean) +- Translated using Weblate (Ukrainian) +- Translated using Weblate (Turkish) +- Translated using Weblate (Polish) +- Translated using Weblate (Norwegian Nynorsk) +- Update translation files +- Translated using Weblate (Finnish) +- Translated using Weblate (Czech) +- Translated using Weblate (Swedish) +- Translated using Weblate (Italian) +- Translated using Weblate (Spanish) +- Translated using Weblate (Chinese (Simplified)) + +* Wed Jul 28 2021 Jan Macku - 1.20-1 +- spec: Replace not working awk command with sed (#62) + +* Fri Jul 23 2021 Jan Macku - 1.19-1 +- spec: Add Provides /sbin/chkconfig in order to stay backwards compatible (#60) + +* Fri Jul 23 2021 Jan Macku - 1.18-1 +- spec: /sbin/chkconfig -> /usr/sbin/chkconfig (#59) + +* Thu Jul 22 2021 Jan Macku - 1.17-1 +- alternatives: tweak manpage to match the real 'remove' behavior (#58) + +* Thu Jul 15 2021 Jan Macku - 1.16-1 +- alternatives: add --keep-foreign (#57) +- Translations update from Weblate +- ci: Onboard chkconfig to Packit +- zanata: remove zanata related stuff +- Use make macros +- alternatives: use one function for path cleaning +- CI: specify more closely when to run CI +- Add basic CI and README +- spec: sync specfile with Fedora + +* Thu Jan 21 2021 Jan Macku - 1.15-1 +- spec: sync specfile with Fedora +- makefile: Use rpmdev-bumpspec's legacy date option +- Add feature to generate specfile entry, commit and archive + +* Tue Jul 21 2020 Tom Stellard - 1.14-2 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Fri Jul 17 2020 Jan Macku - 1.14-1 +- Fix spelling of SELinux +- Remove hardcoded systemd path + +* Tue Apr 14 2020 Jan Macku - 1.13-1 +- fix typo in translations and fix bogus dates in changelog + +* Mon Apr 06 2020 Jan Macku - 1.12-1 +- alternatives setService(): Add missing error mesg - (#1820089) +- po: update translations +- rebase + +* Thu Mar 14 2019 Peter Robinson 1.11-4 +- Split out alternatives into it's own package + +* Mon Oct 08 2018 Lukas Nykryn - 1.11-2 +- add Provides: alternatives + +* Mon Sep 10 2018 Lukas Nykryn - 1.11-1 +- Add tests for --add/remove-slave and use beakerlib +- alternatives: add-slave and remove-slave +- leveldb: don't crash on long names +- alternatives: prettier --list output * Fri Apr 21 2017 Lukáš Nykrýn - 1.10-1 - Introduce --remove-all option @@ -260,7 +520,7 @@ rm -rf $RPM_BUILD_ROOT - translation updates: as, bg, bn_IN, bs, ca, de, fr, hi, hu, id, ja, ka, ml, ms, nb, or, sk, sl - add resetpriorities to the man page (#197399) - + * Tue Feb 6 2007 Bill Nottingham 1.3.33-1 - various changes from review - support alternate %%{_sbindir}, fix summaries, add version to requires, assorted other bits diff --git a/plans/public.fmf b/plans/public.fmf new file mode 100644 index 0000000..d8892fe --- /dev/null +++ b/plans/public.fmf @@ -0,0 +1,9 @@ +summary: Public (upstream) beakerlib tests + +discover: + - name: fedora + how: fmf + url: https://github.com/fedora-sysv/chkconfig.git + +execute: + how: tmt diff --git a/sources b/sources index bf06e4a..5ae2b15 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (chkconfig-1.10.tar.gz) = 933024f1a630c7b1e5d4488c5ddc9d65571b175c4f94dc5598d1b704e394a54cefa24914b390ac51290b430db45fe3e83db209883b5c6d65351ef491f22ba40f +SHA512 (chkconfig-1.33.tar.gz) = 82a7a5e7d62537843cd81fa0c29a0f481ff8fe2798e0143fc409c028f02f01585b6c5d60faf5ce4a4c6dea11c4bba766dbd28e29978447f56708def65421739d