Compare commits
No commits in common. "c8" and "c9-beta" have entirely different histories.
@ -1 +1 @@
|
||||
44374e1bde4f7d7db25ac1309ec713d9e1a73039 SOURCES/chkconfig-1.19.2.tar.gz
|
||||
d6c3ec1db4904cae5cf096891045b619cbfec629 SOURCES/chkconfig-1.24.tar.gz
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/chkconfig-1.19.2.tar.gz
|
||||
SOURCES/chkconfig-1.24.tar.gz
|
||||
|
||||
@ -0,0 +1,132 @@
|
||||
From 5352ca18294178c61c317ab9783c2183dc22aad1 Mon Sep 17 00:00:00 2001
|
||||
From: Valentin Rothberg <vrothberg@redhat.com>
|
||||
Date: Wed, 24 Jul 2024 11:07:41 +0200
|
||||
Subject: [PATCH] ostree: move admindir to /etc/alternatives.admindir
|
||||
|
||||
`ostree container commit` wipes /var and thereby erases the data in
|
||||
/var/lib/alternatives; the directory used to store configs/symlinks of
|
||||
alternatives.
|
||||
|
||||
/var is not a good place for storing such configs since it won't receive
|
||||
updates on bootc images either. We need to move to another location.
|
||||
|
||||
Hence, use /etc/alternatives.admindir when running on an ostree-based
|
||||
system unless /var/lib/alternatives is already present; a user may have
|
||||
worked around the problem. This way we enable alternatives to work on
|
||||
ostree-based systems without breaking backwards compat.
|
||||
|
||||
Fixes: #9
|
||||
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
|
||||
(cherry picked from commit 4224f51d0212318dd0fada3976e205e8189cf4b4)
|
||||
---
|
||||
Makefile | 1 -
|
||||
alternatives.8 | 2 ++
|
||||
alternatives.c | 34 ++++++++++++++++++++++++++++++----
|
||||
chkconfig.spec | 5 +++--
|
||||
4 files changed, 35 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 0e7abd8..ea1d8dc 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -55,7 +55,6 @@ install:
|
||||
[ -d $(DESTDIR)/$(SBINDIR) ] || mkdir -p $(DESTDIR)/$(SBINDIR)
|
||||
[ -d $(DESTDIR)/$(MANDIR) ] || mkdir -p $(DESTDIR)/$(MANDIR)
|
||||
[ -d $(DESTDIR)/$(MANDIR)/man8 ] || mkdir -p $(DESTDIR)/$(MANDIR)/man8
|
||||
- [ -d $(DESTDIR)/$(ALTDIR) ] || mkdir -p -m 755 $(DESTDIR)/$(ALTDIR)
|
||||
[ -d $(DESTDIR)/$(ALTDATADIR) ] || mkdir -p -m 755 $(DESTDIR)/$(ALTDATADIR)
|
||||
[ -d $(DESTDIR)/$(SYSTEMDUTILDIR) ] || mkdir -p -m 755 $(DESTDIR)/$(SYSTEMDUTILDIR)
|
||||
|
||||
diff --git a/alternatives.8 b/alternatives.8
|
||||
index d3bbf6b..a04785e 100644
|
||||
--- a/alternatives.8
|
||||
+++ b/alternatives.8
|
||||
@@ -214,6 +214,7 @@ A directory, by default
|
||||
containing
|
||||
.BR alternatives '
|
||||
state information.
|
||||
+/etc/alternatives.admindir on OSTree-based systems.
|
||||
.TP
|
||||
link group
|
||||
A set of related symlinks, intended to be updated as a group.
|
||||
@@ -416,6 +417,7 @@ option.
|
||||
.TP
|
||||
.I /var/lib/alternatives/
|
||||
The default administration directory.
|
||||
+/etc/alternatives.admindir on OSTree-based systems.
|
||||
Can be overridden by the
|
||||
.B --admindir
|
||||
option.
|
||||
diff --git a/alternatives.c b/alternatives.c
|
||||
index a2d3750..5ba6c87 100644
|
||||
--- a/alternatives.c
|
||||
+++ b/alternatives.c
|
||||
@@ -496,6 +496,15 @@ static int fileExists(char *path) {
|
||||
return !stat(path, &sbuf);
|
||||
}
|
||||
|
||||
+static int dirExists(char *path) {
|
||||
+ struct stat sbuf;
|
||||
+
|
||||
+ if (stat(path, &sbuf))
|
||||
+ return 0;
|
||||
+
|
||||
+ return !!S_ISDIR(sbuf.st_mode);
|
||||
+}
|
||||
+
|
||||
static int facilityBelongsToUs(char *facility, const char *altDir) {
|
||||
char buf[PATH_MAX];
|
||||
if (readlink(facility, buf, sizeof(buf)) <= 0)
|
||||
@@ -1248,6 +1257,10 @@ static int listServices(const char *altDir, const char *stateDir, int flags) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int isOSTree() {
|
||||
+ return fileExists("/run/ostree-booted") || isLink("/ostree");
|
||||
+}
|
||||
+
|
||||
int main(int argc, const char **argv) {
|
||||
const char **nextArg;
|
||||
char *end;
|
||||
@@ -1256,8 +1269,7 @@ int main(int argc, const char **argv) {
|
||||
struct alternative newAlt = {-1, {NULL, NULL, NULL}, NULL, NULL, 0, NULL};
|
||||
int flags = 0;
|
||||
char *altDir = "/etc/alternatives";
|
||||
- char *stateDir = "/var/lib/alternatives";
|
||||
- struct stat sb;
|
||||
+ char *stateDir= NULL;
|
||||
struct linkSet newSet = {NULL, NULL, NULL};
|
||||
|
||||
setlocale(LC_ALL, "");
|
||||
@@ -1379,12 +1391,26 @@ int main(int argc, const char **argv) {
|
||||
}
|
||||
}
|
||||
|
||||
- if (stat(altDir, &sb) || !S_ISDIR(sb.st_mode) || access(altDir, F_OK)) {
|
||||
+ if (!dirExists(altDir)) {
|
||||
fprintf(stderr, _("altdir %s invalid\n"), altDir);
|
||||
return (2);
|
||||
}
|
||||
|
||||
- if (stat(stateDir, &sb) || !S_ISDIR(sb.st_mode) || access(stateDir, F_OK)) {
|
||||
+ // if the stateDir is not explicitly set, we will use /var/lib/alternatives on normal systems
|
||||
+ // and /etc/alternatives-admindir on OSTree systems, if the dir does not exist, we will create it
|
||||
+ // if the stateDir is explicitly set, we will *not* try to create the dir and fail immediately if it does not exist
|
||||
+ if (!stateDir) {
|
||||
+ stateDir = "/var/lib/alternatives";
|
||||
+ if (!dirExists(stateDir)) {
|
||||
+ if (isOSTree())
|
||||
+ stateDir = "/etc/alternatives-admindir";
|
||||
+
|
||||
+ if (mkdir(stateDir, 0755) < 0 && errno != EEXIST) {
|
||||
+ fprintf(stderr, _("failed to create admindir: %s\n"), strerror(errno));
|
||||
+ exit(2);
|
||||
+ }
|
||||
+ }
|
||||
+ } else if (!dirExists(stateDir)) {
|
||||
fprintf(stderr, _("admindir %s invalid\n"), stateDir);
|
||||
return (2);
|
||||
}
|
||||
--
|
||||
2.46.0
|
||||
|
||||
@ -1,20 +1,22 @@
|
||||
Summary: A system tool for maintaining the /etc/rc*.d hierarchy
|
||||
Name: chkconfig
|
||||
Version: 1.19.2
|
||||
Release: 1%{?dist}
|
||||
License: GPLv2
|
||||
Version: 1.24
|
||||
Release: 2%{?dist}
|
||||
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
|
||||
|
||||
Patch001: 001-ostree-move-admindir-to-etc-alternatives.admindir.patch
|
||||
|
||||
BuildRequires: newt-devel gettext popt-devel libselinux-devel beakerlib gcc systemd-devel make
|
||||
Conflicts: initscripts <= 5.30-1
|
||||
|
||||
Provides: /sbin/chkconfig
|
||||
Provides: alternatives = %{version}-%{release}
|
||||
|
||||
%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
|
||||
@ -28,8 +30,17 @@ 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
|
||||
|
||||
%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
|
||||
|
||||
%build
|
||||
%make_build RPM_OPT_FLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS"
|
||||
@ -55,20 +66,14 @@ mkdir -p $RPM_BUILD_ROOT/etc/chkconfig.d
|
||||
%defattr(-,root,root)
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING
|
||||
%dir /etc/alternatives
|
||||
%{_sbindir}/chkconfig
|
||||
%{_sbindir}/update-alternatives
|
||||
%{_sbindir}/alternatives
|
||||
%{_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
|
||||
%dir /var/lib/alternatives
|
||||
%{_mandir}/*/chkconfig*
|
||||
%{_mandir}/*/update-alternatives*
|
||||
%{_mandir}/*/alternatives*
|
||||
%{_prefix}/lib/systemd/systemd-sysv-install
|
||||
|
||||
%files -n ntsysv
|
||||
@ -76,14 +81,97 @@ mkdir -p $RPM_BUILD_ROOT/etc/chkconfig.d
|
||||
%{_sbindir}/ntsysv
|
||||
%{_mandir}/*/ntsysv.8*
|
||||
|
||||
%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*
|
||||
|
||||
%changelog
|
||||
* Mon May 15 2023 Jan Macku <jamacku@redhat.com> - 1.19.2-1
|
||||
* Wed Sep 04 2024 Jan Macku <jamacku@redhat.com> - 1.24-2
|
||||
- ostree: move admindir to /etc/alternatives.admindir (RHEL-57665)
|
||||
|
||||
* Thu May 04 2023 Jan Macku <jamacku@redhat.com> - 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 <jamacku@redhat.com> - 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
|
||||
- spec: Replace not working awk command with sed (#63)
|
||||
- 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
|
||||
|
||||
* Tue Jul 27 2021 Jan Macku <jamacku@redhat.com> - 1.19.1-1
|
||||
- spec: Revert changes introduced in Fedora (#61)
|
||||
* Thu Mar 23 2023 Jan Macku <jamacku@redhat.com> - 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 <jamacku@redhat.com> - 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 <jamacku@redhat.com> - 1.20-1
|
||||
- spec: Replace not working awk command with sed (#62)
|
||||
|
||||
* Fri Jul 23 2021 Jan Macku <jamacku@redhat.com> - 1.19-1
|
||||
- spec: Add Provides /sbin/chkconfig in order to stay backwards compatible (#60)
|
||||
@ -118,9 +206,6 @@ mkdir -p $RPM_BUILD_ROOT/etc/chkconfig.d
|
||||
- Fix spelling of SELinux
|
||||
- Remove hardcoded systemd path
|
||||
|
||||
* Fri Apr 17 2020 Jan Macku <jamacku@redhat.com> - 1.13-2
|
||||
- Package onboarded to gating
|
||||
|
||||
* Tue Apr 14 2020 Jan Macku <jamacku@redhat.com> - 1.13-1
|
||||
- fix typo in translations and fix bogus dates in changelog
|
||||
|
||||
@ -315,7 +400,7 @@ mkdir -p $RPM_BUILD_ROOT/etc/chkconfig.d
|
||||
- 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 <notting@redhat.com> 1.3.33-1
|
||||
- various changes from review - support alternate %%{_sbindir}, fix
|
||||
summaries, add version to requires, assorted other bits
|
||||
|
||||
Loading…
Reference in New Issue
Block a user