Compare commits

...

No commits in common. 'c9' and 'i8c-beta' have entirely different histories.
c9 ... i8c-beta

@ -0,0 +1,308 @@
From acc0021a9490ae4964c08a6839308efa2709f926 Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Tue, 16 Jan 2024 11:01:01 -0600
Subject: [PATCH] wdmd: adjust values for iTCO_wdt
iTCO_wdt does not fire until two successive timeouts, so the
values for set/get need to be adjusted by a factor or 2 to
make the watchdog fire at the correct time.
---
wdmd/main.c | 162 ++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 139 insertions(+), 23 deletions(-)
diff --git a/wdmd/main.c b/wdmd/main.c
index aebacbea1ead..de54e6ddcdf1 100644
--- a/wdmd/main.c
+++ b/wdmd/main.c
@@ -31,6 +31,7 @@
#include <sys/un.h>
#include <sys/stat.h>
#include <sys/mman.h>
+#include <sys/time.h>
#include <sys/signalfd.h>
#include <linux/watchdog.h>
@@ -55,6 +56,7 @@
#define DEFAULT_SOCKET_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP)
#define WDPATH_SIZE 64
+#define WD_ID_SIZE 64
static int test_interval = DEFAULT_TEST_INTERVAL;
static int fire_timeout = DEFAULT_FIRE_TIMEOUT;
@@ -68,6 +70,8 @@ static time_t last_closeunclean;
static char lockfile_path[PATH_MAX];
static int dev_fd = -1;
static int shm_fd;
+static int forcefire;
+static int itco; /* watchdog_identity is "iTCO_wdt" */
static int allow_scripts;
static int kill_script_sec;
@@ -75,6 +79,7 @@ static const char *scripts_dir = "/etc/wdmd.d";
static char watchdog_path[WDPATH_SIZE];
static char option_path[WDPATH_SIZE];
static char saved_path[WDPATH_SIZE];
+static char watchdog_identity[WD_ID_SIZE];
struct script_status {
uint64_t start;
@@ -141,6 +146,19 @@ static uint64_t monotime(void)
return ts.tv_sec;
}
+char time_str_buf[128];
+
+static char *time_str(void)
+{
+ struct timeval cur_time;
+ struct tm time_info;
+
+ gettimeofday(&cur_time, NULL);
+ localtime_r(&cur_time.tv_sec, &time_info);
+ strftime(time_str_buf, sizeof(time_str_buf), "%Y-%m-%d %H:%M:%S ", &time_info);
+ return time_str_buf;
+}
+
/*
* test clients
*/
@@ -979,6 +997,49 @@ static void close_watchdog(void)
dev_fd = -1;
}
+static int setup_identity(char *wdpath)
+{
+ char sysfs_path[PATH_MAX] = { 0 };
+ char *base, *p;
+ int fd, rv;
+
+ /*
+ * This function will be called multiple times when probing
+ * different watchdog paths for one that works.
+ */
+ itco = 0;
+ memset(watchdog_identity, 0, sizeof(watchdog_identity));
+
+ /*
+ * $ cat /sys/class/watchdog/watchdog0/identity
+ * iTCO_wdt
+ */
+ if (!(base = basename(wdpath)))
+ return -1;
+
+ snprintf(sysfs_path, PATH_MAX-1, "/sys/class/watchdog/%s/identity", base);
+
+ if ((fd = open(sysfs_path, O_RDONLY)) < 0)
+ return -1;
+
+ rv = read(fd, watchdog_identity, WD_ID_SIZE-1);
+
+ close(fd);
+
+ if (rv <= 0)
+ return -1;
+
+ if ((p = strchr(watchdog_identity, '\n')))
+ *p = '\0';
+
+ log_debug("%s %s %s", wdpath, sysfs_path, watchdog_identity);
+
+ if (!strcmp(watchdog_identity, "iTCO_wdt"))
+ itco = 1;
+
+ return 0;
+}
+
static int _setup_watchdog(char *path)
{
struct stat buf;
@@ -991,6 +1052,8 @@ static int _setup_watchdog(char *path)
if (rv < 0)
return -1;
+ setup_identity(path); /* Sets watchdog_identity and itco */
+
rv = open_dev();
if (rv < 0)
return -1;
@@ -1004,10 +1067,15 @@ static int _setup_watchdog(char *path)
return -1;
}
- if (timeout == fire_timeout)
- goto out;
-
- timeout = fire_timeout;
+ if (itco) {
+ if ((2 * timeout) == fire_timeout)
+ goto out;
+ timeout = fire_timeout / 2;
+ } else {
+ if (timeout == fire_timeout)
+ goto out;
+ timeout = fire_timeout;
+ }
rv = ioctl(dev_fd, WDIOC_SETTIMEOUT, &timeout);
if (rv < 0) {
@@ -1016,13 +1084,20 @@ static int _setup_watchdog(char *path)
return -1;
}
- if (timeout != fire_timeout) {
- log_error("%s failed to set new timeout", watchdog_path);
- close_watchdog();
- return -1;
+ if (itco) {
+ if ((2 * timeout) != fire_timeout) {
+ log_error("%s failed to set new timeout", watchdog_path);
+ close_watchdog();
+ return -1;
+ }
+ } else {
+ if (timeout != fire_timeout) {
+ log_error("%s failed to set new timeout", watchdog_path);
+ close_watchdog();
+ return -1;
+ }
}
out:
- log_error("%s armed with fire_timeout %d", watchdog_path, fire_timeout);
/* TODO: save watchdog_path in /run/wdmd/saved_path,
* and in startup read that file, copying it to saved_path */
@@ -1102,6 +1177,8 @@ static int probe_dev(const char *path)
return -1;
}
+ setup_identity((char *)path); /* Sets watchdog_identity and itco */
+
fd = open(path, O_WRONLY | O_CLOEXEC);
if (fd < 0) {
fprintf(stderr, "error %d open %s\n", errno, path);
@@ -1117,14 +1194,22 @@ static int probe_dev(const char *path)
goto out;
}
- if (timeout == fire_timeout) {
- printf("%s\n", path);
- rv = 0;
- goto out;
+ if (itco) {
+ if ((2 * timeout) == fire_timeout) {
+ printf("%s\n", path);
+ rv = 0;
+ goto out;
+ }
+ timeout = fire_timeout / 2;
+ } else {
+ if (timeout == fire_timeout) {
+ printf("%s\n", path);
+ rv = 0;
+ goto out;
+ }
+ timeout = fire_timeout;
}
- timeout = fire_timeout;
-
rv = ioctl(fd, WDIOC_SETTIMEOUT, &timeout);
if (rv < 0) {
fprintf(stderr, "error %d ioctl settimeout %s\n", errno, path);
@@ -1132,10 +1217,18 @@ static int probe_dev(const char *path)
goto out;
}
- if (timeout != fire_timeout) {
- fprintf(stderr, "error %d invalid timeout %s\n", errno, path);
- rv = -1;
- goto out;
+ if (itco) {
+ if ((2 * timeout) != fire_timeout) {
+ fprintf(stderr, "error %d invalid timeout %s\n", errno, path);
+ rv = -1;
+ goto out;
+ }
+ } else {
+ if (timeout != fire_timeout) {
+ fprintf(stderr, "error %d invalid timeout %s\n", errno, path);
+ rv = -1;
+ goto out;
+ }
}
printf("%s\n", path);
@@ -1518,6 +1611,7 @@ static void print_usage_and_exit(int status)
printf("--dump, -d print debug from daemon\n");
printf("--probe, -p print path of functional watchdog device\n");
printf("-D debug: no fork and print all logging to stderr\n");
+ printf("-F force watchdog reset for testing (use with -D)\n");
printf("-H 0|1 use high priority features (1 yes, 0 no, default %d)\n",
DEFAULT_HIGH_PRIORITY);
printf("-G <name> group ownership for the socket\n");
@@ -1556,11 +1650,12 @@ int main(int argc, char *argv[])
{"help", no_argument, 0, 'h' },
{"probe", no_argument, 0, 'p' },
{"dump", no_argument, 0, 'd' },
+ {"forcefire", no_argument, 0, 'F' },
{"version", no_argument, 0, 'V' },
{0, 0, 0, 0 }
};
- c = getopt_long(argc, argv, "hpdVDH:G:S:s:k:w:",
+ c = getopt_long(argc, argv, "hpdVDFH:G:S:s:k:w:",
long_options, &option_index);
if (c == -1)
break;
@@ -1581,6 +1676,9 @@ int main(int argc, char *argv[])
case 'D':
daemon_debug = 1;
break;
+ case 'F':
+ forcefire = 1;
+ break;
case 'G':
socket_gname = strdup(optarg);
break;
@@ -1633,9 +1731,6 @@ int main(int argc, char *argv[])
openlog("wdmd", LOG_CONS | LOG_PID, LOG_DAEMON);
- log_error("wdmd started S%d H%d G%d", allow_scripts, high_priority,
- socket_gid);
-
setup_priority();
rv = lockfile();
@@ -1666,6 +1761,27 @@ int main(int argc, char *argv[])
if (rv < 0)
goto out_clients;
+ log_error("wdmd started S%d H%d G%d using %s \"%s\"", allow_scripts, high_priority,
+ socket_gid, watchdog_path, watchdog_identity[0] ? watchdog_identity : "unknown");
+ log_error("%s armed with fire_timeout %d", watchdog_path, fire_timeout);
+
+ if (daemon_debug && forcefire) {
+ int sleep_sec = 0;
+ int i;
+ setbuf(stdout, NULL);
+ printf("%s waiting for watchdog to reset machine:\n", time_str());
+ for (i = 1; i < fire_timeout + 5; i++) {
+ sleep(1);
+ sleep_sec++;
+ if (sleep_sec >= fire_timeout+1)
+ printf("%s %d %s failed to fire after timeout %d seconds\n", time_str(), i, watchdog_path, fire_timeout);
+ else
+ printf("%s %d\n", time_str(), i);
+ }
+ close_watchdog();
+ return -1;
+ }
+
rv = test_loop();
close_watchdog();
--
2.43.0

@ -1,8 +1,9 @@
Name: sanlock Name: sanlock
Version: 3.8.4 Version: 3.8.4
Release: 4%{?dist} Release: 5%{?dist}
Summary: A shared storage lock manager Summary: A shared storage lock manager
Group: System Environment/Base
License: GPLv2 and GPLv2+ and LGPLv2+ License: GPLv2 and GPLv2+ and LGPLv2+
URL: https://pagure.io/sanlock/ URL: https://pagure.io/sanlock/
BuildRequires: gcc BuildRequires: gcc
@ -22,28 +23,32 @@ Requires(preun): systemd-units
Requires(postun): systemd-units Requires(postun): systemd-units
Source0: https://releases.pagure.org/sanlock/%{name}-%{version}.tar.gz Source0: https://releases.pagure.org/sanlock/%{name}-%{version}.tar.gz
Patch0: 0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch Patch1: 0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch
Patch1: 0002-sanlock-fix-pthread_create-error-check.patch Patch2: 0002-sanlock-fix-pthread_create-error-check.patch
Patch2: 0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch Patch3: 0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch
Patch3: 0004-sanlock-fix-pthread_create-error-paths.patch Patch4: 0004-sanlock-fix-pthread_create-error-paths.patch
Patch5: 0005-wdmd-adjust-values-for-iTCO_wdt.patch
%global python_package python3-%{name}
%description %description
The sanlock daemon manages leases for applications on hosts using shared storage. The sanlock daemon manages leases for applications on hosts using shared storage.
%prep %prep
%setup -q %setup -q
%patch0 -p1 -b .backup0
%patch1 -p1 -b .backup1 %patch1 -p1 -b .backup1
%patch2 -p1 -b .backup2 %patch2 -p1 -b .backup2
%patch3 -p1 -b .backup3 %patch3 -p1 -b .backup3
%patch4 -p1 -b .backup4
%patch5 -p1 -b .backup5
%build %build
%set_build_flags
# upstream does not require configure # upstream does not require configure
# upstream does not support _smp_mflags # upstream does not support _smp_mflags
CFLAGS=$RPM_OPT_FLAGS make -C wdmd CFLAGS=$RPM_OPT_FLAGS make -C wdmd
CFLAGS=$RPM_OPT_FLAGS make -C src CFLAGS=$RPM_OPT_FLAGS make -C src
CFLAGS=$RPM_OPT_FLAGS make -C python PY_VERSION=3 CFLAGS=$RPM_OPT_FLAGS make -C python PY_VERSION=3.6
CFLAGS=$RPM_OPT_FLAGS make -C reset
%install %install
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
@ -56,12 +61,16 @@ make -C wdmd \
make -C python \ make -C python \
install LIBDIR=%{_libdir} \ install LIBDIR=%{_libdir} \
DESTDIR=$RPM_BUILD_ROOT \ DESTDIR=$RPM_BUILD_ROOT \
PY_VERSION=3 PY_VERSION=3.6
make -C reset \
install LIBDIR=%{_libdir} \
DESTDIR=$RPM_BUILD_ROOT
install -D -m 0644 init.d/sanlock.service.native $RPM_BUILD_ROOT/%{_unitdir}/sanlock.service install -D -m 0644 init.d/sanlock.service.native $RPM_BUILD_ROOT/%{_unitdir}/sanlock.service
install -D -m 0755 init.d/wdmd $RPM_BUILD_ROOT/usr/lib/systemd/systemd-wdmd install -D -m 0755 init.d/wdmd $RPM_BUILD_ROOT/usr/lib/systemd/systemd-wdmd
install -D -m 0644 init.d/wdmd.service.native $RPM_BUILD_ROOT/%{_unitdir}/wdmd.service install -D -m 0644 init.d/wdmd.service.native $RPM_BUILD_ROOT/%{_unitdir}/wdmd.service
install -D -m 0644 init.d/sanlk-resetd.service $RPM_BUILD_ROOT/%{_unitdir}/sanlk-resetd.service
install -D -m 0644 src/logrotate.sanlock \ install -D -m 0644 src/logrotate.sanlock \
$RPM_BUILD_ROOT/etc/logrotate.d/sanlock $RPM_BUILD_ROOT/etc/logrotate.d/sanlock
@ -73,14 +82,15 @@ install -D -m 0644 init.d/wdmd.sysconfig \
$RPM_BUILD_ROOT/etc/sysconfig/wdmd $RPM_BUILD_ROOT/etc/sysconfig/wdmd
install -Dd -m 0755 $RPM_BUILD_ROOT/etc/wdmd.d install -Dd -m 0755 $RPM_BUILD_ROOT/etc/wdmd.d
install -Dd -m 0775 $RPM_BUILD_ROOT/%{_localstatedir}/run/sanlock install -Dd -m 0775 $RPM_BUILD_ROOT/%{_rundir}/sanlock
install -Dd -m 0775 $RPM_BUILD_ROOT/%{_rundir}/sanlk-resetd
%pre %pre
getent group sanlock > /dev/null || /usr/sbin/groupadd \ getent group sanlock > /dev/null || /usr/sbin/groupadd \
-g 179 sanlock -g 179 sanlock
getent passwd sanlock > /dev/null || /usr/sbin/useradd \ getent passwd sanlock > /dev/null || /usr/sbin/useradd \
-u 179 -c "sanlock" -s /sbin/nologin -r \ -u 179 -c "sanlock" -s /sbin/nologin -r \
-g 179 -d /var/run/sanlock sanlock -g 179 -d /run/sanlock sanlock
/usr/sbin/usermod -a -G disk sanlock /usr/sbin/usermod -a -G disk sanlock
%post %post
@ -100,7 +110,7 @@ getent passwd sanlock > /dev/null || /usr/sbin/useradd \
%{_sbindir}/wdmd %{_sbindir}/wdmd
%dir %{_sysconfdir}/wdmd.d %dir %{_sysconfdir}/wdmd.d
%dir %{_sysconfdir}/sanlock %dir %{_sysconfdir}/sanlock
%dir %attr(-,sanlock,sanlock) %{_localstatedir}/run/sanlock %dir %attr(-,sanlock,sanlock) %{_rundir}/sanlock
%{_mandir}/man8/wdmd* %{_mandir}/man8/wdmd*
%{_mandir}/man8/sanlock* %{_mandir}/man8/sanlock*
%config(noreplace) %{_sysconfdir}/logrotate.d/sanlock %config(noreplace) %{_sysconfdir}/logrotate.d/sanlock
@ -112,6 +122,7 @@ getent passwd sanlock > /dev/null || /usr/sbin/useradd \
%package lib %package lib
Summary: A shared storage lock manager library Summary: A shared storage lock manager library
Group: System Environment/Libraries
%description lib %description lib
The %{name}-lib package contains the runtime libraries for sanlock, The %{name}-lib package contains the runtime libraries for sanlock,
@ -126,22 +137,23 @@ access to the shared disks.
%{_libdir}/libsanlock_client.so.* %{_libdir}/libsanlock_client.so.*
%{_libdir}/libwdmd.so.* %{_libdir}/libwdmd.so.*
%package -n python3-sanlock %package -n %{python_package}
%{?python_provide:%python_provide python3-sanlock}
Summary: Python bindings for the sanlock library Summary: Python bindings for the sanlock library
Group: Development/Libraries
Requires: %{name}-lib = %{version}-%{release} Requires: %{name}-lib = %{version}-%{release}
%description -n python3-sanlock %description -n %{python_package}
The %{name}-python package contains a module that permits applications The %{python_package} package contains a module that permits applications
written in the Python programming language to use the interface written in the Python programming language to use the interface
supplied by the sanlock library. supplied by the sanlock library.
%files -n python3-sanlock %files -n %{python_package}
%{python3_sitearch}/sanlock_python-*.egg-info %{python3_sitearch}/sanlock_python-*.egg-info
%{python3_sitearch}/sanlock*.so %{python3_sitearch}/sanlock*.so
%package devel %package devel
Summary: Development files for %{name} Summary: Development files for %{name}
Group: Development/Libraries
Requires: %{name}-lib = %{version}-%{release} Requires: %{name}-lib = %{version}-%{release}
%description devel %description devel
@ -161,95 +173,68 @@ developing applications that use %{name}.
%{_libdir}/pkgconfig/libsanlock.pc %{_libdir}/pkgconfig/libsanlock.pc
%{_libdir}/pkgconfig/libsanlock_client.pc %{_libdir}/pkgconfig/libsanlock_client.pc
%changelog %package -n sanlk-reset
* Fri Apr 01 2022 David Teigland <teigland@redhat.com> - 3.8.4-4 Summary: Host reset daemon and client using sanlock
- fixes for thread/memory leak Group: System Environment/Base
Requires: sanlock = %{version}-%{release}
* Mon Aug 23 2021 David Teigland <teigland@redhat.com> - 3.8.4-1 Requires: sanlock-lib = %{version}-%{release}
- Update rhel9 beta version to match latest rhel8
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 3.8.1-11 %description -n sanlk-reset
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags The sanlk-reset package contains the reset daemon and client.
Related: rhbz#1991688 A cooperating host running the daemon can be reset by a host
running the client, so long as both maintain access to a
common sanlock lockspace.
* Mon Jun 28 2021 David Teigland <teigland@redhat.com> - 3.8.1-10 %files -n sanlk-reset
- fuck this process %{_sbindir}/sanlk-reset
%{_sbindir}/sanlk-resetd
%{_unitdir}/sanlk-resetd.service
%dir %attr(-,root,root) %{_rundir}/sanlk-resetd
%{_mandir}/man8/sanlk-reset*
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 3.8.1-9
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.1-8 %changelog
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild * Fri Mar 29 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 3.8.4-5
- Rebuilt for MSVSphere 8.10 beta
* Tue Jan 30 2024 David Teigland <teigland@redhat.com> - 3.8.4-5
- adjust wdmd values for iTCO_wdt watchdog driver
* Sat Aug 08 2020 Nir Soffer <nsoffer@redhat.com> - 3.8.1-7 * Wed Jul 06 2022 David Teigland <teigland@redhat.com> - 3.8.4-4
- Enable LTO - rebuild with larger release number
* Sun Aug 02 2020 Nir Soffer <nsoffer@redhat.com> - 3.8.1-6 * Fri Mar 18 2022 David Teigland <teigland@redhat.com> - 3.8.4-2
- Removing extra linkeer args, hopefully fix python build - Resolves: rhbz#2058438
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.1-5 * Tue Jun 01 2021 David Teigland <teigland@redhat.com> 3.8.4-1
- Second attempt - Rebuilt for - Update to sanlock-3.8.4
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.1-4 * Thu May 20 2021 David Teigland <teigland@redhat.com> 3.8.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - Fix connection close and add python inquire api
* Tue Jul 07 2020 Jeff Law <law@redhat.com> - 3.8.1-3 * Tue Jan 19 2021 David Teigland <teigland@redhat.com> 3.8.3-1
- Disable LTO - Update to sanlock-3.8.3
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 3.8.1-2 * Mon Aug 10 2020 David Teigland <teigland@redhat.com> 3.8.2-1
- Rebuilt for Python 3.9 - Update to sanlock-3.8.2
* Sat May 2 2020 Nir Soffer <nsoffer@redhat.com> - 3.8.1-1 * Thu Jul 09 2020 David Teigland <teigland@redhat.com> 3.8.1-1
- Update to sanlock-3.8.1 - Update to sanlock-3.8.1
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.0-4 * Wed Jun 12 2019 Nir Soffer <nsoffer@redhat.com> 3.8.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - kick the gating tests to run
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 3.8.0-3
- Rebuilt for Python 3.8
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Wed Jun 12 2019 Nir Soffer <nsoffer@redhat.com> - 3.8.0-1
- Update to sanlock-3.8.0
- Convert spec to python 3
* Tue May 21 2019 Nir Soffer <nsoffer@redhat.com> - 3.7.3-1
- Update to sanlock-3.7.3
- Add missing BuildRequires and Requires
* Fri Apr 12 2019 Nir Soffer <nsoffer@redhat.com> - 3.7.1-2
- Cleanup up align and sector constants
* Mon Apr 8 2019 Nir Soffer <nsoffer@redhat.com> - 3.7.1-1
- Update to sanlock 3.7.1
- Fix read_resource_owners (414abfe)
* Wed Mar 20 2019 Nir Soffer <nsoffer@redhat.com> - 3.7.0-1
- remove unneeded with_systemd macro
- update to sanlock 3.7.0
* Sat Feb 2 2019 Nir Soffer <nsoffer@redhat.com> - 3.6.0-8
- fix build on Fedora rawhide
* Thu Jan 24 2019 David Teigland <teigland@redhat.com> - 3.6.0-7
- lockfile ownership
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.0-6 * Wed Jun 12 2019 Nir Soffer <nsoffer@redhat.com> 3.8.0-1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - Cleanup spec and convert to python3
* Thu Apr 12 2018 Iryna Shcherbina <shcherbina.iryna@gmail.com> - 3.6.0-5 * Thu Dec 06 2018 David Teigland <teigland@redhat.com> - 3.6.0-5
- Update Python 2 dependency declarations to new packaging standards - Fix selinux lockfile error
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
* Wed Mar 14 2018 David Teigland <teigland@redhat.com> - 3.6.0-4 * Thu Oct 04 2018 David Teigland <teigland@redhat.com> - 3.6.0-4
- change makefile flags - makefile gcc flags
* Wed Mar 14 2018 David Teigland <teigland@redhat.com> - 3.6.0-3 * Tue Jun 12 2018 Charalampos Stratakis <cstratak@redhat.com> - 3.6.0-3
- rebuild with set_build_flags - Conditionalize the python2 subpackage
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.0-2 * Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

Loading…
Cancel
Save