diff --git a/changelog b/changelog index d94dfb2..8694ffe 100644 --- a/changelog +++ b/changelog @@ -1,8 +1,3 @@ -* Fri Dec 22 2023 Neil Hanlon - 22.05.11-1 -- Update to 22.05.11 (#2155310) -- Closes CVE-2023-49933 through CVE-2023-49938; RHBZ bugs: -- #2254496, #2254499, #2254502, #2254505, #2254507, #2254509 - * Sat Oct 21 2023 Philip Kovacs - 22.05.10-1 - Update to 22.05.10 - Use mariadb-connector-c-devel not mariadb-devel for builds diff --git a/slurm-24.05.2-perlapi_vendor_installpath.patch b/slurm-24.05.2-perlapi_vendor_installpath.patch deleted file mode 100644 index a17d9e5..0000000 --- a/slurm-24.05.2-perlapi_vendor_installpath.patch +++ /dev/null @@ -1,38 +0,0 @@ -Subject: [PATCH] Switch perl site install path to vendor ---- -Index: contribs/perlapi/libslurm/Makefile.am -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/contribs/perlapi/libslurm/Makefile.am b/contribs/perlapi/libslurm/Makefile.am ---- a/contribs/perlapi/libslurm/Makefile.am (revision ca885c43cd9c6deae7800619282573c421933bc1) -+++ b/contribs/perlapi/libslurm/Makefile.am (revision 8dd9898e73e3c890092e133068d143e842ab40ba) -@@ -62,8 +62,7 @@ - fi - @cd $(perl_dir) && $(perlpath) Makefile.PL $(PERL_MM_PARAMS) \ - prefix=${prefix} libdir=${libdir} INSTALL_BASE= PERL_MM_OPT= \ -- INSTALLDIRS=site INSTALLSITELIB=${_perlsitedir} \ -- INSTALLSITEARCH=${_perlsitedir} \ -+ INSTALLDIRS=vendor \ - INSTALLSITEMAN1DIR=$(mandir)/man1 \ - INSTALLSITEMAN3DIR=$(mandir)/man3 - -Index: contribs/perlapi/libslurmdb/Makefile.am -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== -diff --git a/contribs/perlapi/libslurmdb/Makefile.am b/contribs/perlapi/libslurmdb/Makefile.am ---- a/contribs/perlapi/libslurmdb/Makefile.am (revision ca885c43cd9c6deae7800619282573c421933bc1) -+++ b/contribs/perlapi/libslurmdb/Makefile.am (revision 8dd9898e73e3c890092e133068d143e842ab40ba) -@@ -34,8 +34,7 @@ - fi - @cd $(perl_dir) && $(perlpath) Makefile.PL $(PERL_MM_PARAMS) \ - prefix=${prefix} INSTALL_BASE= PERL_MM_OPT= \ -- INSTALLDIRS=site INSTALLSITELIB=${_perlsitedir} \ -- INSTALLSITEARCH=${_perlsitedir} \ -+ INSTALLDIRS=vendor \ - INSTALLSITEMAN1DIR=$(mandir)/man1 \ - INSTALLSITEMAN3DIR=$(mandir)/man3 - diff --git a/slurm.spec b/slurm.spec index 16261b5..f7398e3 100644 --- a/slurm.spec +++ b/slurm.spec @@ -15,7 +15,7 @@ %endif Name: slurm -Version: 24.05.2 +Version: 22.05.10 Release: %autorelease Summary: Simple Linux Utility for Resource Management # ./src/common/log.c: BSD 2-Clause License @@ -34,9 +34,14 @@ Source5: slurm-setuser.in Patch0: slurm_release_version.patch # Build-related patches +Patch10: slurm_check_version.patch Patch11: slurm_html_doc_path.patch Patch12: slurm_perlapi_rpaths.patch -Patch13: slurm-24.05.2-perlapi_vendor_installpath.patch + +# Other patches +# https://bugs.schedmd.com/show_bug.cgi?id=14868 +Patch20: slurm_runtime_linking.patch +Patch21: slurm_to_python3.patch BuildRequires: autoconf BuildRequires: automake @@ -50,7 +55,11 @@ BuildRequires: perl-ExtUtils-MakeMaker BuildRequires: perl-interpreter BuildRequires: perl-generators BuildRequires: perl-podlators +%if (0%{?rhel} != 7) BuildRequires: pkgconf +%else +BuildRequires: pkgconfig +%endif BuildRequires: pkgconfig(check) BuildRequires: pkgconfig(lua) BuildRequires: python3 @@ -74,16 +83,20 @@ BuildRequires: pam-devel BuildRequires: pmix-devel BuildRequires: rdma-core-devel BuildRequires: readline-devel +BuildRequires: rrdtool-devel BuildRequires: zlib-devel %if 0%{?fedora} && %{with ucx} BuildRequires: ucx-devel %endif +# create slurm-slurmrestd package for Fedora and EPEL7/8/9 +%if 0%{?fedora} || (0%{?rhel} >= 7) BuildRequires: http-parser-devel BuildRequires: json-c-devel BuildRequires: libjwt-devel BuildRequires: libyaml-devel +%endif # exclude upstream-deprecated 32-bit architectures ExcludeArch: armv7hl @@ -132,6 +145,14 @@ Summary: Slurm shared libraries %description libs Slurm shared libraries. +%package rrdtool +Summary: Slurm rrdtool external sensor plugin +Requires: %{name}%{?_isa} = %{version}-%{release} +%description rrdtool +Slurm external sensor plugin for rrdtool. This package is separated from +the base plugins package due to gui dependencies which are unneeded if not +using this plugin. + %package slurmctld Summary: Slurm controller daemon Requires: %{name}%{?_isa} = %{version}-%{release} @@ -153,19 +174,14 @@ Requires: %{name}%{?_isa} = %{version}-%{release} Slurm database daemon. Used to accept and process database RPCs and upload database changes to slurmctld daemons on each cluster. +%if 0%{?fedora} || (0%{?rhel} >= 7) %package slurmrestd Summary: Slurm REST API deamon Requires: %{name}%{?_isa} = %{version}-%{release} %description slurmrestd Slurm REST API daemon. The slurmrestd daemon is designed to allow clients to communicate with Slurm via a REST API. - -%package sackd -Summary: Slurm Auth and Cred Kiosk daemon -Requires: %{name}%{?_isa} = %{version}-%{release} -%description sackd -Slurm Auth and Cred Kiosk daemon. It can be used on login nodes that are not -running slurmd daemons to allow authentication to the cluster. +%endif # ----------------- # Contribs Packages @@ -217,7 +233,6 @@ Requires: %{name}-perlapi%{?_isa} = %{version}-%{release} %description torque Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm. - %prep %autosetup -p1 -n %{name_version} cp %SOURCE1 etc/slurm.conf @@ -231,7 +246,6 @@ cp %SOURCE4 share/icons/hicolor/128x128/apps/%{name}.png mkdir -p extras cp %SOURCE5 extras/%{name}-setuser.in - %build aclocal -I auxdir autoconf @@ -241,8 +255,12 @@ export CFLAGS="%{build_cflags} -fcommon" # use -z lazy to allow dlopen with unresolved symbols export LDFLAGS="%{build_ldflags} -Wl,-z,lazy" %configure \ + --prefix=%{_prefix} \ --sysconfdir=%{_sysconfdir}/%{name} \ --with-pam_dir=%{_libdir}/security \ +%if 0%{?fedora} && %{with ucx} + --with-ucx=%{_prefix} \ +%endif --enable-pam \ --enable-really-no-cray \ --enable-shared \ @@ -252,7 +270,6 @@ export LDFLAGS="%{build_ldflags} -Wl,-z,lazy" --disable-salloc-background \ --disable-partial_attach \ --with-oneapi=no \ - --with-pmix=%{_prefix} \ --with-shared-libslurm \ --without-rpath # patch libtool to remove rpaths @@ -269,15 +286,17 @@ s|^dir_spool=.*|dir_spool="%{_var}/spool/%{name}"|g; s|^dir_tmpfiles_d=.*|dir_tmpfiles_d="%{_tmpfilesdir}"|g;' \ extras/%{name}-setuser.in > extras/%{name}-setuser -# patch the test files -sed -i 's|"PluginDir=" SLURM_PREFIX "/lib/slurm/\\n"|"PluginDir=%{buildroot}%{_libdir}/%{name}/\\n"|g' testsuite/slurm_unit/common/serializer-test.c - # build base packages %make_build # build contribs packages -%make_build contrib +# INSTALLDIRS=vendor so perlapi goes to vendor_perl directory +%make_build PERL_MM_PARAMS="INSTALLDIRS=vendor" contrib +%check +# The test binaries need LD_LIBRARY_PATH to find the compiled slurm library +# in the build tree. +%make_build LD_LIBRARY_PATH="%{buildroot}%{_libdir};%{_libdir}" check %install %make_install @@ -378,19 +397,10 @@ rm -f %{buildroot}%{_sbindir}/slurmsmwd* rm -f %{buildroot}%{perl_vendorarch}/auto/Slurm*/.packlist rm -f %{buildroot}%{perl_vendorarch}/auto/Slurm*/Slurm*.bs rm -f %{buildroot}%{perl_archlib}/perllocal.pod -# remove other example stuff -rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so %ldconfig_scriptlets devel %ldconfig_scriptlets libs - -%check -# The test binaries need LD_LIBRARY_PATH to find the compiled slurm library -# in the build tree. -%make_build LD_LIBRARY_PATH="%{buildroot}%{_libdir}" check - - # ----- # Slurm # ----- @@ -417,7 +427,6 @@ rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so %{_bindir}/scancel %{_bindir}/scontrol %{_bindir}/scrontab -%{_bindir}/scrun %{_bindir}/sdiag %{_bindir}/sh5util %{_bindir}/sinfo @@ -431,35 +440,41 @@ rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so %{_bindir}/%{name}-setuser %{_libdir}/%{name}/accounting_storage_*.so %{_libdir}/%{name}/acct_gather_*.so +%if 0%{?fedora} || (0%{?rhel} >= 7) %{_libdir}/%{name}/auth_jwt.so +%endif %{_libdir}/%{name}/auth_munge.so -%{_libdir}/%{name}/auth_slurm.so %{_libdir}/%{name}/burst_buffer_lua.so %{_libdir}/%{name}/cgroup_v1.so %{_libdir}/%{name}/cgroup_v2.so %{_libdir}/%{name}/cli_filter_*.so +%{_libdir}/%{name}/core_spec_none.so %{_libdir}/%{name}/cred_*.so -%{_libdir}/%{name}/data_parser_*.so -%{_libdir}/%{name}/gpu_*.so +%{_libdir}/%{name}/ext_sensors_none.so %{_libdir}/%{name}/gres_*.so -%{_libdir}/%{name}/hash_*.so +%{_libdir}/%{name}/gpu_generic.so +%{_libdir}/%{name}/hash_k12.so %{_libdir}/%{name}/job_container_*.so %{_libdir}/%{name}/job_submit_*.so %{_libdir}/%{name}/jobacct_gather_*.so %{_libdir}/%{name}/jobcomp_*.so +%{_libdir}/%{name}/launch_slurm.so %{_libdir}/%{name}/mcs_*.so %{_libdir}/%{name}/mpi_*.so %{_libdir}/%{name}/node_features_*.so +%{_libdir}/%{name}/power_none.so %{_libdir}/%{name}/preempt_*.so %{_libdir}/%{name}/prep_script.so %{_libdir}/%{name}/priority_*.so %{_libdir}/%{name}/proctrack_*.so +%{_libdir}/%{name}/route_*.so %{_libdir}/%{name}/sched_*.so %{_libdir}/%{name}/select_*.so %{_libdir}/%{name}/serializer_*.so +%{_libdir}/%{name}/site_factor_none.so +%{_libdir}/%{name}/slurmctld_nonstop.so %{_libdir}/%{name}/switch_*.so %{_libdir}/%{name}/task_*.so -%{_libdir}/%{name}/tls_none.so %{_libdir}/%{name}/topology_*.so %{_mandir}/man1/sacct.1* %{_mandir}/man1/sacctmgr.1* @@ -470,7 +485,6 @@ rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so %{_mandir}/man1/scancel.1* %{_mandir}/man1/scontrol.1* %{_mandir}/man1/scrontab.1* -%{_mandir}/man1/scrun.1* %{_mandir}/man1/sdiag.1* %{_mandir}/man1/sh5util.1* %{_mandir}/man1/sinfo.1* @@ -485,11 +499,13 @@ rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so %{_mandir}/man5/acct_gather.conf.5* %{_mandir}/man5/burst_buffer.conf.5* %{_mandir}/man5/cgroup.conf.5* +%{_mandir}/man5/ext_sensors.conf.5* %{_mandir}/man5/gres.conf.5* %{_mandir}/man5/helpers.conf.5* %{_mandir}/man5/job_container.conf.5* %{_mandir}/man5/knl.conf.5* %{_mandir}/man5/mpi.conf.5* +%{_mandir}/man5/nonstop.conf.5* %{_mandir}/man5/oci.conf.5* %{_mandir}/man5/slurm.conf.5* %{_mandir}/man5/topology.conf.5* @@ -513,6 +529,7 @@ rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so %{_includedir}/%{name}/slurm_errno.h %{_includedir}/%{name}/slurm_version.h %{_includedir}/%{name}/slurmdb.h +%{_includedir}/%{name}/smd_ns.h %{_includedir}/%{name}/spank.h %{_libdir}/libpmi.so %{_libdir}/libpmi2.so @@ -526,12 +543,6 @@ rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so %files doc %{_docdir} -%exclude %{_docdir}/%{name}/CONTRIBUTING.md -%exclude %{_docdir}/%{name}/DISCLAIMER -%exclude %{_docdir}/%{name}/META -%exclude %{_docdir}/%{name}/NEWS -%exclude %{_docdir}/%{name}/README.rst -%exclude %{_docdir}/%{name}/RELEASE_NOTES # --------- # Slurm-gui @@ -543,6 +554,20 @@ rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so %{_datadir}/icons/hicolor/*/apps/%{name}.png %{_mandir}/man1/sview.1* +%if (0%{?rhel} == 7) +%post gui +/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : + +%postun gui +if [ $1 -eq 0 ] ; then + /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null + /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : +fi + +%posttrans gui +/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : +%endif + # ---------- # Slurm-libs # ---------- @@ -554,6 +579,13 @@ rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so %{_libdir}/libslurmfull-*.so %{_libdir}/libslurm_pmi-*.so +# ------------- +# Slurm-rrdtool +# ------------- + +%files rrdtool +%{_libdir}/%{name}/ext_sensors_rrd.so + # --------------- # Slurm-slurmctld # --------------- @@ -594,19 +626,13 @@ rm -f %{buildroot}%{_libdir}/%{name}/site_factor_example.so # Slurm-slurmrestd # ---------------- +%if 0%{?fedora} || (0%{?rhel} >= 7) %files slurmrestd %{_libdir}/%{name}/openapi*.so %{_libdir}/%{name}/rest*.so %{_sbindir}/slurmrestd %{_unitdir}/slurmrestd.service - -# ---------------- -# Slurm-sackd -# ---------------- - -%files sackd -%{_sbindir}/sackd -%{_mandir}/man8/sackd.8* +%endif # -------------- # Slurm-contribs diff --git a/slurm_check_version.patch b/slurm_check_version.patch new file mode 100644 index 0000000..5b13045 --- /dev/null +++ b/slurm_check_version.patch @@ -0,0 +1,13 @@ +diff --git a/configure.ac b/configure.ac +index d69d47348a..90f82536ce 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -240,7 +240,7 @@ X_AC_CGROUP + # Tests for Check + # + +-PKG_CHECK_MODULES([CHECK], [check >= 0.9.8], [ac_have_check="yes"], [ac_have_check="no"]) ++PKG_CHECK_MODULES([CHECK], [check >= 0.9.10], [ac_have_check="yes"], [ac_have_check="no"]) + AM_CONDITIONAL(HAVE_CHECK, test "x$ac_have_check" = "xyes") + + # diff --git a/slurm_perlapi_rpaths.patch b/slurm_perlapi_rpaths.patch index 88b42b4..f20bd54 100644 --- a/slurm_perlapi_rpaths.patch +++ b/slurm_perlapi_rpaths.patch @@ -2,11 +2,11 @@ diff --git a/contribs/perlapi/libslurm/perl/Makefile.PL.in b/contribs/perlapi/li index fcae43796d..34c1ad1411 100644 --- a/contribs/perlapi/libslurm/perl/Makefile.PL.in +++ b/contribs/perlapi/libslurm/perl/Makefile.PL.in -@@ -68,7 +68,7 @@ DESTDIR_BUG +@@ -77,7 +77,7 @@ DESTDIR_BUG # AIX has problems with not always having the correct # flags so we have to add some :) my $os = lc(`uname`); --my $other_ld_flags = '-Wl,-rpath,@top_builddir@/src/api/.libs -Wl,-rpath,@libdir@'; +-my $other_ld_flags = "-Wl,-rpath,@top_builddir@/src/api/.libs -Wl,-rpath,@prefix@/lib"; +my $other_ld_flags = ""; $other_ld_flags = " -brtl -G -bnoentry -bgcbypass:1000 -bexpfull" if $os =~ "aix"; @@ -15,11 +15,11 @@ diff --git a/contribs/perlapi/libslurmdb/perl/Makefile.PL.in b/contribs/perlapi/ index 2db028c113..d143c20190 100644 --- a/contribs/perlapi/libslurmdb/perl/Makefile.PL.in +++ b/contribs/perlapi/libslurmdb/perl/Makefile.PL.in -@@ -68,7 +68,7 @@ DESTDIR_BUG +@@ -76,7 +76,7 @@ DESTDIR_BUG # AIX has problems with not always having the correct # flags so we have to add some :) my $os = lc(`uname`); --my $other_ld_flags = '-Wl,-rpath,@top_builddir@/src/db_api/.libs -Wl,-rpath,@libdir@'; +-my $other_ld_flags = "-Wl,-rpath,@top_builddir@/src/db_api/.libs -Wl,-rpath,@prefix@/lib"; +my $other_ld_flags = ""; $other_ld_flags = " -brtl -G -bnoentry -bgcbypass:1000 -bexpfull" if $os =~ "aix"; diff --git a/slurm_runtime_linking.patch b/slurm_runtime_linking.patch new file mode 100644 index 0000000..e4435e9 --- /dev/null +++ b/slurm_runtime_linking.patch @@ -0,0 +1,35 @@ +diff --git a/src/plugins/mpi/pmix/mpi_pmix.c b/src/plugins/mpi/pmix/mpi_pmix.c +index 626065f269..d2623695be 100644 +--- a/src/plugins/mpi/pmix/mpi_pmix.c ++++ b/src/plugins/mpi/pmix/mpi_pmix.c +@@ -137,7 +137,7 @@ static void *_libpmix_open(void) + #elif defined PMIXP_V4_LIBPATH + xstrfmtcat(full_path, "%s/", PMIXP_V4_LIBPATH); + #endif +- xstrfmtcat(full_path, "libpmix.so"); ++ xstrfmtcat(full_path, "libpmix.so.2"); + + lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL); + xfree(full_path); +diff --git a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c +index 44013246e3..96c40b5c3a 100644 +--- a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c ++++ b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c +@@ -169,7 +169,7 @@ static int _load_ucx_lib() + * we have from autoconf + */ + char *full_path = NULL; +- xstrfmtcat(full_path, "%s/libucp.so", PMIXP_UCX_LIBPATH); ++ xstrfmtcat(full_path, "%s/libucp.so.0", PMIXP_UCX_LIBPATH); + _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL); + xfree(full_path); + if (_ucx_lib_handler) { +@@ -180,7 +180,7 @@ static int _load_ucx_lib() + * known by dynamic linker. + */ + #endif +- _ucx_lib_handler = dlopen("libucp.so", RTLD_LAZY | RTLD_GLOBAL); ++ _ucx_lib_handler = dlopen("libucp.so.0", RTLD_LAZY | RTLD_GLOBAL); + if (!_ucx_lib_handler) { + char *err = dlerror(); + PMIXP_ERROR("Cannot open UCX lib: %s", (err) ? err : "unknown"); diff --git a/slurm_to_python3.patch b/slurm_to_python3.patch new file mode 100644 index 0000000..841e773 --- /dev/null +++ b/slurm_to_python3.patch @@ -0,0 +1,20 @@ +diff --git a/contribs/cray/csm/slurmconfgen_smw.py b/contribs/cray/csm/slurmconfgen_smw.py +index 1d1aadedaf..b2f65c242b 100644 +--- a/contribs/cray/csm/slurmconfgen_smw.py ++++ b/contribs/cray/csm/slurmconfgen_smw.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # + # Copyright 2015-2016 Hewlett Packard Enterprise Development LP + """ A script to generate slurm.conf and gres.conf for a +diff --git a/contribs/cray/slurmconfgen.py.in b/contribs/cray/slurmconfgen.py.in +index 31de1a0c28..269b1d55a7 100644 +--- a/contribs/cray/slurmconfgen.py.in ++++ b/contribs/cray/slurmconfgen.py.in +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + # + # Copyright 2013 Hewlett Packard Enterprise Development LP + # diff --git a/sources b/sources index 821f3fe..af4dd75 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (slurm-24.05.2.tar.bz2) = d00b7420690f0067a53e6c52cf9ec103411766437d9677f9968fdb81859ad4c839ba7d3dbfa046f6b06b753262a25d12ff7e8e019b14fc8f7b1e1cbbe60ed819 +SHA512 (slurm-22.05.10.tar.bz2) = a1746e749c1ff703076fc9e02d2b73d9e5ab23e0d503164dfa01011d24f37a1f7fa01170cc7ec526c82082fe9766aeceb2be14067293967e69daca502e8e549a