diff --git a/.gitignore b/.gitignore index 60a5886..18dbbc6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,10 @@ OpenIPMI-2.0.18.tar.gz /OpenIPMI-2.0.24.tar.gz /OpenIPMI-2.0.25.tar.gz /OpenIPMI-2.0.27.tar.gz +/OpenIPMI-2.0.28.tar.gz +/OpenIPMI-2.0.29.tar.gz +/OpenIPMI-2.0.31.tar.gz +/OpenIPMI-2.0.32.tar.gz +/OpenIPMI-2.0.34.tar.gz +/OpenIPMI-2.0.35.tar.gz +/OpenIPMI-2.0.36.tar.gz diff --git a/0002-readline-includes.patch b/0002-readline-includes.patch deleted file mode 100644 index 84c6770..0000000 --- a/0002-readline-includes.patch +++ /dev/null @@ -1,30 +0,0 @@ -Fix including readline and readline history headers in OpenIPMI 2.0.27 - -It will probably be fixed in next release - -diff --git a/cmdlang/ipmish.c b/cmdlang/ipmish.c -index 139da67b..a4b8f0ba 100644 ---- a/cmdlang/ipmish.c -+++ b/cmdlang/ipmish.c -@@ -51,6 +51,7 @@ - #include - #include - #include -+#include - - #ifdef HAVE_GLIB - #include -diff --git a/sample/ipmi_serial_bmc_emu.c b/sample/ipmi_serial_bmc_emu.c -index e0ae0197..184745ef 100644 ---- a/sample/ipmi_serial_bmc_emu.c -+++ b/sample/ipmi_serial_bmc_emu.c -@@ -42,7 +42,8 @@ - #include - #include - #include --#include -+#include -+#include - - #define _GNU_SOURCE - #include diff --git a/OpenIPMI-py313compat.patch b/OpenIPMI-py313compat.patch new file mode 100644 index 0000000..fccde75 --- /dev/null +++ b/OpenIPMI-py313compat.patch @@ -0,0 +1,13 @@ +diff --git a/swig/python/OpenIPMI_lang.i b/swig/python/OpenIPMI_lang.i +index 67221fd..d150d81 100644 +--- a/swig/python/OpenIPMI_lang.i ++++ b/swig/python/OpenIPMI_lang.i +@@ -541,7 +541,7 @@ static void OI_put_py_state(int current) + #else + static void init_lang(void) + { +- PyEval_InitThreads(); ++ /* nothing */ + } + #define OI_PY_STATE PyGILState_STATE + #define OI_PY_STATE_GET() PyGILState_Ensure() diff --git a/OpenIPMI.spec b/OpenIPMI.spec index 30c55c2..7016dc2 100644 --- a/OpenIPMI.spec +++ b/OpenIPMI.spec @@ -1,21 +1,35 @@ %global _hardened_build 1 +%bcond_with python +%bcond_with perl + Summary: IPMI (Intelligent Platform Management Interface) library and tools Name: OpenIPMI -Version: 2.0.27 -Release: 3%{?dist} -License: LGPLv2+ and GPLv2+ or BSD -URL: http://sourceforge.net/projects/openipmi/ -Source: http://downloads.sourceforge.net/openipmi/%{name}-%{version}.tar.gz +Version: 2.0.36 +Release: 5%{?dist} +License: LGPL-2.1-or-later and GPL-2.0-or-later or BSD-3-Clause +URL: https://sourceforge.net/projects/openipmi/ +Source: https://downloads.sourceforge.net/openipmi/%{name}-%{version}.tar.gz Source1: openipmi.sysconf Source2: openipmi-helper Source3: ipmi.service Patch1: 0001-man.patch -Patch2: 0002-readline-includes.patch +Patch2: include-config-h-cmdlang.patch +Patch5: OpenIPMI-py313compat.patch -BuildRequires: gdbm-devel swig glib2-devel net-snmp-devel ncurses-devel -BuildRequires: openssl-devel python3-devel perl-devel perl-generators +BuildRequires: make +BuildRequires: gdbm-devel glib2-devel net-snmp-devel ncurses-devel +%if %{with python} || %{with perl} +BuildRequires: swig +%endif +BuildRequires: openssl-devel +%if %{with python} +BuildRequires: python3-devel +%endif +%if %{with perl} +BuildRequires: perl-devel perl-generators +%endif BuildRequires: pkgconfig BuildRequires: readline-devel BuildRequires: automake @@ -41,14 +55,16 @@ Summary: The OpenIPMI runtime libraries The OpenIPMI-libs package contains the runtime libraries for shared binaries and applications. +%if %{with perl} %package perl Summary: IPMI Perl language bindings -Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires: %{name}-libs%{?_isa} = %{version}-%{release} %description perl The OpenIPMI-perl package contains the Perl language bindings for OpenIPMI. +%endif +%if %{with python} %package -n python3-openipmi %{?python_provide:%python_provide python3-openipmi} %{?python_provide:%python_provide python3-OpenIPMI} @@ -61,12 +77,14 @@ Requires: %{name}-libs%{?_isa} = %{version}-%{release} %description -n python3-openipmi The OpenIPMI-python package contains the Python language bindings for OpenIPMI. +%endif %package devel Summary: The development environment for the OpenIPMI project Requires: pkgconfig Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-lanserv%{?_isa} = %{version}-%{release} %description devel The OpenIPMI-devel package contains the development libraries and header files @@ -75,6 +93,7 @@ of the OpenIPMI project. %package lanserv Summary: Emulates an IPMI network listener Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} %description lanserv This package contains a network IPMI listener. @@ -90,8 +109,15 @@ This package contains a network IPMI listener. LDFLAGS="%{__global_ldflags} -Wl,--as-needed" \ --disable-dependency-tracking \ --disable-static \ +%if %{with python} --with-pythoninstall=%{python3_sitearch} \ --with-python=%{__python3} \ +%else + --with-python=no \ +%endif +%if %{without perl} + --with-perl=no \ +%endif --with-tcl=no \ --with-tkinter=no @@ -168,13 +194,17 @@ echo ".so man1/openipmish.1" > %{buildroot}%{_mandir}/man1/ipmish.1 %{_mandir}/man7/ipmi_cmdlang* %{_mandir}/man7/openipmi_conparms* +%if %{with perl} %files perl %attr(644,root,root) %{perl_vendorarch}/OpenIPMI.pm %{perl_vendorarch}/auto/OpenIPMI +%endif +%if %{with python} %files -n python3-openipmi %{python3_sitearch}/*OpenIPMI* %{python3_sitearch}/__pycache__/OpenIPMI.*.pyc +%endif %files libs %{_libdir}/libOpenIPMI*.so.* @@ -198,6 +228,134 @@ echo ".so man1/openipmish.1" > %{buildroot}%{_mandir}/man1/ipmish.1 %{_mandir}/man5/ipmi_sim_cmd.5* %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 2.0.36-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Mon Jan 12 2026 Josef Ridky - 2.0.36-4 +- rebuild for new net-snmp release + +* Wed Jul 23 2025 Fedora Release Engineering - 2.0.36-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 2.0.36-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Aug 22 2024 Fedora Release Monitoring - 2.0.36-1 +- Update to 2.0.36 (#2302353) +- Resolves CVE-2024-42934 + +* Wed Jul 17 2024 Fedora Release Engineering - 2.0.35-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Tue May 7 2024 Pavel Cahyna - 2.0.35-1 +- Switch to https +- Update to 2.0.35 (rhbz#2278007) + drop patch integrated upstream + +* Sun Feb 11 2024 Pavel Cahyna - 2.0.34-1 +- Update to 2.0.34 (rhbz#2105023) +- Resolve issues found by rpmdiff + - add a patch to fix getaddrinfo detection to avoid using gethostbyname + - add explicit Requires: on subpackages to avoid the need to test + interoperability between the various combinations of old and new + subpackages +- Conditional Perl & Python module build, by default disabled + +* Mon Jan 22 2024 Fedora Release Engineering - 2.0.32-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 2.0.32-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 08 2024 Florian Weimer - 2.0.32-11 +- Fix C compatibility issues + +* Wed Jul 19 2023 Fedora Release Engineering - 2.0.32-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 18 2023 Josef Ridky - 2.0.32-9 +- Migrate to SPDX license format + +* Tue Jul 11 2023 Jitka Plesnikova - 2.0.32-8 +- Perl 5.38 rebuild + +* Tue Jun 13 2023 Python Maint - 2.0.32-7 +- Rebuilt for Python 3.12 + +* Wed Jan 18 2023 Fedora Release Engineering - 2.0.32-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jul 20 2022 Fedora Release Engineering - 2.0.32-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jun 13 2022 Python Maint - 2.0.32-4 +- Rebuilt for Python 3.11 + +* Tue May 31 2022 Jitka Plesnikova - 2.0.32-3 +- Perl 5.36 rebuild + +* Wed Jan 19 2022 Fedora Release Engineering - 2.0.32-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Jan 10 2022 Josef Ridky - 2.0.32-1 +- new upstream release 2.0.32 (#2020717) + +* Tue Sep 14 2021 Sahana Prasad - 2.0.31-8 +- Rebuilt with OpenSSL 3.0.0 + +* Mon Aug 02 2021 Josef Ridky - 2.0.31-7 +- replace distutils and fix FTBFS (#1948437) +- fix collectd-ipmi crash (#1927022) + +* Wed Jul 21 2021 Fedora Release Engineering - 2.0.31-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 04 2021 Python Maint - 2.0.31-5 +- Rebuilt for Python 3.10 + +* Fri May 21 2021 Jitka Plesnikova - 2.0.31-4 +- Perl 5.34 rebuild + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 2.0.31-3 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Mon Jan 25 2021 Fedora Release Engineering - 2.0.31-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jan 25 2021 Josef Ridky - 2.0.31-1 +- New upstream release 2.0.31 (#1905768) + +* Thu Sep 17 2020 Josef Řídký - 2.0.29-1 +- New upstream release 2.0.29 (#1846675) + +* Thu Aug 27 2020 Josef Řídký - 2.0.28-7 +- Rebuilt for new net-snmp release + +* Mon Jul 27 2020 Fedora Release Engineering - 2.0.28-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jun 23 2020 Jitka Plesnikova - 2.0.28-5 +- Perl 5.32 rebuild + +* Tue May 26 2020 Miro Hrončok - 2.0.28-4 +- Rebuilt for Python 3.9 + +* Mon Feb 03 2020 Vaclav Dolezal - 2.0.28-3 +- Cleanup of openipmi-helper script; removed no-udev branch (#1579773) + +* Tue Jan 28 2020 Fedora Release Engineering - 2.0.28-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Dec 16 2019 Vaclav Dolezal - 2.0.28-1 +- New upstream release 2.0.28 + +* Thu Oct 03 2019 Miro Hrončok - 2.0.27-5 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Mon Aug 19 2019 Miro Hrončok - 2.0.27-4 +- Rebuilt for Python 3.8 + * Thu Aug 01 2019 Vaclav Dolezal - 2.0.27-3 - Prevent bogus Provides of libOpenIPMI.so.0 by OpenIPMI-perl (#1734407) diff --git a/include-config-h-cmdlang.patch b/include-config-h-cmdlang.patch new file mode 100644 index 0000000..4f9fcab --- /dev/null +++ b/include-config-h-cmdlang.patch @@ -0,0 +1,12 @@ +diff -up OpenIPMI-2.0.32/cmdlang/cmdlang.c~ OpenIPMI-2.0.32/cmdlang/cmdlang.c +--- OpenIPMI-2.0.32/cmdlang/cmdlang.c~ 2021-01-22 19:51:28.000000000 +0100 ++++ OpenIPMI-2.0.32/cmdlang/cmdlang.c 2022-01-28 11:55:42.375470392 +0100 +@@ -32,6 +32,8 @@ + */ + + ++#include ++ + #include + #include + #include diff --git a/openipmi-helper b/openipmi-helper index 4cebfb9..4f3d3d9 100644 --- a/openipmi-helper +++ b/openipmi-helper @@ -4,6 +4,7 @@ # ipmi: OpenIPMI Driver helper script # # Authors: Jan Safranek +# Václav Doležal # # Based on IPMI init script by: # Matt Domsch @@ -30,11 +31,6 @@ INTF_NUM=0 IPMI_SMB_MODULE_NAME="ipmi_smb" IPMI_SI_MODULE_NAME="ipmi_si" -kernel=`uname -r | cut -d. -f1-2` -if [ "${kernel}" == "2.4" ]; then - IPMI_SMB_MODULE_NAME="ipmi_smb_intf" - IPMI_SI_MODULE_NAME="ipmi_si_drv" -fi MODULES_INTERFACES="" [ "${DEV_IPMI}" = "yes" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_devintf" @@ -55,17 +51,6 @@ RETVAL=0 LOCKFILE=/var/lock/subsys/ipmi DEV_IPMI_TIMEOUT=150 -UDEV_EXISTS=0 -if [ -e /sbin/udev -o -e /sbin/udevd ]; then - UDEV_EXISTS=1 -fi - -############################################################################# -# NOTES: -# * /dev/ipmi0 is unconditionally deleted here on ipmi_devintf unload, -# because SLES9 and RHEL4 kernels don't send a message for udev to delete -# it for us. -# ############################################################################# modules_loaded_verbose() @@ -73,7 +58,7 @@ modules_loaded_verbose() OnePlusLoaded=0 OnePlusUnloaded=0 for m in $@; do - if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then + if /sbin/lsmod | grep -q $m ; then echo "$m module loaded." OnePlusLoaded=1 else @@ -88,7 +73,7 @@ modules_loaded() OnePlusLoaded=0 OnePlusUnloaded=0 for m in $@; do - if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then + if /sbin/lsmod | grep -q $m ; then OnePlusLoaded=1 else OnePlusUnloaded=1 @@ -154,13 +139,6 @@ start_watchdog_common() RETVAL=$((RETVAL | 2)) && echo "Watchdog startup failed: cannot load ipmi_watchdog module" && return - if [ ${UDEV_EXISTS} -eq 0 -a ! -e /dev/watchdog ]; then - mknod -m 0600 /dev/watchdog c 10 130 - [ $? -ne 0 ] && - RETVAL=$((RETVAL | 8)) && - echo "Watchdog startup failed: cannot create /dev/watchdog" && - return - fi } start_watchdog_quiet() @@ -186,10 +164,6 @@ stop_watchdog() if [ ${OnePlusLoaded} -ne 0 ]; then RETVAL=$((RETVAL | 32)) echo "Watchog shutdown failed: cannot unload ipmi_watchdog module" - else - if [ "${IPMI_WATCHDOG}" = "yes" ]; then - [ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog - fi fi } @@ -199,10 +173,6 @@ stop_watchdog_quiet() modules_loaded ipmi_watchdog if [ ${OnePlusLoaded} -ne 0 ]; then RETVAL=$((RETVAL | 32)) - else - if [ "${IPMI_WATCHDOG}" = "yes" ]; then - [ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog - fi fi } @@ -211,9 +181,9 @@ start_powercontrol_common() local poweroff_opts="" load_hw_modules if [ "${IPMI_POWERCYCLE}" == "yes" ]; then - modinfo ipmi_poweroff 2>/dev/null | grep poweroff_control > /dev/null 2>&1 && \ + modinfo ipmi_poweroff 2>/dev/null | grep -q poweroff_control && \ poweroff_opts="poweroff_control=2" - modinfo ipmi_poweroff 2>/dev/null | grep poweroff_powercycle > /dev/null 2>&1 && \ + modinfo ipmi_poweroff 2>/dev/null | grep -q poweroff_powercycle && \ poweroff_opts="poweroff_powercycle=1" fi modprobe ipmi_poweroff "${poweroff_opts}" > /dev/null 2>&1 @@ -265,9 +235,6 @@ unload_all_ipmi_modules() for m in ${MODULES}; do modprobe -q -r ${m} > /dev/null 2>&1 done - # delete interface node ONLY if ipmi_devintf is unloaded - [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] && - rm -f "/dev/ipmi${INTF_NUM}" } unload_ipmi_modules_leave_features() @@ -275,10 +242,7 @@ unload_ipmi_modules_leave_features() for m in ${MODULES_INTERFACES}; do modprobe -q -r ${m} > /dev/null 2>&1 done - # delete interface node ONLY if ipmi_devintf is unloaded - [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] && - rm -f "/dev/ipmi${INTF_NUM}" - lsmod | egrep -q "ipmi_(poweroff|watchdog)" > /dev/null 2>&1 + lsmod | grep -Eq "ipmi_(poweroff|watchdog)" if [ "$?" -ne "0" ]; then stop_watchdog_quiet stop_powercontrol_quiet @@ -302,14 +266,7 @@ load_ipmi_modules () modprobe ipmi_devintf > /dev/null 2>&1 modules_loaded ipmi_devintf RETVAL=$((RETVAL & ~2)) - [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2)) if [ ${OnePlusLoaded} -eq 1 ]; then - if [ ${UDEV_EXISTS} -eq 0 ]; then - DEVMAJOR=`cat /proc/devices | awk '/ipmidev/{print $1}'` - rm -f /dev/ipmi${INTF_NUM} - mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4)) - fi - # udev can take several seconds to create /dev/ipmi0, # but it happens asynchronously, so delay here locdelay=${DEV_IPMI_TIMEOUT} @@ -317,6 +274,8 @@ load_ipmi_modules () locdelay=$((locdelay - 1)) sleep 0.1 done + else + RETVAL=$((RETVAL | 2)) fi fi diff --git a/sources b/sources index 253db02..1870111 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (OpenIPMI-2.0.27.tar.gz) = 44aa2eb97559514d61654434f24bf8e87c3f89ea7095fd3d46c1a889e16c128f29ca19cfb9747afc7fd432ada84406ee884bc8b9c65e28b8bd033d368b744fe3 +SHA512 (OpenIPMI-2.0.36.tar.gz) = a47725308336f200e88a1eb8641ed5ef03fc8bb43ee47f7a99e39df68640ff912b6842c1710d7e767aeb724fc41fa4ed3b244685812ee985e5200003a45f4015