diff --git a/.gitignore b/.gitignore index 18dbbc6..60a5886 100644 --- a/.gitignore +++ b/.gitignore @@ -7,10 +7,3 @@ 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 new file mode 100644 index 0000000..84c6770 --- /dev/null +++ b/0002-readline-includes.patch @@ -0,0 +1,30 @@ +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 deleted file mode 100644 index fccde75..0000000 --- a/OpenIPMI-py313compat.patch +++ /dev/null @@ -1,13 +0,0 @@ -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 7016dc2..30c55c2 100644 --- a/OpenIPMI.spec +++ b/OpenIPMI.spec @@ -1,35 +1,21 @@ %global _hardened_build 1 -%bcond_with python -%bcond_with perl - Summary: IPMI (Intelligent Platform Management Interface) library and tools Name: OpenIPMI -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 +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 Source1: openipmi.sysconf Source2: openipmi-helper Source3: ipmi.service Patch1: 0001-man.patch -Patch2: include-config-h-cmdlang.patch -Patch5: OpenIPMI-py313compat.patch +Patch2: 0002-readline-includes.patch -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: gdbm-devel swig glib2-devel net-snmp-devel ncurses-devel +BuildRequires: openssl-devel python3-devel perl-devel perl-generators BuildRequires: pkgconfig BuildRequires: readline-devel BuildRequires: automake @@ -55,16 +41,14 @@ 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} @@ -77,14 +61,12 @@ 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 @@ -93,7 +75,6 @@ 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. @@ -109,15 +90,8 @@ 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 @@ -194,17 +168,13 @@ 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.* @@ -228,134 +198,6 @@ 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 deleted file mode 100644 index 4f9fcab..0000000 --- a/include-config-h-cmdlang.patch +++ /dev/null @@ -1,12 +0,0 @@ -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 4f3d3d9..4cebfb9 100644 --- a/openipmi-helper +++ b/openipmi-helper @@ -4,7 +4,6 @@ # ipmi: OpenIPMI Driver helper script # # Authors: Jan Safranek -# Václav Doležal # # Based on IPMI init script by: # Matt Domsch @@ -31,6 +30,11 @@ 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" @@ -51,6 +55,17 @@ 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() @@ -58,7 +73,7 @@ modules_loaded_verbose() OnePlusLoaded=0 OnePlusUnloaded=0 for m in $@; do - if /sbin/lsmod | grep -q $m ; then + if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then echo "$m module loaded." OnePlusLoaded=1 else @@ -73,7 +88,7 @@ modules_loaded() OnePlusLoaded=0 OnePlusUnloaded=0 for m in $@; do - if /sbin/lsmod | grep -q $m ; then + if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then OnePlusLoaded=1 else OnePlusUnloaded=1 @@ -139,6 +154,13 @@ 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() @@ -164,6 +186,10 @@ 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 } @@ -173,6 +199,10 @@ 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 } @@ -181,9 +211,9 @@ start_powercontrol_common() local poweroff_opts="" load_hw_modules if [ "${IPMI_POWERCYCLE}" == "yes" ]; then - modinfo ipmi_poweroff 2>/dev/null | grep -q poweroff_control && \ + modinfo ipmi_poweroff 2>/dev/null | grep poweroff_control > /dev/null 2>&1 && \ poweroff_opts="poweroff_control=2" - modinfo ipmi_poweroff 2>/dev/null | grep -q poweroff_powercycle && \ + modinfo ipmi_poweroff 2>/dev/null | grep poweroff_powercycle > /dev/null 2>&1 && \ poweroff_opts="poweroff_powercycle=1" fi modprobe ipmi_poweroff "${poweroff_opts}" > /dev/null 2>&1 @@ -235,6 +265,9 @@ 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() @@ -242,7 +275,10 @@ unload_ipmi_modules_leave_features() for m in ${MODULES_INTERFACES}; do modprobe -q -r ${m} > /dev/null 2>&1 done - lsmod | grep -Eq "ipmi_(poweroff|watchdog)" + # 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 if [ "$?" -ne "0" ]; then stop_watchdog_quiet stop_powercontrol_quiet @@ -266,7 +302,14 @@ 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} @@ -274,8 +317,6 @@ load_ipmi_modules () locdelay=$((locdelay - 1)) sleep 0.1 done - else - RETVAL=$((RETVAL | 2)) fi fi diff --git a/sources b/sources index 1870111..253db02 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (OpenIPMI-2.0.36.tar.gz) = a47725308336f200e88a1eb8641ed5ef03fc8bb43ee47f7a99e39df68640ff912b6842c1710d7e767aeb724fc41fa4ed3b244685812ee985e5200003a45f4015 +SHA512 (OpenIPMI-2.0.27.tar.gz) = 44aa2eb97559514d61654434f24bf8e87c3f89ea7095fd3d46c1a889e16c128f29ca19cfb9747afc7fd432ada84406ee884bc8b9c65e28b8bd033d368b744fe3