From 81b8fc4a0945abf7700d1152e9c79832a3e3a513 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Thu, 30 May 2019 13:52:44 +0200 Subject: [PATCH 01/15] Perl 5.30 rebuild --- slurm.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/slurm.spec b/slurm.spec index 00afaee..6ac71c8 100644 --- a/slurm.spec +++ b/slurm.spec @@ -12,7 +12,7 @@ Name: slurm Version: 18.08.7 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Simple Linux Utility for Resource Management License: GPLv2 and BSD URL: https://slurm.schedmd.com/ @@ -718,6 +718,9 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %systemd_postun_with_restart slurmdbd.service %changelog +* Thu May 30 2019 Jitka Plesnikova - 18.08.7-2 +- Perl 5.30 rebuild + * Fri Apr 12 2019 Philip Kovacs - 18.08.7-1 - Release of 18.08.7 From b8cc3a51721d0d5bb6c5dd32af74b00fef74f10a Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Sun, 9 Jun 2019 18:11:56 -0400 Subject: [PATCH 02/15] Release of 19.05.0 Added nss_plugin subpackage for optional nss plugin Added patch to fix 19.05.0 testsuite Adjusted cray patch to remove all cray, cray_aries plugins Reflect all upstream plugin additions/deletions Remove openssl build dependency --- slurm.spec | 58 ++-- slurm_do_not_build_cray.patch | 99 +++++- slurm_fix_testsuite.patch | 579 ++++++++++++++++++++++++++++++++++ slurm_to_python3.patch | 10 - sources | 2 +- 5 files changed, 712 insertions(+), 36 deletions(-) create mode 100644 slurm_fix_testsuite.patch diff --git a/slurm.spec b/slurm.spec index 6ac71c8..debed12 100644 --- a/slurm.spec +++ b/slurm.spec @@ -11,8 +11,8 @@ %undefine _strict_symbol_defs_build Name: slurm -Version: 18.08.7 -Release: 2%{?dist} +Version: 19.05.0 +Release: 1%{?dist} Summary: Simple Linux Utility for Resource Management License: GPLv2 and BSD URL: https://slurm.schedmd.com/ @@ -25,6 +25,8 @@ Source5: slurm-setuser.in # Upstream bug #4449: release-style versioning of libslurmfull Patch0: slurm_libslurmfull_version.patch +# Upstream bug #7197: fix 19.05.0 testsuite +Patch1: slurm_fix_testsuite.patch # Build-related patches Patch10: slurm_perlapi_rpaths.patch @@ -64,7 +66,6 @@ BuildRequires: pkgconfig(lua) BuildRequires: pkgconfig(mariadb) BuildRequires: pkgconfig(munge) BuildRequires: pkgconfig(ncurses) -BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(pmix) >= 2.0.0 BuildRequires: pkgconfig(zlib) BuildRequires: readline-devel @@ -157,6 +158,15 @@ Slurm contribution package which includes the programs seff, sjobexitmod, sjstat and smail. See their respective man pages for more information. +%package nss_slurm +Summary: NSS plugin for slurm +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +%description nss_slurm +nss_slurm is an optional NSS plugin that can permit passwd and group resolution +for a job on the compute node to be serviced through the local slurmstepd +process, rather than through some alternate network-based service such as LDAP, +SSSD, or NSLCD. + %package openlava Summary: Openlava/LSF wrappers for transition from OpenLava/LSF to Slurm Requires: %{name}-perlapi%{?_isa} = %{version}-%{release} @@ -190,6 +200,7 @@ Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm. %prep %setup -q -n %{name_version} %patch0 -p1 +%patch1 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 @@ -393,7 +404,7 @@ done # contribs docs install -d -m 0755 %{buildroot}%{_docdir}/%{name}/contribs/lua install -m 0644 contribs/README %{buildroot}%{_docdir}/%{name}/contribs -install -m 0644 contribs/lua/proctrack.lua %{buildroot}%{_docdir}/%{name}/contribs/lua +install -m 0644 contribs/lua/*.lua %{buildroot}%{_docdir}/%{name}/contribs/lua # remove libtool archives find %{buildroot} -name \*.a -o -name \*.la | xargs rm -f @@ -405,18 +416,7 @@ rm -f %{buildroot}%{_libdir}/%{name}/auth_none.so rm -f %{buildroot}%{_libdir}/%{name}/job_submit_defaults.so rm -f %{buildroot}%{_libdir}/%{name}/job_submit_logging.so rm -f %{buildroot}%{_libdir}/%{name}/job_submit_partition.so -# remove bluegene files -rm -f %{buildroot}%{_libdir}/%{name}/select_bluegene.so -rm -f %{buildroot}%{_mandir}/man5/bluegene* # remove cray files -rm -f %{buildroot}%{_libdir}/%{name}/acct_gather_energy_cray.so -rm -f %{buildroot}%{_libdir}/%{name}/core_spec_cray.so -rm -f %{buildroot}%{_libdir}/%{name}/job_container_cncu.so -rm -f %{buildroot}%{_libdir}/%{name}/job_submit_cray.so -rm -f %{buildroot}%{_libdir}/%{name}/select_alps.so -rm -f %{buildroot}%{_libdir}/%{name}/select_cray.so -rm -f %{buildroot}%{_libdir}/%{name}/switch_cray.so -rm -f %{buildroot}%{_libdir}/%{name}/task_cray.so rm -f %{buildroot}%{_mandir}/man5/cray* # remove perl cruft rm -f %{buildroot}%{perl_vendorarch}/auto/Slurm*/.packlist @@ -455,11 +455,12 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %{_libdir}/%{name}/auth_munge.so %{_libdir}/%{name}/burst_buffer_generic.so %{_libdir}/%{name}/checkpoint_{none,ompi}.so +%{_libdir}/%{name}/cli_filter_none.so %{_libdir}/%{name}/core_spec_none.so -%{_libdir}/%{name}/crypto_munge.so -%{_libdir}/%{name}/crypto_openssl.so +%{_libdir}/%{name}/cred_{munge,none}.so %{_libdir}/%{name}/ext_sensors_none.so -%{_libdir}/%{name}/gres_{gpu,mic,nic}.so +%{_libdir}/%{name}/gres_{gpu,mic,mps,nic}.so +%{_libdir}/%{name}/gpu_generic.so %{_libdir}/%{name}/job_container_none.so %{_libdir}/%{name}/job_submit_all_partitions.so %{_libdir}/%{name}/job_submit_lua.so @@ -479,7 +480,8 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %{_libdir}/%{name}/proctrack_{cgroup,linuxproc,lua,pgid}.so %{_libdir}/%{name}/route_{default,topology}.so %{_libdir}/%{name}/sched_{backfill,builtin,hold}.so -%{_libdir}/%{name}/select_{cons_res,linear,serial}.so +%{_libdir}/%{name}/select_{cons_res,cons_tres,linear,serial}.so +%{_libdir}/%{name}/site_factor_none.so %{_libdir}/%{name}/slurmctld_nonstop.so %{_libdir}/%{name}/switch_{generic,none}.so %{_libdir}/%{name}/task_{affinity,cgroup,none}.so @@ -558,7 +560,6 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %dir %{_libdir}/%{name}/lib %dir %{_modulesdir}/pmi %{_libdir}/libslurm.so.* -%{_libdir}/libslurmdb.so.* %{_libdir}/libslurmfull-*.so %{_libdir}/%{name}/lib/libpmi*.so.* %{_modulesdir}/pmi/* @@ -615,7 +616,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %dir %{_docdir}/%{name}/contribs %dir %{_docdir}/%{name}/contribs/lua %{_docdir}/%{name}/contribs/README -%{_docdir}/%{name}/contribs/lua/proctrack.lua +%{_docdir}/%{name}/contribs/lua/*.lua %{_bindir}/seff %{_bindir}/sgather %{_bindir}/sjobexitmod @@ -625,6 +626,13 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %{_mandir}/man1/sjobexitmod.1* %{_mandir}/man1/sjstat.1* +# --------------- +# Slurm-nss_slurm +# --------------- + +%files nss_slurm +%{_libdir}/libnss_slurm.so.2 + # -------------- # Slurm-openlava # -------------- @@ -718,6 +726,14 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %systemd_postun_with_restart slurmdbd.service %changelog +* Sun Jun 9 2019 Philip Kovacs - 19.05.0-1 +- Release of 19.05.0 +- Added nss_plugin subpackage for optional nss plugin +- Added patch to fix 19.05.0 testsuite +- Adjusted cray patch to remove all cray, cray_aries plugins +- Reflect all upstream plugin additions/deletions +- Remove openssl build dependency + * Thu May 30 2019 Jitka Plesnikova - 18.08.7-2 - Perl 5.30 rebuild diff --git a/slurm_do_not_build_cray.patch b/slurm_do_not_build_cray.patch index 7ec7ecc..8b994dc 100644 --- a/slurm_do_not_build_cray.patch +++ b/slurm_do_not_build_cray.patch @@ -1,10 +1,101 @@ diff --git a/contribs/Makefile.am b/contribs/Makefile.am -index 24ab9de7cc..087262c347 100644 +index da96aa070d..2a2d1f2c82 100644 --- a/contribs/Makefile.am +++ b/contribs/Makefile.am @@ -1,4 +1,4 @@ --SUBDIRS = cray lua mic openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque -+SUBDIRS = lua mic openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque +-SUBDIRS = cray lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque ++SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque EXTRA_DIST = \ - gcp \ + make-3.81.slurm.patch \ +diff --git a/src/plugins/acct_gather_energy/Makefile.am b/src/plugins/acct_gather_energy/Makefile.am +index 50c4fd36a2..c826387219 100644 +--- a/src/plugins/acct_gather_energy/Makefile.am ++++ b/src/plugins/acct_gather_energy/Makefile.am +@@ -1,3 +1,3 @@ + # Makefile for accounting gather energy plugins + +-SUBDIRS = cray_aries rapl ibmaem ipmi none xcc ++SUBDIRS = rapl ibmaem ipmi none xcc +diff --git a/src/plugins/core_spec/Makefile.am b/src/plugins/core_spec/Makefile.am +index 44b1ed67c0..f06bc541d7 100644 +--- a/src/plugins/core_spec/Makefile.am ++++ b/src/plugins/core_spec/Makefile.am +@@ -1,3 +1,3 @@ + # Makefile for core specialization plugins + +-SUBDIRS = cray_aries none ++SUBDIRS = none +diff --git a/src/plugins/job_container/Makefile.am b/src/plugins/job_container/Makefile.am +index 8e1960a456..529a9d581d 100644 +--- a/src/plugins/job_container/Makefile.am ++++ b/src/plugins/job_container/Makefile.am +@@ -1,3 +1,3 @@ + # Makefile for job_container plugins + +-SUBDIRS = cncu none ++SUBDIRS = none +diff --git a/src/plugins/job_submit/Makefile.am b/src/plugins/job_submit/Makefile.am +index e393bcfb1c..b98cf2e000 100644 +--- a/src/plugins/job_submit/Makefile.am ++++ b/src/plugins/job_submit/Makefile.am +@@ -2,7 +2,6 @@ + + SUBDIRS = \ + all_partitions \ +- cray_aries \ + defaults \ + logging \ + lua \ +diff --git a/src/plugins/node_features/Makefile.am b/src/plugins/node_features/Makefile.am +index f5ef036303..d955c51ba1 100644 +--- a/src/plugins/node_features/Makefile.am ++++ b/src/plugins/node_features/Makefile.am +@@ -1,3 +1,3 @@ + # Makefile for node_features plugins + +-SUBDIRS = knl_cray knl_generic ++SUBDIRS = knl_generic +diff --git a/src/plugins/power/Makefile.am b/src/plugins/power/Makefile.am +index ccde44c322..c6171740c1 100644 +--- a/src/plugins/power/Makefile.am ++++ b/src/plugins/power/Makefile.am +@@ -1,3 +1,3 @@ + # Makefile for power management plugins + +-SUBDIRS = common cray_aries none ++SUBDIRS = common none +diff --git a/src/plugins/select/Makefile.am b/src/plugins/select/Makefile.am +index 09fdfd2313..570af23c4a 100644 +--- a/src/plugins/select/Makefile.am ++++ b/src/plugins/select/Makefile.am +@@ -1,7 +1,7 @@ + # Makefile for node selection plugins + + # NOTE: other must be in the list before cray_aries lest the build break +-SUBDIRS = other cons_res cons_tres cray_aries linear ++SUBDIRS = other cons_res cons_tres linear + + # Each plugin here needs a plugin_id, here are the currect plug_ids + # for each plugin. +diff --git a/src/plugins/switch/Makefile.am b/src/plugins/switch/Makefile.am +index ddfe019a65..39a2b3eb7f 100644 +--- a/src/plugins/switch/Makefile.am ++++ b/src/plugins/switch/Makefile.am +@@ -1,3 +1,3 @@ + # Makefile for switch plugins + +-SUBDIRS = cray_aries generic none ++SUBDIRS = generic none +diff --git a/src/plugins/task/Makefile.am b/src/plugins/task/Makefile.am +index 8d2a36eb68..607af1cb7c 100644 +--- a/src/plugins/task/Makefile.am ++++ b/src/plugins/task/Makefile.am +@@ -1,6 +1,6 @@ + # Makefile for task plugins + +-SUBDIRS = cray_aries none ++SUBDIRS = none + + if HAVE_SCHED_SETAFFINITY + SUBDIRS += affinity diff --git a/slurm_fix_testsuite.patch b/slurm_fix_testsuite.patch new file mode 100644 index 0000000..4cf2c80 --- /dev/null +++ b/slurm_fix_testsuite.patch @@ -0,0 +1,579 @@ +commit 7fa8a69d8eda68ac1fa144de7686e47d18161037 +Author: Philip Kovacs +Date: Fri Jun 7 07:33:01 2019 -0600 + + patch for 19.05.0 testsuite `make check` errors + + bug 7197 + +diff --git a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c +index 2f245622e7..ca95f636a8 100644 +--- a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c ++++ b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c +@@ -59,7 +59,7 @@ START_TEST(pack_1702_req_null_ptrs) + unpack_req = (job_alloc_info_msg_t *)msg.data; + ck_assert_int_eq(rc, SLURM_SUCCESS); + ck_assert(unpack_req); +- ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ ++ //ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ + ck_assert_uint_eq(unpack_req->job_id, pack_req.job_id); + + free_buf(buf); +@@ -94,7 +94,7 @@ START_TEST(pack_1702_req) + unpack_req = (job_alloc_info_msg_t *)msg.data; + ck_assert_int_eq(rc, SLURM_SUCCESS); + ck_assert(unpack_req); +- ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ ++ //ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ + ck_assert_uint_eq(unpack_req->job_id, pack_req.job_id); + + free_buf(buf); +diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c +index dd10e1b857..d068fef66d 100644 +--- a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c ++++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c +@@ -236,9 +236,9 @@ Suite* suite(void) + TCase* tc_core = tcase_create("Pack slurmdb_federation_rec_t"); + tcase_add_test(tc_core, invalid_protocol); + tcase_add_test(tc_core, pack_1702_federation_rec); +- tcase_add_test(tc_core, pack_1702_null_federation_rec); ++ //tcase_add_test(tc_core, pack_1702_null_federation_rec); + tcase_add_test(tc_core, pack_1702_federation_rec_empty_list); +- tcase_add_test(tc_core, pack_1702_federation_rec_fail); ++ //tcase_add_test(tc_core, pack_1702_federation_rec_fail); + + tcase_add_test(tc_core, pack_1711_federation_rec); + tcase_add_test(tc_core, pack_1711_null_federation_rec); +diff --git a/testsuite/slurm_unit/common/xhash-test.c b/testsuite/slurm_unit/common/xhash-test.c +index 46616aef2b..2fc4d1d373 100644 +--- a/testsuite/slurm_unit/common/xhash-test.c ++++ b/testsuite/slurm_unit/common/xhash-test.c +@@ -49,12 +49,11 @@ typedef struct hashable_st { + uint32_t idn; + } hashable_t; + +-const char* hashable_identify(void* voiditem) ++void hashable_identify(void* voiditem, const char** key, uint32_t* key_len) + { + hashable_t* item = (hashable_t*)voiditem; +- if (!item->id[0]) snprintf(item->id, 255, "%lu", +- (unsigned long)item->idn); +- return item->id; ++ *key = item->id; ++ *key_len = strlen(item->id); + } + + /***************************************************************************** +@@ -71,7 +70,7 @@ static void setup(void) + g_ht = xhash_init(hashable_identify, NULL); + if (!g_ht) return; /* fatal error, will be detected by test cases */ + for (i = 0; i < g_hashableslen; ++i) { +- g_hashables[i].id[0] = 0; ++ snprintf(g_hashables[i].id, sizeof(g_hashables[i].id), "%d", i); + g_hashables[i].idn = i; + /* it is an error if xhash_add returns null but it will be + * detected by test cases */ +@@ -120,7 +119,7 @@ START_TEST(test_add) + fail_unless(xhash_add(ht, a+3) != NULL, "xhash_add failed"); + for (i = 0; i < len; ++i) { + snprintf(buffer, sizeof(buffer), "%d", i); +- fail_unless(xhash_get(ht, buffer) == (a + i), ++ fail_unless(xhash_get_str(ht, buffer) == (a + i), + "bad hashable item returned"); + } + xhash_free(ht); +@@ -134,14 +133,14 @@ START_TEST(test_find) + int i; + + /* test bad match */ +- fail_unless(xhash_get(ht, "bad") == NULL , "invalid case not null"); +- fail_unless(xhash_get(ht, "-1") == NULL , "invalid case not null"); +- fail_unless(xhash_get(ht, "10000") == NULL, "invalid case not null"); ++ fail_unless(xhash_get_str(ht, "bad") == NULL , "invalid case not null"); ++ fail_unless(xhash_get_str(ht, "-1") == NULL , "invalid case not null"); ++ fail_unless(xhash_get_str(ht, "10000") == NULL, "invalid case not null"); + + /* test all good indexes */ + for (i = 0; i < g_hashableslen; ++i) { + snprintf(buffer, sizeof(buffer), "%d", i); +- fail_unless(xhash_get(ht, buffer) == (g_hashables + i), ++ fail_unless(xhash_get_str(ht, buffer) == (g_hashables + i), + "bad hashable item returned"); + } + } +@@ -156,7 +155,7 @@ static int test_delete_helper() + char buffer[255]; + for (i = 0; i < g_hashableslen; ++i) { + snprintf(buffer, sizeof(buffer), "%d", i); +- if (xhash_get(ht, buffer) != (g_hashables + i)) { ++ if (xhash_get_str(ht, buffer) != (g_hashables + i)) { + ++ret; + } + } +@@ -170,10 +169,10 @@ START_TEST(test_delete) + char buffer[255]; + + /* invalid cases */ +- xhash_delete(NULL, "1"); +- fail_unless(xhash_get(ht, "1") != NULL, "invalid case null"); ++ xhash_delete_str(NULL, "1"); ++ fail_unless(xhash_get_str(ht, "1") != NULL, "invalid case null"); + /* Deleting non-existent item should do nothing. */ +- xhash_delete(ht, NULL); ++ xhash_delete(ht, NULL, 0); + fail_unless(xhash_count(ht) == g_hashableslen, + "invalid delete has been done"); + result = test_delete_helper(); +@@ -182,17 +181,17 @@ START_TEST(test_delete) + result); + + /* test correct deletion */ +- xhash_delete(ht, "10"); +- fail_unless(xhash_get(ht, "10") == NULL, "item not deleted"); ++ xhash_delete_str(ht, "10"); ++ fail_unless(xhash_get_str(ht, "10") == NULL, "item not deleted"); + fail_unless(xhash_count(ht) == (g_hashableslen-1), "bad count"); + /* left edge */ +- xhash_delete(ht, "0"); +- fail_unless(xhash_get(ht, "0") == NULL, "item not deleted"); ++ xhash_delete_str(ht, "0"); ++ fail_unless(xhash_get_str(ht, "0") == NULL, "item not deleted"); + fail_unless(xhash_count(ht) == (g_hashableslen-2), "bad count"); + /* right edge */ + snprintf(buffer, sizeof(buffer), "%u", (g_hashableslen-2)); +- xhash_delete(ht, buffer); +- fail_unless(xhash_get(ht, "0") == NULL, "item not deleted"); ++ xhash_delete_str(ht, buffer); ++ fail_unless(xhash_get_str(ht, "0") == NULL, "item not deleted"); + fail_unless(xhash_count(ht) == (g_hashableslen-3), "bad count"); + + result = test_delete_helper(); +commit b0db3f0fbfdfc9a7820f24c4b30adee696dc863a +Author: Morris Jette +Date: Fri Jun 7 07:57:26 2019 -0600 + + Modify "make check" to validate v1808 un/pack logic + + bug 7197 + +diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c +index d068fef66d..bbeeefc4a7 100644 +--- a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c ++++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c +@@ -32,29 +32,26 @@ START_TEST(invalid_protocol) + } + END_TEST + +-START_TEST(pack_1702_null_federation_rec) ++START_TEST(pack_1711_null_federation_rec) + { + int rc; + Buf buf = init_buf(1024); +- slurmdb_federation_rec_t pack_fr = {0}; + + slurmdb_pack_federation_rec(NULL, SLURM_MIN_PROTOCOL_VERSION, buf); + + set_buf_offset(buf, 0); + +- slurmdb_federation_rec_t *unpack_fr; ++ slurmdb_federation_rec_t *unpack_fr = NULL; + rc = slurmdb_unpack_federation_rec((void **)&unpack_fr, SLURM_MIN_PROTOCOL_VERSION, buf); +- ck_assert(rc == SLURM_SUCCESS); +- ck_assert(pack_fr.name == unpack_fr->name); +- ck_assert(pack_fr.flags == unpack_fr->flags); +- ck_assert(pack_fr.cluster_list == unpack_fr->cluster_list); ++ ck_assert(rc == SLURM_SUCCESS); ++ ck_assert(unpack_fr == NULL); + + free_buf(buf); + slurmdb_destroy_federation_rec(unpack_fr); + } + END_TEST + +-START_TEST(pack_1702_federation_rec) ++START_TEST(pack_1711_federation_rec) + { + int rc; + +@@ -90,7 +87,7 @@ START_TEST(pack_1702_federation_rec) + END_TEST + + +-START_TEST(pack_1702_federation_rec_empty_list) ++START_TEST(pack_1711_federation_rec_empty_list) + { + int rc; + +@@ -118,31 +115,7 @@ START_TEST(pack_1702_federation_rec_empty_list) + END_TEST + + +-/* This test sets up the buffer so that it fails when unpacking the cluster rec. +- */ +-START_TEST(pack_1702_federation_rec_fail) +-{ +- int rc; +- char *name = xstrdup("Saint Augustine"); +- Buf buf = init_buf(18*sizeof(uint32_t)); +- packstr(name, buf); +- pack32(7, buf); +- pack32(1, buf); +- +- set_buf_offset(buf, 0); +- +- slurmdb_federation_rec_t *unpack_fr; +- rc = slurmdb_unpack_federation_rec((void **)&unpack_fr, SLURM_MIN_PROTOCOL_VERSION, buf); +- ck_assert_int_eq(rc, SLURM_ERROR); +- +- free_buf(buf); +- xfree(name); +-} +-END_TEST +- +- +-/* 17.11 */ +-START_TEST(pack_1711_null_federation_rec) ++START_TEST(pack_1808_null_federation_rec) + { + int rc; + Buf buf = init_buf(1024); +@@ -161,7 +134,7 @@ START_TEST(pack_1711_null_federation_rec) + } + END_TEST + +-START_TEST(pack_1711_federation_rec) ++START_TEST(pack_1808_federation_rec) + { + int rc; + +@@ -197,7 +170,7 @@ START_TEST(pack_1711_federation_rec) + END_TEST + + +-START_TEST(pack_1711_federation_rec_empty_list) ++START_TEST(pack_1808_federation_rec_empty_list) + { + int rc; + +@@ -235,15 +208,14 @@ Suite* suite(void) + Suite* s = suite_create("Pack slurmdb_federation_rec_t"); + TCase* tc_core = tcase_create("Pack slurmdb_federation_rec_t"); + tcase_add_test(tc_core, invalid_protocol); +- tcase_add_test(tc_core, pack_1702_federation_rec); +- //tcase_add_test(tc_core, pack_1702_null_federation_rec); +- tcase_add_test(tc_core, pack_1702_federation_rec_empty_list); +- //tcase_add_test(tc_core, pack_1702_federation_rec_fail); +- + tcase_add_test(tc_core, pack_1711_federation_rec); + tcase_add_test(tc_core, pack_1711_null_federation_rec); + tcase_add_test(tc_core, pack_1711_federation_rec_empty_list); + ++ tcase_add_test(tc_core, pack_1808_federation_rec); ++ tcase_add_test(tc_core, pack_1808_null_federation_rec); ++ tcase_add_test(tc_core, pack_1808_federation_rec_empty_list); ++ + suite_add_tcase(s, tc_core); + return s; + } +commit 8aade6d1a3b25ee43b466f7c5624f5199b7bf0ec +Author: Morris Jette +Date: Fri Jun 7 08:14:50 2019 -0600 + + Rename some "make check" functions names to be generic + + bug 7197 + +diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c +index bbeeefc4a7..6a48164027 100644 +--- a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c ++++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c +@@ -32,7 +32,7 @@ START_TEST(invalid_protocol) + } + END_TEST + +-START_TEST(pack_1711_null_federation_rec) ++START_TEST(pack_back2_null_federation_rec) + { + int rc; + Buf buf = init_buf(1024); +@@ -51,7 +51,7 @@ START_TEST(pack_1711_null_federation_rec) + } + END_TEST + +-START_TEST(pack_1711_federation_rec) ++START_TEST(pack_back2_federation_rec) + { + int rc; + +@@ -87,7 +87,7 @@ START_TEST(pack_1711_federation_rec) + END_TEST + + +-START_TEST(pack_1711_federation_rec_empty_list) ++START_TEST(pack_back2_federation_rec_empty_list) + { + int rc; + +@@ -115,7 +115,7 @@ START_TEST(pack_1711_federation_rec_empty_list) + END_TEST + + +-START_TEST(pack_1808_null_federation_rec) ++START_TEST(pack_back1_null_federation_rec) + { + int rc; + Buf buf = init_buf(1024); +@@ -134,7 +134,7 @@ START_TEST(pack_1808_null_federation_rec) + } + END_TEST + +-START_TEST(pack_1808_federation_rec) ++START_TEST(pack_back1_federation_rec) + { + int rc; + +@@ -170,7 +170,7 @@ START_TEST(pack_1808_federation_rec) + END_TEST + + +-START_TEST(pack_1808_federation_rec_empty_list) ++START_TEST(pack_back1_federation_rec_empty_list) + { + int rc; + +@@ -208,13 +208,13 @@ Suite* suite(void) + Suite* s = suite_create("Pack slurmdb_federation_rec_t"); + TCase* tc_core = tcase_create("Pack slurmdb_federation_rec_t"); + tcase_add_test(tc_core, invalid_protocol); +- tcase_add_test(tc_core, pack_1711_federation_rec); +- tcase_add_test(tc_core, pack_1711_null_federation_rec); +- tcase_add_test(tc_core, pack_1711_federation_rec_empty_list); ++ tcase_add_test(tc_core, pack_back2_federation_rec); ++ tcase_add_test(tc_core, pack_back2_null_federation_rec); ++ tcase_add_test(tc_core, pack_back2_federation_rec_empty_list); + +- tcase_add_test(tc_core, pack_1808_federation_rec); +- tcase_add_test(tc_core, pack_1808_null_federation_rec); +- tcase_add_test(tc_core, pack_1808_federation_rec_empty_list); ++ tcase_add_test(tc_core, pack_back1_federation_rec); ++ tcase_add_test(tc_core, pack_back1_null_federation_rec); ++ tcase_add_test(tc_core, pack_back1_federation_rec_empty_list); + + suite_add_tcase(s, tc_core); + return s; +commit 549b1a3e6a8f6a677228209a2520595ffb42f98c +Author: Morris Jette +Date: Fri Jun 7 09:50:14 2019 -0600 + + Make check tests made more generic + +diff --git a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c +index ca95f636a8..85adb59ed1 100644 +--- a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c ++++ b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c +@@ -33,7 +33,7 @@ START_TEST(pack_null_req) + END_TEST + #endif + +-START_TEST(pack_1702_req_null_ptrs) ++START_TEST(pack_back2_req_null_ptrs) + { + int rc; + Buf buf = init_buf(1024); +@@ -59,7 +59,7 @@ START_TEST(pack_1702_req_null_ptrs) + unpack_req = (job_alloc_info_msg_t *)msg.data; + ck_assert_int_eq(rc, SLURM_SUCCESS); + ck_assert(unpack_req); +- //ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ ++ ck_assert(!unpack_req->req_cluster); + ck_assert_uint_eq(unpack_req->job_id, pack_req.job_id); + + free_buf(buf); +@@ -67,7 +67,7 @@ START_TEST(pack_1702_req_null_ptrs) + } + END_TEST + +-START_TEST(pack_1702_req) ++START_TEST(pack_back2_req) + { + int rc; + Buf buf = init_buf(1024); +@@ -103,7 +103,7 @@ START_TEST(pack_1702_req) + } + END_TEST + +-START_TEST(pack_1711_req_null_ptrs) ++START_TEST(pack_back1_req_null_ptrs) + { + int rc; + Buf buf = init_buf(1024); +@@ -136,7 +136,7 @@ START_TEST(pack_1711_req_null_ptrs) + } + END_TEST + +-START_TEST(pack_1711_req) ++START_TEST(pack_back1_req) + { + int rc; + Buf buf = init_buf(1024); +@@ -188,10 +188,10 @@ Suite* suite(SRunner *sr) + if (srunner_fork_status(sr) != CK_NOFORK) + tcase_add_test_raise_signal(tc_core, pack_null_req, SIGABRT); + #endif +- tcase_add_test(tc_core, pack_1702_req_null_ptrs); +- tcase_add_test(tc_core, pack_1702_req); +- tcase_add_test(tc_core, pack_1711_req_null_ptrs); +- tcase_add_test(tc_core, pack_1711_req); ++ tcase_add_test(tc_core, pack_back2_req_null_ptrs); ++ tcase_add_test(tc_core, pack_back2_req); ++ tcase_add_test(tc_core, pack_back1_req_null_ptrs); ++ tcase_add_test(tc_core, pack_back1_req); + suite_add_tcase(s, tc_core); + return s; + } +diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c +index c58149b48f..b2c6042888 100644 +--- a/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c ++++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c +@@ -20,7 +20,7 @@ START_TEST(invalid_protocol) + } + END_TEST + +-START_TEST(pack_1702_null_rec) ++START_TEST(pack_back2_null_rec) + { + int rc; + slurmdb_cluster_rec_t pack_rec; +@@ -64,7 +64,7 @@ START_TEST(pack_1702_null_rec) + } + END_TEST + +-START_TEST(pack_1702_rec) ++START_TEST(pack_back2_rec) + { + int rc; + Buf buf = init_buf(1024); +@@ -85,6 +85,9 @@ START_TEST(pack_1702_rec) + pack_rec.name = xstrdup("name"); + pack_rec.nodes = xstrdup("nodes"); + pack_rec.plugin_id_select = 8; ++ pack_rec.fed.feature_list = list_create(slurm_destroy_char); ++ slurm_addto_mode_char_list(pack_rec.fed.feature_list, "a,b,c", 0); ++ ck_assert_int_eq(list_count(pack_rec.fed.feature_list), 3); + + /* will be tested separately. */ + pack_rec.root_assoc = NULL; +@@ -126,9 +129,14 @@ START_TEST(pack_1702_rec) + ck_assert_str_eq(pack_rec.name, unpack_rec->name); + ck_assert_str_eq(pack_rec.nodes, unpack_rec->nodes); + +- /* 17.11 */ +- ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list); +- ++ char *feature; ++ ck_assert_int_eq(list_count(pack_rec.fed.feature_list), list_count(unpack_rec->fed.feature_list)); ++ ListIterator itr = list_iterator_create(pack_rec.fed.feature_list); ++ while ((feature = list_next(itr))) { ++ if (!list_find_first(unpack_rec->fed.feature_list, slurm_find_char_in_list, feature)) ++ ck_abort_msg("Didn't find feature %s in unpacked list", ++ feature); ++ } + + FREE_NULL_LIST(pack_rec.accounting_list); + xfree(pack_rec.control_host); +@@ -140,7 +148,7 @@ START_TEST(pack_1702_rec) + } + END_TEST + +-START_TEST(pack_1702_rec_null_ptrs) ++START_TEST(pack_back2_rec_null_ptrs) + { + Buf buf = init_buf(1024); + slurmdb_cluster_rec_t pack_rec = {0}; +@@ -185,7 +193,6 @@ START_TEST(pack_1702_rec_null_ptrs) + ck_assert(pack_rec.rpc_version == unpack_rec->rpc_version); + ck_assert(pack_rec.fed.recv == unpack_rec->fed.recv); + ck_assert(pack_rec.fed.send == unpack_rec->fed.send); +- /* 17.11 */ + ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list); + + free_buf(buf); +@@ -193,7 +200,7 @@ START_TEST(pack_1702_rec_null_ptrs) + } + END_TEST + +-START_TEST(pack_1711_null_rec) ++START_TEST(pack_back1_null_rec) + { + int rc; + slurmdb_cluster_rec_t pack_rec; +@@ -204,7 +211,6 @@ START_TEST(pack_1711_null_rec) + pack_rec.fed.state = 0; + pack_rec.dimensions = 1; + pack_rec.plugin_id_select = NO_VAL; +- + slurmdb_pack_cluster_rec(NULL, SLURM_ONE_BACK_PROTOCOL_VERSION, buf); + + set_buf_offset(buf, 0); +@@ -218,7 +224,6 @@ START_TEST(pack_1711_null_rec) + ck_assert(pack_rec.nodes == unpack_rec->nodes); + ck_assert(pack_rec.fed.recv == unpack_rec->fed.recv); + ck_assert(pack_rec.fed.send == unpack_rec->fed.send); +- /* 17.11 */ + ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list); + + /* root_assoc gets unpacked into a empty structure */ +@@ -237,7 +242,7 @@ START_TEST(pack_1711_null_rec) + } + END_TEST + +-START_TEST(pack_1711_rec) ++START_TEST(pack_back1_rec) + { + int rc; + Buf buf = init_buf(1024); +@@ -302,7 +307,6 @@ START_TEST(pack_1711_rec) + ck_assert_str_eq(pack_rec.name, unpack_rec->name); + ck_assert_str_eq(pack_rec.nodes, unpack_rec->nodes); + +- /* 17.11 */ + char *feature; + ck_assert_int_eq(list_count(pack_rec.fed.feature_list), list_count(unpack_rec->fed.feature_list)); + ListIterator itr = list_iterator_create(pack_rec.fed.feature_list); +@@ -322,7 +326,7 @@ START_TEST(pack_1711_rec) + } + END_TEST + +-START_TEST(pack_1711_rec_null_ptrs) ++START_TEST(pack_back1_rec_null_ptrs) + { + Buf buf = init_buf(1024); + slurmdb_cluster_rec_t pack_rec = {0}; +@@ -367,7 +371,6 @@ START_TEST(pack_1711_rec_null_ptrs) + ck_assert(pack_rec.rpc_version == unpack_rec->rpc_version); + ck_assert(pack_rec.fed.recv == unpack_rec->fed.recv); + ck_assert(pack_rec.fed.send == unpack_rec->fed.send); +- /* 17.11 */ + ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list); + + free_buf(buf); +@@ -385,13 +388,13 @@ Suite* suite(void) + TCase* tc_core = tcase_create("Pack slurmdb_cluster_rec_t"); + tcase_add_test(tc_core, invalid_protocol); + +- tcase_add_test(tc_core, pack_1711_null_rec); +- tcase_add_test(tc_core, pack_1711_rec); +- tcase_add_test(tc_core, pack_1711_rec_null_ptrs); ++ tcase_add_test(tc_core, pack_back1_null_rec); ++ tcase_add_test(tc_core, pack_back1_rec); ++ tcase_add_test(tc_core, pack_back1_rec_null_ptrs); + +- tcase_add_test(tc_core, pack_1702_null_rec); +- tcase_add_test(tc_core, pack_1702_rec); +- tcase_add_test(tc_core, pack_1702_rec_null_ptrs); ++ tcase_add_test(tc_core, pack_back2_null_rec); ++ tcase_add_test(tc_core, pack_back2_rec); ++ tcase_add_test(tc_core, pack_back2_rec_null_ptrs); + + suite_add_tcase(s, tc_core); + return s; diff --git a/slurm_to_python3.patch b/slurm_to_python3.patch index fdfcbe8..c60e941 100644 --- a/slurm_to_python3.patch +++ b/slurm_to_python3.patch @@ -38,16 +38,6 @@ index 54909096b9..93433d6fa3 100755 import re import sys -diff --git a/testsuite/expect/driveregress.py b/testsuite/expect/driveregress.py -index 8019615953..4e7eb7ca0f 100755 ---- a/testsuite/expect/driveregress.py -+++ b/testsuite/expect/driveregress.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - - ############################################################################ - # Copyright (C) 2011-2013 SchedMD LLC diff --git a/testsuite/expect/regression.py b/testsuite/expect/regression.py index 938aecc154..ea64c7cce0 100755 --- a/testsuite/expect/regression.py diff --git a/sources b/sources index dff51b9..bcddb1a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (slurm-18.08.7.tar.bz2) = d0047086f1b716877cc5bb39539bf96a8fd08b1851c85fd85112c6432c1ce2a0f29fc9dd8803094c8fa44d063cec5f417e6bed231b6d338934ff4b48424a5a93 +SHA512 (slurm-19.05.0.tar.bz2) = f91efbd8c96c5c25dcf7c3f73f61ab9b5d591a554447e5a7db0346ace2e9a1053bebce5f16e9d15c23d78743319997aaac51f6d5bceda7cfaa4877a6f439cff1 From 8cb979feb927d2083597acd50c9027930d1298ce Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Sun, 9 Jun 2019 18:43:43 -0400 Subject: [PATCH 03/15] Exclude upstream-deprecated 32-bit architectures --- slurm.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/slurm.spec b/slurm.spec index debed12..80a2840 100644 --- a/slurm.spec +++ b/slurm.spec @@ -12,7 +12,7 @@ Name: slurm Version: 19.05.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Simple Linux Utility for Resource Management License: GPLv2 and BSD URL: https://slurm.schedmd.com/ @@ -76,6 +76,10 @@ BuildRequires: rdma-core-devel BuildRequires: numactl-devel %endif +# exclude upstream-deprecated 32-bit architectures +ExcludeArch: armv7hl +ExcludeArch: i686 + Requires: munge Requires: pmix >= 2.0.0 %{?systemd_requires} @@ -726,6 +730,9 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %systemd_postun_with_restart slurmdbd.service %changelog +* Sun Jun 9 2019 Philip Kovacs - 19.05.0-2 +- Exclude upstream-deprecated 32-bit architectures + * Sun Jun 9 2019 Philip Kovacs - 19.05.0-1 - Release of 19.05.0 - Added nss_plugin subpackage for optional nss plugin From f36519459da1d06c61e0e4a54e4def14f5936f49 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 12 Jun 2019 17:23:22 +0200 Subject: [PATCH 04/15] Use perl-macros, because in rpm 4.15 perl macros are no longer defined --- slurm.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/slurm.spec b/slurm.spec index 80a2840..490db74 100644 --- a/slurm.spec +++ b/slurm.spec @@ -47,6 +47,7 @@ BuildRequires: gcc BuildRequires: perl-devel BuildRequires: perl-ExtUtils-MakeMaker BuildRequires: perl-interpreter +BuildRequires: perl-macros BuildRequires: perl-podlators BuildRequires: pkgconf BuildRequires: pkgconfig(check) From a4e1fabcab4841158253b95f30c4713c0ecfc105 Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Wed, 19 Jun 2019 00:31:49 -0400 Subject: [PATCH 05/15] Stop using autotools macros that were removed from rpm --- slurm.spec | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/slurm.spec b/slurm.spec index 490db74..79528fb 100644 --- a/slurm.spec +++ b/slurm.spec @@ -12,7 +12,7 @@ Name: slurm Version: 19.05.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Simple Linux Utility for Resource Management License: GPLv2 and BSD URL: https://slurm.schedmd.com/ @@ -225,9 +225,9 @@ mkdir -p extras cp %SOURCE5 extras/%{name}-setuser.in %build -%{__aclocal} -I auxdir -%{__autoconf} -%{__automake} --no-force +aclocal -I auxdir +autoconf +automake --no-force # use -z lazy to allow dlopen with unresolved symbols %configure \ LDFLAGS="$LDFLAGS -Wl,-z,lazy" \ @@ -731,6 +731,9 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %systemd_postun_with_restart slurmdbd.service %changelog +* Wed Jun 19 2019 Philip Kovacs - 19.05.0-3 +- Stop using autotools macros that were removed from rpm + * Sun Jun 9 2019 Philip Kovacs - 19.05.0-2 - Exclude upstream-deprecated 32-bit architectures From d2a9192464fbacdfa0cc6e21e5166d921bf70b2f Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Wed, 19 Jun 2019 16:48:42 -0400 Subject: [PATCH 06/15] Use make_build macro instead of make Signed-off-by: Philip Kovacs --- slurm.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/slurm.spec b/slurm.spec index 79528fb..03fd950 100644 --- a/slurm.spec +++ b/slurm.spec @@ -264,16 +264,16 @@ s|^dir_tmpfiles_d=.*|dir_tmpfiles_d="%{_tmpfilesdir}"|g;' \ # build contribs packages # INSTALLDIRS=vendor so perlapi goes to vendor_perl directory -PERL_MM_PARAMS="INSTALLDIRS=vendor" %make_build contrib V=1 +%make_build PERL_MM_PARAMS="INSTALLDIRS=vendor" contrib V=1 %check # The test binaries need LD_LIBRARY_PATH to find the compiled slurm library # in the build tree. -LD_LIBRARY_PATH="%{buildroot}%{_libdir};%{_libdir}" %{__make} check +%make_build LD_LIBRARY_PATH="%{buildroot}%{_libdir};%{_libdir}" check %install %make_install -%{__make} install-contrib DESTDIR=%{buildroot} +%make_build DESTDIR=%{buildroot} install-contrib install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name} install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/layouts.d From 24291ca62cd466571a379e15a20d108c83353361 Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Wed, 19 Jun 2019 20:41:50 -0400 Subject: [PATCH 07/15] Correct the configure for pmix Correct the slurm_pmix_soname patch --- slurm.spec | 7 +++++-- slurm_pmix_soname.patch | 30 +++++++++++++----------------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/slurm.spec b/slurm.spec index 03fd950..50cb3d7 100644 --- a/slurm.spec +++ b/slurm.spec @@ -12,7 +12,7 @@ Name: slurm Version: 19.05.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Simple Linux Utility for Resource Management License: GPLv2 and BSD URL: https://slurm.schedmd.com/ @@ -234,7 +234,6 @@ automake --no-force --prefix=%{_prefix} \ --sysconfdir=%{_sysconfdir}/%{name} \ --with-pam_dir=%{_libdir}/security \ - --with-pmix \ --enable-shared \ --enable-x11 \ --disable-static \ @@ -731,6 +730,10 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %systemd_postun_with_restart slurmdbd.service %changelog +* Wed Jun 19 2019 Philip Kovacs - 19.05.0-4 +- Correct the configure for pmix +- Correct the slurm_pmix_soname patch + * Wed Jun 19 2019 Philip Kovacs - 19.05.0-3 - Stop using autotools macros that were removed from rpm diff --git a/slurm_pmix_soname.patch b/slurm_pmix_soname.patch index 1ab15db..7557569 100644 --- a/slurm_pmix_soname.patch +++ b/slurm_pmix_soname.patch @@ -1,27 +1,23 @@ diff --git a/src/plugins/mpi/pmix/mpi_pmix.c b/src/plugins/mpi/pmix/mpi_pmix.c -index 1a0998d213..c8241056bc 100644 +index bbb947616c..65ec00ad73 100644 --- a/src/plugins/mpi/pmix/mpi_pmix.c +++ b/src/plugins/mpi/pmix/mpi_pmix.c -@@ -79,10 +79,13 @@ const char plugin_name[] = "PMIx plugin"; - - #if (HAVE_PMIX_VER == 1) - const char plugin_type[] = "mpi/pmix_v1"; -+const char libpmix_soname[] = "libpmix.so.1"; - #elif (HAVE_PMIX_VER == 2) - const char plugin_type[] = "mpi/pmix_v2"; -+const char libpmix_soname[] = "libpmix.so.2"; - #elif (HAVE_PMIX_VER == 3) - const char plugin_type[] = "mpi/pmix_v3"; -+const char libpmix_soname[] = "libpmix.so.3"; - #endif - - const uint32_t plugin_version = SLURM_VERSION_NUMBER; -@@ -105,7 +108,7 @@ static void *_libpmix_open(void) +@@ -105,10 +105,17 @@ static void *_libpmix_open(void) #elif defined PMIXP_V2_LIBPATH xstrfmtcat(full_path, "%s/", PMIXP_V2_LIBPATH); #endif - xstrfmtcat(full_path, "libpmix.so"); -+ xstrfmtcat(full_path, libpmix_soname); ++ xstrfmtcat(full_path, "libpmix.so.2"); lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL); xfree(full_path); ++ if (!lib_plug) { ++ dlerror(); ++ xstrfmtcat(full_path, "libpmix.so.1"); ++ lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL); ++ xfree(full_path); ++ } ++ + if (lib_plug && (HAVE_PMIX_VER != pmixp_lib_get_version())) { + PMIXP_ERROR("pmi/pmix: incorrect PMIx library version loaded %d was loaded, required %d version", + pmixp_lib_get_version(), (int)HAVE_PMIX_VER); From 1173b391dcadc987bd7349a2fffe4b1f5d4925ed Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Tue, 2 Jul 2019 02:18:07 -0400 Subject: [PATCH 08/15] Do not install slurm implementation of libpmi/pmi2 libraries in favor of the faster implementation provided by pmix Remove pmi environment module formerly used to select the slurm vs pmix implementations of libpmi/pmi2 --- slurm.spec | 71 ++++++++++-------------------------------------------- 1 file changed, 13 insertions(+), 58 deletions(-) diff --git a/slurm.spec b/slurm.spec index 50cb3d7..af321c4 100644 --- a/slurm.spec +++ b/slurm.spec @@ -12,7 +12,7 @@ Name: slurm Version: 19.05.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Simple Linux Utility for Resource Management License: GPLv2 and BSD URL: https://slurm.schedmd.com/ @@ -41,7 +41,6 @@ Patch22: slurm_to_python3.patch BuildRequires: autoconf BuildRequires: automake -BuildRequires: environment(modules) BuildRequires: desktop-file-utils BuildRequires: gcc BuildRequires: perl-devel @@ -117,8 +116,6 @@ and their respective man pages. %package libs Summary: Slurm shared libraries -Provides: pmi -Requires: environment(modules) %description libs Slurm shared libraries. @@ -259,11 +256,11 @@ s|^dir_tmpfiles_d=.*|dir_tmpfiles_d="%{_tmpfilesdir}"|g;' \ extras/%{name}-setuser.in > extras/%{name}-setuser # build base packages -%make_build V=1 +%make_build # build contribs packages # INSTALLDIRS=vendor so perlapi goes to vendor_perl directory -%make_build PERL_MM_PARAMS="INSTALLDIRS=vendor" contrib V=1 +%make_build PERL_MM_PARAMS="INSTALLDIRS=vendor" contrib %check # The test binaries need LD_LIBRARY_PATH to find the compiled slurm library @@ -321,18 +318,6 @@ touch %{buildroot}%{_rundir}/%{name}/slurmctld.pid touch %{buildroot}%{_rundir}/%{name}/slurmd.pid touch %{buildroot}%{_rundir}/%{name}/slurmdbd.pid -# install pmi/slurm environment module file -install -d -m 0755 %{buildroot}%{_modulesdir}/pmi -cat >%{buildroot}%{_modulesdir}/pmi/%{name}-%{_arch} <%{buildroot}%{_libdir}/pkgconfig/%{name}.pc <%{buildroot}%{_libdir}/%{name}/lib/pkgconfig/pmi.pc <%{buildroot}%{_libdir}/%{name}/lib/pkgconfig/pmi2.pc < - 19.05.0-5 +- Do not install slurm implementation of libpmi/pmi2 libraries +- in favor of the faster implementation provided by pmix +- Remove pmi environment module formerly used to select the slurm +- vs pmix implementations of libpmi/pmi2 + * Wed Jun 19 2019 Philip Kovacs - 19.05.0-4 - Correct the configure for pmix - Correct the slurm_pmix_soname patch From 77f0f529c536b0be6a0f066ff00d7bedbff21a03 Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Fri, 5 Jul 2019 09:53:19 -0400 Subject: [PATCH 09/15] use pmix as default mpi --- slurm.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slurm.conf b/slurm.conf index e84d7a7..06539c9 100644 --- a/slurm.conf +++ b/slurm.conf @@ -31,7 +31,7 @@ CryptoType=crypto/munge #MaxJobCount=5000 #MaxStepCount=40000 #MaxTasksPerNode=128 -MpiDefault=none +MpiDefault=pmix #MpiParams=ports=#-# #PluginDir= #PlugStackConfig= From 8f4e4663ab70a8382aa06201e518373c2ca44d46 Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Fri, 5 Jul 2019 10:40:05 -0400 Subject: [PATCH 10/15] fix bad merge --- slurm.conf | 2 +- slurm.spec | 78 +++++++++------------------ slurm_do_not_build_cray.patch | 99 ++--------------------------------- slurm_to_python3.patch | 10 ++++ 4 files changed, 40 insertions(+), 149 deletions(-) diff --git a/slurm.conf b/slurm.conf index 06539c9..e84d7a7 100644 --- a/slurm.conf +++ b/slurm.conf @@ -31,7 +31,7 @@ CryptoType=crypto/munge #MaxJobCount=5000 #MaxStepCount=40000 #MaxTasksPerNode=128 -MpiDefault=pmix +MpiDefault=none #MpiParams=ports=#-# #PluginDir= #PlugStackConfig= diff --git a/slurm.spec b/slurm.spec index af321c4..52d6717 100644 --- a/slurm.spec +++ b/slurm.spec @@ -11,8 +11,8 @@ %undefine _strict_symbol_defs_build Name: slurm -Version: 19.05.0 -Release: 5%{?dist} +Version: 18.08.7 +Release: 3%{?dist} Summary: Simple Linux Utility for Resource Management License: GPLv2 and BSD URL: https://slurm.schedmd.com/ @@ -25,8 +25,6 @@ Source5: slurm-setuser.in # Upstream bug #4449: release-style versioning of libslurmfull Patch0: slurm_libslurmfull_version.patch -# Upstream bug #7197: fix 19.05.0 testsuite -Patch1: slurm_fix_testsuite.patch # Build-related patches Patch10: slurm_perlapi_rpaths.patch @@ -46,7 +44,6 @@ BuildRequires: gcc BuildRequires: perl-devel BuildRequires: perl-ExtUtils-MakeMaker BuildRequires: perl-interpreter -BuildRequires: perl-macros BuildRequires: perl-podlators BuildRequires: pkgconf BuildRequires: pkgconfig(check) @@ -66,6 +63,7 @@ BuildRequires: pkgconfig(lua) BuildRequires: pkgconfig(mariadb) BuildRequires: pkgconfig(munge) BuildRequires: pkgconfig(ncurses) +BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(pmix) >= 2.0.0 BuildRequires: pkgconfig(zlib) BuildRequires: readline-devel @@ -76,10 +74,6 @@ BuildRequires: rdma-core-devel BuildRequires: numactl-devel %endif -# exclude upstream-deprecated 32-bit architectures -ExcludeArch: armv7hl -ExcludeArch: i686 - Requires: munge Requires: pmix >= 2.0.0 %{?systemd_requires} @@ -160,15 +154,6 @@ Slurm contribution package which includes the programs seff, sjobexitmod, sjstat and smail. See their respective man pages for more information. -%package nss_slurm -Summary: NSS plugin for slurm -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -%description nss_slurm -nss_slurm is an optional NSS plugin that can permit passwd and group resolution -for a job on the compute node to be serviced through the local slurmstepd -process, rather than through some alternate network-based service such as LDAP, -SSSD, or NSLCD. - %package openlava Summary: Openlava/LSF wrappers for transition from OpenLava/LSF to Slurm Requires: %{name}-perlapi%{?_isa} = %{version}-%{release} @@ -202,7 +187,6 @@ Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm. %prep %setup -q -n %{name_version} %patch0 -p1 -%patch1 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 @@ -362,7 +346,7 @@ done # contribs docs install -d -m 0755 %{buildroot}%{_docdir}/%{name}/contribs/lua install -m 0644 contribs/README %{buildroot}%{_docdir}/%{name}/contribs -install -m 0644 contribs/lua/*.lua %{buildroot}%{_docdir}/%{name}/contribs/lua +install -m 0644 contribs/lua/proctrack.lua %{buildroot}%{_docdir}/%{name}/contribs/lua # remove libtool archives find %{buildroot} -name \*.a -o -name \*.la | xargs rm -f @@ -378,7 +362,18 @@ rm -f %{buildroot}%{_libdir}/%{name}/auth_none.so rm -f %{buildroot}%{_libdir}/%{name}/job_submit_defaults.so rm -f %{buildroot}%{_libdir}/%{name}/job_submit_logging.so rm -f %{buildroot}%{_libdir}/%{name}/job_submit_partition.so +# remove bluegene files +rm -f %{buildroot}%{_libdir}/%{name}/select_bluegene.so +rm -f %{buildroot}%{_mandir}/man5/bluegene* # remove cray files +rm -f %{buildroot}%{_libdir}/%{name}/acct_gather_energy_cray.so +rm -f %{buildroot}%{_libdir}/%{name}/core_spec_cray.so +rm -f %{buildroot}%{_libdir}/%{name}/job_container_cncu.so +rm -f %{buildroot}%{_libdir}/%{name}/job_submit_cray.so +rm -f %{buildroot}%{_libdir}/%{name}/select_alps.so +rm -f %{buildroot}%{_libdir}/%{name}/select_cray.so +rm -f %{buildroot}%{_libdir}/%{name}/switch_cray.so +rm -f %{buildroot}%{_libdir}/%{name}/task_cray.so rm -f %{buildroot}%{_mandir}/man5/cray* # remove perl cruft rm -f %{buildroot}%{perl_vendorarch}/auto/Slurm*/.packlist @@ -417,12 +412,11 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %{_libdir}/%{name}/auth_munge.so %{_libdir}/%{name}/burst_buffer_generic.so %{_libdir}/%{name}/checkpoint_{none,ompi}.so -%{_libdir}/%{name}/cli_filter_none.so %{_libdir}/%{name}/core_spec_none.so -%{_libdir}/%{name}/cred_{munge,none}.so +%{_libdir}/%{name}/crypto_munge.so +%{_libdir}/%{name}/crypto_openssl.so %{_libdir}/%{name}/ext_sensors_none.so -%{_libdir}/%{name}/gres_{gpu,mic,mps,nic}.so -%{_libdir}/%{name}/gpu_generic.so +%{_libdir}/%{name}/gres_{gpu,mic,nic}.so %{_libdir}/%{name}/job_container_none.so %{_libdir}/%{name}/job_submit_all_partitions.so %{_libdir}/%{name}/job_submit_lua.so @@ -442,8 +436,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %{_libdir}/%{name}/proctrack_{cgroup,linuxproc,lua,pgid}.so %{_libdir}/%{name}/route_{default,topology}.so %{_libdir}/%{name}/sched_{backfill,builtin,hold}.so -%{_libdir}/%{name}/select_{cons_res,cons_tres,linear,serial}.so -%{_libdir}/%{name}/site_factor_none.so +%{_libdir}/%{name}/select_{cons_res,linear,serial}.so %{_libdir}/%{name}/slurmctld_nonstop.so %{_libdir}/%{name}/switch_{generic,none}.so %{_libdir}/%{name}/task_{affinity,cgroup,none}.so @@ -515,6 +508,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %files libs %{_libdir}/libslurm.so.* +%{_libdir}/libslurmdb.so.* %{_libdir}/libslurmfull-*.so # ------------- @@ -569,7 +563,7 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %dir %{_docdir}/%{name}/contribs %dir %{_docdir}/%{name}/contribs/lua %{_docdir}/%{name}/contribs/README -%{_docdir}/%{name}/contribs/lua/*.lua +%{_docdir}/%{name}/contribs/lua/proctrack.lua %{_bindir}/seff %{_bindir}/sgather %{_bindir}/sjobexitmod @@ -579,13 +573,6 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %{_mandir}/man1/sjobexitmod.1* %{_mandir}/man1/sjstat.1* -# --------------- -# Slurm-nss_slurm -# --------------- - -%files nss_slurm -%{_libdir}/libnss_slurm.so.2 - # -------------- # Slurm-openlava # -------------- @@ -679,32 +666,17 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %systemd_postun_with_restart slurmdbd.service %changelog -* Tue Jul 2 2019 Philip Kovacs - 19.05.0-5 +* Tue Jul 2 2019 Philip Kovacs - 18.08.7-3 - Do not install slurm implementation of libpmi/pmi2 libraries - in favor of the faster implementation provided by pmix - Remove pmi environment module formerly used to select the slurm - vs pmix implementations of libpmi/pmi2 -* Wed Jun 19 2019 Philip Kovacs - 19.05.0-4 +* Wed Jun 19 2019 Philip Kovacs - 18.08.7-2 - Correct the configure for pmix - Correct the slurm_pmix_soname patch - -* Wed Jun 19 2019 Philip Kovacs - 19.05.0-3 -- Stop using autotools macros that were removed from rpm - -* Sun Jun 9 2019 Philip Kovacs - 19.05.0-2 -- Exclude upstream-deprecated 32-bit architectures - -* Sun Jun 9 2019 Philip Kovacs - 19.05.0-1 -- Release of 19.05.0 -- Added nss_plugin subpackage for optional nss plugin -- Added patch to fix 19.05.0 testsuite -- Adjusted cray patch to remove all cray, cray_aries plugins -- Reflect all upstream plugin additions/deletions -- Remove openssl build dependency - -* Thu May 30 2019 Jitka Plesnikova - 18.08.7-2 -- Perl 5.30 rebuild +- Use make_build macro instead of make +- Use autotools commands instead of rpm macros * Fri Apr 12 2019 Philip Kovacs - 18.08.7-1 - Release of 18.08.7 diff --git a/slurm_do_not_build_cray.patch b/slurm_do_not_build_cray.patch index 8b994dc..7ec7ecc 100644 --- a/slurm_do_not_build_cray.patch +++ b/slurm_do_not_build_cray.patch @@ -1,101 +1,10 @@ diff --git a/contribs/Makefile.am b/contribs/Makefile.am -index da96aa070d..2a2d1f2c82 100644 +index 24ab9de7cc..087262c347 100644 --- a/contribs/Makefile.am +++ b/contribs/Makefile.am @@ -1,4 +1,4 @@ --SUBDIRS = cray lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque -+SUBDIRS = lua mic nss_slurm openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque +-SUBDIRS = cray lua mic openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque ++SUBDIRS = lua mic openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque EXTRA_DIST = \ - make-3.81.slurm.patch \ -diff --git a/src/plugins/acct_gather_energy/Makefile.am b/src/plugins/acct_gather_energy/Makefile.am -index 50c4fd36a2..c826387219 100644 ---- a/src/plugins/acct_gather_energy/Makefile.am -+++ b/src/plugins/acct_gather_energy/Makefile.am -@@ -1,3 +1,3 @@ - # Makefile for accounting gather energy plugins - --SUBDIRS = cray_aries rapl ibmaem ipmi none xcc -+SUBDIRS = rapl ibmaem ipmi none xcc -diff --git a/src/plugins/core_spec/Makefile.am b/src/plugins/core_spec/Makefile.am -index 44b1ed67c0..f06bc541d7 100644 ---- a/src/plugins/core_spec/Makefile.am -+++ b/src/plugins/core_spec/Makefile.am -@@ -1,3 +1,3 @@ - # Makefile for core specialization plugins - --SUBDIRS = cray_aries none -+SUBDIRS = none -diff --git a/src/plugins/job_container/Makefile.am b/src/plugins/job_container/Makefile.am -index 8e1960a456..529a9d581d 100644 ---- a/src/plugins/job_container/Makefile.am -+++ b/src/plugins/job_container/Makefile.am -@@ -1,3 +1,3 @@ - # Makefile for job_container plugins - --SUBDIRS = cncu none -+SUBDIRS = none -diff --git a/src/plugins/job_submit/Makefile.am b/src/plugins/job_submit/Makefile.am -index e393bcfb1c..b98cf2e000 100644 ---- a/src/plugins/job_submit/Makefile.am -+++ b/src/plugins/job_submit/Makefile.am -@@ -2,7 +2,6 @@ - - SUBDIRS = \ - all_partitions \ -- cray_aries \ - defaults \ - logging \ - lua \ -diff --git a/src/plugins/node_features/Makefile.am b/src/plugins/node_features/Makefile.am -index f5ef036303..d955c51ba1 100644 ---- a/src/plugins/node_features/Makefile.am -+++ b/src/plugins/node_features/Makefile.am -@@ -1,3 +1,3 @@ - # Makefile for node_features plugins - --SUBDIRS = knl_cray knl_generic -+SUBDIRS = knl_generic -diff --git a/src/plugins/power/Makefile.am b/src/plugins/power/Makefile.am -index ccde44c322..c6171740c1 100644 ---- a/src/plugins/power/Makefile.am -+++ b/src/plugins/power/Makefile.am -@@ -1,3 +1,3 @@ - # Makefile for power management plugins - --SUBDIRS = common cray_aries none -+SUBDIRS = common none -diff --git a/src/plugins/select/Makefile.am b/src/plugins/select/Makefile.am -index 09fdfd2313..570af23c4a 100644 ---- a/src/plugins/select/Makefile.am -+++ b/src/plugins/select/Makefile.am -@@ -1,7 +1,7 @@ - # Makefile for node selection plugins - - # NOTE: other must be in the list before cray_aries lest the build break --SUBDIRS = other cons_res cons_tres cray_aries linear -+SUBDIRS = other cons_res cons_tres linear - - # Each plugin here needs a plugin_id, here are the currect plug_ids - # for each plugin. -diff --git a/src/plugins/switch/Makefile.am b/src/plugins/switch/Makefile.am -index ddfe019a65..39a2b3eb7f 100644 ---- a/src/plugins/switch/Makefile.am -+++ b/src/plugins/switch/Makefile.am -@@ -1,3 +1,3 @@ - # Makefile for switch plugins - --SUBDIRS = cray_aries generic none -+SUBDIRS = generic none -diff --git a/src/plugins/task/Makefile.am b/src/plugins/task/Makefile.am -index 8d2a36eb68..607af1cb7c 100644 ---- a/src/plugins/task/Makefile.am -+++ b/src/plugins/task/Makefile.am -@@ -1,6 +1,6 @@ - # Makefile for task plugins - --SUBDIRS = cray_aries none -+SUBDIRS = none - - if HAVE_SCHED_SETAFFINITY - SUBDIRS += affinity + gcp \ diff --git a/slurm_to_python3.patch b/slurm_to_python3.patch index c60e941..fdfcbe8 100644 --- a/slurm_to_python3.patch +++ b/slurm_to_python3.patch @@ -38,6 +38,16 @@ index 54909096b9..93433d6fa3 100755 import re import sys +diff --git a/testsuite/expect/driveregress.py b/testsuite/expect/driveregress.py +index 8019615953..4e7eb7ca0f 100755 +--- a/testsuite/expect/driveregress.py ++++ b/testsuite/expect/driveregress.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + ############################################################################ + # Copyright (C) 2011-2013 SchedMD LLC diff --git a/testsuite/expect/regression.py b/testsuite/expect/regression.py index 938aecc154..ea64c7cce0 100755 --- a/testsuite/expect/regression.py From cc99a557b878c45e54a18e96c4329d1e3ee8d255 Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Fri, 5 Jul 2019 10:48:41 -0400 Subject: [PATCH 11/15] fix bad merge (cnt'd) --- slurm_fix_testsuite.patch | 579 -------------------------------------- 1 file changed, 579 deletions(-) delete mode 100644 slurm_fix_testsuite.patch diff --git a/slurm_fix_testsuite.patch b/slurm_fix_testsuite.patch deleted file mode 100644 index 4cf2c80..0000000 --- a/slurm_fix_testsuite.patch +++ /dev/null @@ -1,579 +0,0 @@ -commit 7fa8a69d8eda68ac1fa144de7686e47d18161037 -Author: Philip Kovacs -Date: Fri Jun 7 07:33:01 2019 -0600 - - patch for 19.05.0 testsuite `make check` errors - - bug 7197 - -diff --git a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c -index 2f245622e7..ca95f636a8 100644 ---- a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c -+++ b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c -@@ -59,7 +59,7 @@ START_TEST(pack_1702_req_null_ptrs) - unpack_req = (job_alloc_info_msg_t *)msg.data; - ck_assert_int_eq(rc, SLURM_SUCCESS); - ck_assert(unpack_req); -- ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ -+ //ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ - ck_assert_uint_eq(unpack_req->job_id, pack_req.job_id); - - free_buf(buf); -@@ -94,7 +94,7 @@ START_TEST(pack_1702_req) - unpack_req = (job_alloc_info_msg_t *)msg.data; - ck_assert_int_eq(rc, SLURM_SUCCESS); - ck_assert(unpack_req); -- ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ -+ //ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ - ck_assert_uint_eq(unpack_req->job_id, pack_req.job_id); - - free_buf(buf); -diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c -index dd10e1b857..d068fef66d 100644 ---- a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c -+++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c -@@ -236,9 +236,9 @@ Suite* suite(void) - TCase* tc_core = tcase_create("Pack slurmdb_federation_rec_t"); - tcase_add_test(tc_core, invalid_protocol); - tcase_add_test(tc_core, pack_1702_federation_rec); -- tcase_add_test(tc_core, pack_1702_null_federation_rec); -+ //tcase_add_test(tc_core, pack_1702_null_federation_rec); - tcase_add_test(tc_core, pack_1702_federation_rec_empty_list); -- tcase_add_test(tc_core, pack_1702_federation_rec_fail); -+ //tcase_add_test(tc_core, pack_1702_federation_rec_fail); - - tcase_add_test(tc_core, pack_1711_federation_rec); - tcase_add_test(tc_core, pack_1711_null_federation_rec); -diff --git a/testsuite/slurm_unit/common/xhash-test.c b/testsuite/slurm_unit/common/xhash-test.c -index 46616aef2b..2fc4d1d373 100644 ---- a/testsuite/slurm_unit/common/xhash-test.c -+++ b/testsuite/slurm_unit/common/xhash-test.c -@@ -49,12 +49,11 @@ typedef struct hashable_st { - uint32_t idn; - } hashable_t; - --const char* hashable_identify(void* voiditem) -+void hashable_identify(void* voiditem, const char** key, uint32_t* key_len) - { - hashable_t* item = (hashable_t*)voiditem; -- if (!item->id[0]) snprintf(item->id, 255, "%lu", -- (unsigned long)item->idn); -- return item->id; -+ *key = item->id; -+ *key_len = strlen(item->id); - } - - /***************************************************************************** -@@ -71,7 +70,7 @@ static void setup(void) - g_ht = xhash_init(hashable_identify, NULL); - if (!g_ht) return; /* fatal error, will be detected by test cases */ - for (i = 0; i < g_hashableslen; ++i) { -- g_hashables[i].id[0] = 0; -+ snprintf(g_hashables[i].id, sizeof(g_hashables[i].id), "%d", i); - g_hashables[i].idn = i; - /* it is an error if xhash_add returns null but it will be - * detected by test cases */ -@@ -120,7 +119,7 @@ START_TEST(test_add) - fail_unless(xhash_add(ht, a+3) != NULL, "xhash_add failed"); - for (i = 0; i < len; ++i) { - snprintf(buffer, sizeof(buffer), "%d", i); -- fail_unless(xhash_get(ht, buffer) == (a + i), -+ fail_unless(xhash_get_str(ht, buffer) == (a + i), - "bad hashable item returned"); - } - xhash_free(ht); -@@ -134,14 +133,14 @@ START_TEST(test_find) - int i; - - /* test bad match */ -- fail_unless(xhash_get(ht, "bad") == NULL , "invalid case not null"); -- fail_unless(xhash_get(ht, "-1") == NULL , "invalid case not null"); -- fail_unless(xhash_get(ht, "10000") == NULL, "invalid case not null"); -+ fail_unless(xhash_get_str(ht, "bad") == NULL , "invalid case not null"); -+ fail_unless(xhash_get_str(ht, "-1") == NULL , "invalid case not null"); -+ fail_unless(xhash_get_str(ht, "10000") == NULL, "invalid case not null"); - - /* test all good indexes */ - for (i = 0; i < g_hashableslen; ++i) { - snprintf(buffer, sizeof(buffer), "%d", i); -- fail_unless(xhash_get(ht, buffer) == (g_hashables + i), -+ fail_unless(xhash_get_str(ht, buffer) == (g_hashables + i), - "bad hashable item returned"); - } - } -@@ -156,7 +155,7 @@ static int test_delete_helper() - char buffer[255]; - for (i = 0; i < g_hashableslen; ++i) { - snprintf(buffer, sizeof(buffer), "%d", i); -- if (xhash_get(ht, buffer) != (g_hashables + i)) { -+ if (xhash_get_str(ht, buffer) != (g_hashables + i)) { - ++ret; - } - } -@@ -170,10 +169,10 @@ START_TEST(test_delete) - char buffer[255]; - - /* invalid cases */ -- xhash_delete(NULL, "1"); -- fail_unless(xhash_get(ht, "1") != NULL, "invalid case null"); -+ xhash_delete_str(NULL, "1"); -+ fail_unless(xhash_get_str(ht, "1") != NULL, "invalid case null"); - /* Deleting non-existent item should do nothing. */ -- xhash_delete(ht, NULL); -+ xhash_delete(ht, NULL, 0); - fail_unless(xhash_count(ht) == g_hashableslen, - "invalid delete has been done"); - result = test_delete_helper(); -@@ -182,17 +181,17 @@ START_TEST(test_delete) - result); - - /* test correct deletion */ -- xhash_delete(ht, "10"); -- fail_unless(xhash_get(ht, "10") == NULL, "item not deleted"); -+ xhash_delete_str(ht, "10"); -+ fail_unless(xhash_get_str(ht, "10") == NULL, "item not deleted"); - fail_unless(xhash_count(ht) == (g_hashableslen-1), "bad count"); - /* left edge */ -- xhash_delete(ht, "0"); -- fail_unless(xhash_get(ht, "0") == NULL, "item not deleted"); -+ xhash_delete_str(ht, "0"); -+ fail_unless(xhash_get_str(ht, "0") == NULL, "item not deleted"); - fail_unless(xhash_count(ht) == (g_hashableslen-2), "bad count"); - /* right edge */ - snprintf(buffer, sizeof(buffer), "%u", (g_hashableslen-2)); -- xhash_delete(ht, buffer); -- fail_unless(xhash_get(ht, "0") == NULL, "item not deleted"); -+ xhash_delete_str(ht, buffer); -+ fail_unless(xhash_get_str(ht, "0") == NULL, "item not deleted"); - fail_unless(xhash_count(ht) == (g_hashableslen-3), "bad count"); - - result = test_delete_helper(); -commit b0db3f0fbfdfc9a7820f24c4b30adee696dc863a -Author: Morris Jette -Date: Fri Jun 7 07:57:26 2019 -0600 - - Modify "make check" to validate v1808 un/pack logic - - bug 7197 - -diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c -index d068fef66d..bbeeefc4a7 100644 ---- a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c -+++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c -@@ -32,29 +32,26 @@ START_TEST(invalid_protocol) - } - END_TEST - --START_TEST(pack_1702_null_federation_rec) -+START_TEST(pack_1711_null_federation_rec) - { - int rc; - Buf buf = init_buf(1024); -- slurmdb_federation_rec_t pack_fr = {0}; - - slurmdb_pack_federation_rec(NULL, SLURM_MIN_PROTOCOL_VERSION, buf); - - set_buf_offset(buf, 0); - -- slurmdb_federation_rec_t *unpack_fr; -+ slurmdb_federation_rec_t *unpack_fr = NULL; - rc = slurmdb_unpack_federation_rec((void **)&unpack_fr, SLURM_MIN_PROTOCOL_VERSION, buf); -- ck_assert(rc == SLURM_SUCCESS); -- ck_assert(pack_fr.name == unpack_fr->name); -- ck_assert(pack_fr.flags == unpack_fr->flags); -- ck_assert(pack_fr.cluster_list == unpack_fr->cluster_list); -+ ck_assert(rc == SLURM_SUCCESS); -+ ck_assert(unpack_fr == NULL); - - free_buf(buf); - slurmdb_destroy_federation_rec(unpack_fr); - } - END_TEST - --START_TEST(pack_1702_federation_rec) -+START_TEST(pack_1711_federation_rec) - { - int rc; - -@@ -90,7 +87,7 @@ START_TEST(pack_1702_federation_rec) - END_TEST - - --START_TEST(pack_1702_federation_rec_empty_list) -+START_TEST(pack_1711_federation_rec_empty_list) - { - int rc; - -@@ -118,31 +115,7 @@ START_TEST(pack_1702_federation_rec_empty_list) - END_TEST - - --/* This test sets up the buffer so that it fails when unpacking the cluster rec. -- */ --START_TEST(pack_1702_federation_rec_fail) --{ -- int rc; -- char *name = xstrdup("Saint Augustine"); -- Buf buf = init_buf(18*sizeof(uint32_t)); -- packstr(name, buf); -- pack32(7, buf); -- pack32(1, buf); -- -- set_buf_offset(buf, 0); -- -- slurmdb_federation_rec_t *unpack_fr; -- rc = slurmdb_unpack_federation_rec((void **)&unpack_fr, SLURM_MIN_PROTOCOL_VERSION, buf); -- ck_assert_int_eq(rc, SLURM_ERROR); -- -- free_buf(buf); -- xfree(name); --} --END_TEST -- -- --/* 17.11 */ --START_TEST(pack_1711_null_federation_rec) -+START_TEST(pack_1808_null_federation_rec) - { - int rc; - Buf buf = init_buf(1024); -@@ -161,7 +134,7 @@ START_TEST(pack_1711_null_federation_rec) - } - END_TEST - --START_TEST(pack_1711_federation_rec) -+START_TEST(pack_1808_federation_rec) - { - int rc; - -@@ -197,7 +170,7 @@ START_TEST(pack_1711_federation_rec) - END_TEST - - --START_TEST(pack_1711_federation_rec_empty_list) -+START_TEST(pack_1808_federation_rec_empty_list) - { - int rc; - -@@ -235,15 +208,14 @@ Suite* suite(void) - Suite* s = suite_create("Pack slurmdb_federation_rec_t"); - TCase* tc_core = tcase_create("Pack slurmdb_federation_rec_t"); - tcase_add_test(tc_core, invalid_protocol); -- tcase_add_test(tc_core, pack_1702_federation_rec); -- //tcase_add_test(tc_core, pack_1702_null_federation_rec); -- tcase_add_test(tc_core, pack_1702_federation_rec_empty_list); -- //tcase_add_test(tc_core, pack_1702_federation_rec_fail); -- - tcase_add_test(tc_core, pack_1711_federation_rec); - tcase_add_test(tc_core, pack_1711_null_federation_rec); - tcase_add_test(tc_core, pack_1711_federation_rec_empty_list); - -+ tcase_add_test(tc_core, pack_1808_federation_rec); -+ tcase_add_test(tc_core, pack_1808_null_federation_rec); -+ tcase_add_test(tc_core, pack_1808_federation_rec_empty_list); -+ - suite_add_tcase(s, tc_core); - return s; - } -commit 8aade6d1a3b25ee43b466f7c5624f5199b7bf0ec -Author: Morris Jette -Date: Fri Jun 7 08:14:50 2019 -0600 - - Rename some "make check" functions names to be generic - - bug 7197 - -diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c -index bbeeefc4a7..6a48164027 100644 ---- a/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c -+++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_federation_rec-test.c -@@ -32,7 +32,7 @@ START_TEST(invalid_protocol) - } - END_TEST - --START_TEST(pack_1711_null_federation_rec) -+START_TEST(pack_back2_null_federation_rec) - { - int rc; - Buf buf = init_buf(1024); -@@ -51,7 +51,7 @@ START_TEST(pack_1711_null_federation_rec) - } - END_TEST - --START_TEST(pack_1711_federation_rec) -+START_TEST(pack_back2_federation_rec) - { - int rc; - -@@ -87,7 +87,7 @@ START_TEST(pack_1711_federation_rec) - END_TEST - - --START_TEST(pack_1711_federation_rec_empty_list) -+START_TEST(pack_back2_federation_rec_empty_list) - { - int rc; - -@@ -115,7 +115,7 @@ START_TEST(pack_1711_federation_rec_empty_list) - END_TEST - - --START_TEST(pack_1808_null_federation_rec) -+START_TEST(pack_back1_null_federation_rec) - { - int rc; - Buf buf = init_buf(1024); -@@ -134,7 +134,7 @@ START_TEST(pack_1808_null_federation_rec) - } - END_TEST - --START_TEST(pack_1808_federation_rec) -+START_TEST(pack_back1_federation_rec) - { - int rc; - -@@ -170,7 +170,7 @@ START_TEST(pack_1808_federation_rec) - END_TEST - - --START_TEST(pack_1808_federation_rec_empty_list) -+START_TEST(pack_back1_federation_rec_empty_list) - { - int rc; - -@@ -208,13 +208,13 @@ Suite* suite(void) - Suite* s = suite_create("Pack slurmdb_federation_rec_t"); - TCase* tc_core = tcase_create("Pack slurmdb_federation_rec_t"); - tcase_add_test(tc_core, invalid_protocol); -- tcase_add_test(tc_core, pack_1711_federation_rec); -- tcase_add_test(tc_core, pack_1711_null_federation_rec); -- tcase_add_test(tc_core, pack_1711_federation_rec_empty_list); -+ tcase_add_test(tc_core, pack_back2_federation_rec); -+ tcase_add_test(tc_core, pack_back2_null_federation_rec); -+ tcase_add_test(tc_core, pack_back2_federation_rec_empty_list); - -- tcase_add_test(tc_core, pack_1808_federation_rec); -- tcase_add_test(tc_core, pack_1808_null_federation_rec); -- tcase_add_test(tc_core, pack_1808_federation_rec_empty_list); -+ tcase_add_test(tc_core, pack_back1_federation_rec); -+ tcase_add_test(tc_core, pack_back1_null_federation_rec); -+ tcase_add_test(tc_core, pack_back1_federation_rec_empty_list); - - suite_add_tcase(s, tc_core); - return s; -commit 549b1a3e6a8f6a677228209a2520595ffb42f98c -Author: Morris Jette -Date: Fri Jun 7 09:50:14 2019 -0600 - - Make check tests made more generic - -diff --git a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c -index ca95f636a8..85adb59ed1 100644 ---- a/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c -+++ b/testsuite/slurm_unit/common/slurm_protocol_pack/pack_job_alloc_info_msg-test.c -@@ -33,7 +33,7 @@ START_TEST(pack_null_req) - END_TEST - #endif - --START_TEST(pack_1702_req_null_ptrs) -+START_TEST(pack_back2_req_null_ptrs) - { - int rc; - Buf buf = init_buf(1024); -@@ -59,7 +59,7 @@ START_TEST(pack_1702_req_null_ptrs) - unpack_req = (job_alloc_info_msg_t *)msg.data; - ck_assert_int_eq(rc, SLURM_SUCCESS); - ck_assert(unpack_req); -- //ck_assert(!unpack_req->req_cluster); /* >= 17.11 */ -+ ck_assert(!unpack_req->req_cluster); - ck_assert_uint_eq(unpack_req->job_id, pack_req.job_id); - - free_buf(buf); -@@ -67,7 +67,7 @@ START_TEST(pack_1702_req_null_ptrs) - } - END_TEST - --START_TEST(pack_1702_req) -+START_TEST(pack_back2_req) - { - int rc; - Buf buf = init_buf(1024); -@@ -103,7 +103,7 @@ START_TEST(pack_1702_req) - } - END_TEST - --START_TEST(pack_1711_req_null_ptrs) -+START_TEST(pack_back1_req_null_ptrs) - { - int rc; - Buf buf = init_buf(1024); -@@ -136,7 +136,7 @@ START_TEST(pack_1711_req_null_ptrs) - } - END_TEST - --START_TEST(pack_1711_req) -+START_TEST(pack_back1_req) - { - int rc; - Buf buf = init_buf(1024); -@@ -188,10 +188,10 @@ Suite* suite(SRunner *sr) - if (srunner_fork_status(sr) != CK_NOFORK) - tcase_add_test_raise_signal(tc_core, pack_null_req, SIGABRT); - #endif -- tcase_add_test(tc_core, pack_1702_req_null_ptrs); -- tcase_add_test(tc_core, pack_1702_req); -- tcase_add_test(tc_core, pack_1711_req_null_ptrs); -- tcase_add_test(tc_core, pack_1711_req); -+ tcase_add_test(tc_core, pack_back2_req_null_ptrs); -+ tcase_add_test(tc_core, pack_back2_req); -+ tcase_add_test(tc_core, pack_back1_req_null_ptrs); -+ tcase_add_test(tc_core, pack_back1_req); - suite_add_tcase(s, tc_core); - return s; - } -diff --git a/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c b/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c -index c58149b48f..b2c6042888 100644 ---- a/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c -+++ b/testsuite/slurm_unit/common/slurmdb_pack/pack_cluster_rec-test.c -@@ -20,7 +20,7 @@ START_TEST(invalid_protocol) - } - END_TEST - --START_TEST(pack_1702_null_rec) -+START_TEST(pack_back2_null_rec) - { - int rc; - slurmdb_cluster_rec_t pack_rec; -@@ -64,7 +64,7 @@ START_TEST(pack_1702_null_rec) - } - END_TEST - --START_TEST(pack_1702_rec) -+START_TEST(pack_back2_rec) - { - int rc; - Buf buf = init_buf(1024); -@@ -85,6 +85,9 @@ START_TEST(pack_1702_rec) - pack_rec.name = xstrdup("name"); - pack_rec.nodes = xstrdup("nodes"); - pack_rec.plugin_id_select = 8; -+ pack_rec.fed.feature_list = list_create(slurm_destroy_char); -+ slurm_addto_mode_char_list(pack_rec.fed.feature_list, "a,b,c", 0); -+ ck_assert_int_eq(list_count(pack_rec.fed.feature_list), 3); - - /* will be tested separately. */ - pack_rec.root_assoc = NULL; -@@ -126,9 +129,14 @@ START_TEST(pack_1702_rec) - ck_assert_str_eq(pack_rec.name, unpack_rec->name); - ck_assert_str_eq(pack_rec.nodes, unpack_rec->nodes); - -- /* 17.11 */ -- ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list); -- -+ char *feature; -+ ck_assert_int_eq(list_count(pack_rec.fed.feature_list), list_count(unpack_rec->fed.feature_list)); -+ ListIterator itr = list_iterator_create(pack_rec.fed.feature_list); -+ while ((feature = list_next(itr))) { -+ if (!list_find_first(unpack_rec->fed.feature_list, slurm_find_char_in_list, feature)) -+ ck_abort_msg("Didn't find feature %s in unpacked list", -+ feature); -+ } - - FREE_NULL_LIST(pack_rec.accounting_list); - xfree(pack_rec.control_host); -@@ -140,7 +148,7 @@ START_TEST(pack_1702_rec) - } - END_TEST - --START_TEST(pack_1702_rec_null_ptrs) -+START_TEST(pack_back2_rec_null_ptrs) - { - Buf buf = init_buf(1024); - slurmdb_cluster_rec_t pack_rec = {0}; -@@ -185,7 +193,6 @@ START_TEST(pack_1702_rec_null_ptrs) - ck_assert(pack_rec.rpc_version == unpack_rec->rpc_version); - ck_assert(pack_rec.fed.recv == unpack_rec->fed.recv); - ck_assert(pack_rec.fed.send == unpack_rec->fed.send); -- /* 17.11 */ - ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list); - - free_buf(buf); -@@ -193,7 +200,7 @@ START_TEST(pack_1702_rec_null_ptrs) - } - END_TEST - --START_TEST(pack_1711_null_rec) -+START_TEST(pack_back1_null_rec) - { - int rc; - slurmdb_cluster_rec_t pack_rec; -@@ -204,7 +211,6 @@ START_TEST(pack_1711_null_rec) - pack_rec.fed.state = 0; - pack_rec.dimensions = 1; - pack_rec.plugin_id_select = NO_VAL; -- - slurmdb_pack_cluster_rec(NULL, SLURM_ONE_BACK_PROTOCOL_VERSION, buf); - - set_buf_offset(buf, 0); -@@ -218,7 +224,6 @@ START_TEST(pack_1711_null_rec) - ck_assert(pack_rec.nodes == unpack_rec->nodes); - ck_assert(pack_rec.fed.recv == unpack_rec->fed.recv); - ck_assert(pack_rec.fed.send == unpack_rec->fed.send); -- /* 17.11 */ - ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list); - - /* root_assoc gets unpacked into a empty structure */ -@@ -237,7 +242,7 @@ START_TEST(pack_1711_null_rec) - } - END_TEST - --START_TEST(pack_1711_rec) -+START_TEST(pack_back1_rec) - { - int rc; - Buf buf = init_buf(1024); -@@ -302,7 +307,6 @@ START_TEST(pack_1711_rec) - ck_assert_str_eq(pack_rec.name, unpack_rec->name); - ck_assert_str_eq(pack_rec.nodes, unpack_rec->nodes); - -- /* 17.11 */ - char *feature; - ck_assert_int_eq(list_count(pack_rec.fed.feature_list), list_count(unpack_rec->fed.feature_list)); - ListIterator itr = list_iterator_create(pack_rec.fed.feature_list); -@@ -322,7 +326,7 @@ START_TEST(pack_1711_rec) - } - END_TEST - --START_TEST(pack_1711_rec_null_ptrs) -+START_TEST(pack_back1_rec_null_ptrs) - { - Buf buf = init_buf(1024); - slurmdb_cluster_rec_t pack_rec = {0}; -@@ -367,7 +371,6 @@ START_TEST(pack_1711_rec_null_ptrs) - ck_assert(pack_rec.rpc_version == unpack_rec->rpc_version); - ck_assert(pack_rec.fed.recv == unpack_rec->fed.recv); - ck_assert(pack_rec.fed.send == unpack_rec->fed.send); -- /* 17.11 */ - ck_assert(pack_rec.fed.feature_list == unpack_rec->fed.feature_list); - - free_buf(buf); -@@ -385,13 +388,13 @@ Suite* suite(void) - TCase* tc_core = tcase_create("Pack slurmdb_cluster_rec_t"); - tcase_add_test(tc_core, invalid_protocol); - -- tcase_add_test(tc_core, pack_1711_null_rec); -- tcase_add_test(tc_core, pack_1711_rec); -- tcase_add_test(tc_core, pack_1711_rec_null_ptrs); -+ tcase_add_test(tc_core, pack_back1_null_rec); -+ tcase_add_test(tc_core, pack_back1_rec); -+ tcase_add_test(tc_core, pack_back1_rec_null_ptrs); - -- tcase_add_test(tc_core, pack_1702_null_rec); -- tcase_add_test(tc_core, pack_1702_rec); -- tcase_add_test(tc_core, pack_1702_rec_null_ptrs); -+ tcase_add_test(tc_core, pack_back2_null_rec); -+ tcase_add_test(tc_core, pack_back2_rec); -+ tcase_add_test(tc_core, pack_back2_rec_null_ptrs); - - suite_add_tcase(s, tc_core); - return s; From c63769b20f74a9515ebc87555ac900c01d31b409 Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Fri, 5 Jul 2019 11:43:12 -0400 Subject: [PATCH 12/15] Revert "Merge branch 'f30'" This reverts commit 94164896cbf25c4e4f504301288c781474ca62a5, reversing changes made to a93547103f40c3cdc28c3af470d435ddac2ac60f. --- sources | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources b/sources index bcddb1a..dff51b9 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (slurm-19.05.0.tar.bz2) = f91efbd8c96c5c25dcf7c3f73f61ab9b5d591a554447e5a7db0346ace2e9a1053bebce5f16e9d15c23d78743319997aaac51f6d5bceda7cfaa4877a6f439cff1 +SHA512 (slurm-18.08.7.tar.bz2) = d0047086f1b716877cc5bb39539bf96a8fd08b1851c85fd85112c6432c1ce2a0f29fc9dd8803094c8fa44d063cec5f417e6bed231b6d338934ff4b48424a5a93 From 51c811baec8485bdc5d80df4eb3e4b37864104c3 Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Fri, 5 Jul 2019 13:43:58 -0400 Subject: [PATCH 13/15] do not build/install pmi/pmi2 --- slurm.spec | 8 +++---- ...ild_cray.patch => slurm_without_cray.patch | 0 slurm_without_pmi.patch | 22 +++++++++++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) rename slurm_do_not_build_cray.patch => slurm_without_cray.patch (100%) create mode 100644 slurm_without_pmi.patch diff --git a/slurm.spec b/slurm.spec index 52d6717..dfe4fe5 100644 --- a/slurm.spec +++ b/slurm.spec @@ -30,7 +30,8 @@ Patch0: slurm_libslurmfull_version.patch Patch10: slurm_perlapi_rpaths.patch Patch11: slurm_html_doc_path.patch Patch12: slurm_doc_fix.patch -Patch13: slurm_do_not_build_cray.patch +Patch13: slurm_without_cray.patch +Patch14: slurm_without_pmi.patch # Fedora-related patches Patch20: slurm_pmix_soname.patch @@ -191,6 +192,7 @@ Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm. %patch11 -p1 %patch12 -p1 %patch13 -p1 +%patch14 -p1 %patch20 -p1 %patch21 -p1 %patch22 -p1 @@ -350,10 +352,6 @@ install -m 0644 contribs/lua/proctrack.lua %{buildroot}%{_docdir}/%{name}/contri # remove libtool archives find %{buildroot} -name \*.a -o -name \*.la | xargs rm -f -# remove pmi/pmi2 headers which are provided by pmix dependency -rm -rf %{buildroot}%{_includedir}/%{name}/pmi*.h -# remove libpmi/pmi2 libraries which are provided by pmix dependency -rm -rf %{buildroot}%{_libdir}/libpmi*.so* # remove libslurmfull symlink (non-development, internal library) rm -rf %{buildroot}%{_libdir}/libslurmfull.so # remove auth_none plugin diff --git a/slurm_do_not_build_cray.patch b/slurm_without_cray.patch similarity index 100% rename from slurm_do_not_build_cray.patch rename to slurm_without_cray.patch diff --git a/slurm_without_pmi.patch b/slurm_without_pmi.patch new file mode 100644 index 0000000..782149c --- /dev/null +++ b/slurm_without_pmi.patch @@ -0,0 +1,22 @@ +diff --git a/Makefile.am b/Makefile.am +index 6f225183f9..d7d819dc55 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -30,7 +30,6 @@ EXTRA_DIST = \ + META + + pkginclude_HEADERS = \ +- slurm/pmi.h \ + slurm/slurm.h \ + slurm/slurmdb.h \ + slurm/slurm_errno.h \ +diff --git a/contribs/Makefile.am b/contribs/Makefile.am +index 7fa8d82436..d9d6042ec8 100644 +--- a/contribs/Makefile.am ++++ b/contribs/Makefile.am +@@ -1,4 +1,4 @@ +-SUBDIRS = lua mic openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque ++SUBDIRS = lua mic openlava pam pam_slurm_adopt perlapi seff sgather sgi sjobexit torque + + EXTRA_DIST = \ + gcp \ From 535d6fb55aea9196c4c13b14f5f837af787c7ac3 Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Mon, 15 Jul 2019 17:50:49 -0400 Subject: [PATCH 14/15] Release of 18.08.8 Closes security issue (CVE-2019-12838) Configure for UCX support on supported arches --- slurm.spec | 26 +++++++++--- slurm_pmix_soname.patch | 88 +++++++++++++++++++++++++++++++++++------ sources | 2 +- 3 files changed, 99 insertions(+), 17 deletions(-) diff --git a/slurm.spec b/slurm.spec index dfe4fe5..e55a376 100644 --- a/slurm.spec +++ b/slurm.spec @@ -11,8 +11,8 @@ %undefine _strict_symbol_defs_build Name: slurm -Version: 18.08.7 -Release: 3%{?dist} +Version: 18.08.8 +Release: 1%{?dist} Summary: Simple Linux Utility for Resource Management License: GPLv2 and BSD URL: https://slurm.schedmd.com/ @@ -53,6 +53,7 @@ BuildRequires: systemd BuildRequires: hdf5-devel BuildRequires: pam-devel +BuildRequires: rdma-core-devel BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(hwloc) BuildRequires: pkgconfig(libcurl) @@ -69,14 +70,21 @@ BuildRequires: pkgconfig(pmix) >= 2.0.0 BuildRequires: pkgconfig(zlib) BuildRequires: readline-devel -# follow arch exclusions for these devel packages -%ifnarch s390 s390x %{arm} -BuildRequires: rdma-core-devel +# follow arch exclusions for numa +%ifnarch %{arm} BuildRequires: numactl-devel %endif +# follow arch-inclusions for ucx +%ifarch aarch64 ppc64le x86_64 +BuildRequires: pkgconfig(ucx) +%endif + Requires: munge Requires: pmix >= 2.0.0 +%ifarch aarch64 ppc64le x86_64 +Requires: ucx +%endif %{?systemd_requires} %description @@ -217,6 +225,9 @@ automake --no-force --prefix=%{_prefix} \ --sysconfdir=%{_sysconfdir}/%{name} \ --with-pam_dir=%{_libdir}/security \ +%ifarch aarch64 ppc64le x86_64 + --with-ucx=%{_prefix} \ +%endif --enable-shared \ --enable-x11 \ --disable-static \ @@ -664,6 +675,11 @@ rm -f %{buildroot}%{perl_archlib}/perllocal.pod %systemd_postun_with_restart slurmdbd.service %changelog +* Mon Jul 15 2019 Philip Kovacs - 18.08.8-1 +- Release of 18.08.8 +- Closes security issue (CVE-2019-12838) +- Configure for UCX support on supported arches + * Tue Jul 2 2019 Philip Kovacs - 18.08.7-3 - Do not install slurm implementation of libpmi/pmi2 libraries - in favor of the faster implementation provided by pmix diff --git a/slurm_pmix_soname.patch b/slurm_pmix_soname.patch index 7557569..cb5f88e 100644 --- a/slurm_pmix_soname.patch +++ b/slurm_pmix_soname.patch @@ -1,23 +1,89 @@ diff --git a/src/plugins/mpi/pmix/mpi_pmix.c b/src/plugins/mpi/pmix/mpi_pmix.c -index bbb947616c..65ec00ad73 100644 +index bbb947616c..b284af63f2 100644 --- a/src/plugins/mpi/pmix/mpi_pmix.c +++ b/src/plugins/mpi/pmix/mpi_pmix.c -@@ -105,10 +105,17 @@ static void *_libpmix_open(void) +@@ -89,6 +89,8 @@ const uint32_t plugin_version = SLURM_VERSION_NUMBER; + + void *libpmix_plug = NULL; + ++static const char *pmix_libraries[] = { "libpmix.so", "libpmix.so.2", "libpmix.so.1" }; ++ + static void _libpmix_close(void *lib_plug) + { + xassert(lib_plug); +@@ -99,15 +101,20 @@ static void *_libpmix_open(void) + { + void *lib_plug = NULL; + char *full_path = NULL; ++ size_t sz = 0; + + #ifdef PMIXP_V1_LIBPATH + xstrfmtcat(full_path, "%s/", PMIXP_V1_LIBPATH); #elif defined PMIXP_V2_LIBPATH xstrfmtcat(full_path, "%s/", PMIXP_V2_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); - -+ if (!lib_plug) { -+ dlerror(); -+ xstrfmtcat(full_path, "libpmix.so.1"); +- lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL); +- xfree(full_path); ++ ++ while (!lib_plug && (sz < sizeof(pmix_libraries)/sizeof(pmix_libraries[0]))) { ++ xstrfmtcat(full_path, "%s", pmix_libraries[sz]); + lib_plug = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL); + xfree(full_path); ++ ++sz; + } -+ + if (lib_plug && (HAVE_PMIX_VER != pmixp_lib_get_version())) { PMIXP_ERROR("pmi/pmix: incorrect PMIx library version loaded %d was loaded, required %d version", - pmixp_lib_get_version(), (int)HAVE_PMIX_VER); +diff --git a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c +index f6c91adc93..650fb7d5ff 100644 +--- a/src/plugins/mpi/pmix/pmixp_dconn_ucx.c ++++ b/src/plugins/mpi/pmix/pmixp_dconn_ucx.c +@@ -140,6 +140,8 @@ static struct io_operations _progress_ops = { + .handle_read = _progress_read + }; + ++static const char *ucx_libraries[] = { "libucp.so", "libucp.so.0" }; ++ + static void *_ucx_init(int nodeid, pmixp_p2p_data_t direct_hdr); + static void _ucx_fini(void *_priv); + static int _ucx_connect(void *_priv, void *ep_data, size_t ep_len, +@@ -161,15 +163,20 @@ static int _load_ucx_lib() + setenv("UCX_MEM_MALLOC_RELOC", "no", 1); + setenv("UCX_MEM_EVENTS", "no", 1); + ++ size_t sz = 0; ++ + #ifdef PMIXP_UCX_LIBPATH + /* If this Slurm build doesn't allow RPATH's + * try to open library by it's full path that + * we have from autoconf + */ + char *full_path = NULL; +- xstrfmtcat(full_path, "%s/libucp.so", PMIXP_UCX_LIBPATH); +- _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL); +- xfree(full_path); ++ while (!_ucx_lib_handler && (sz < sizeof(ucx_libraries)/sizeof(ucx_libraries[0]))) { ++ xstrfmtcat(full_path, "%s/%s", PMIXP_UCX_LIBPATH, ucx_libraries[sz]); ++ _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL); ++ xfree(full_path); ++ ++sz; ++ } + if (_ucx_lib_handler) { + /* successful, exit now */ + return SLURM_SUCCESS; +@@ -178,7 +185,13 @@ static int _load_ucx_lib() + * known by dynamic linker. + */ + #endif +- _ucx_lib_handler = dlopen("libucp.so", RTLD_LAZY | RTLD_GLOBAL); ++ sz = 0; ++ while (!_ucx_lib_handler && (sz < sizeof(ucx_libraries)/sizeof(ucx_libraries[0]))) { ++ xstrfmtcat(full_path, "%s", ucx_libraries[sz]); ++ _ucx_lib_handler = dlopen(full_path, RTLD_LAZY | RTLD_GLOBAL); ++ xfree(full_path); ++ ++sz; ++ } + if (!_ucx_lib_handler) { + char *err = dlerror(); + PMIXP_ERROR("Cannot open UCX lib: %s", (err) ? err : "unknown"); diff --git a/sources b/sources index dff51b9..873076a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (slurm-18.08.7.tar.bz2) = d0047086f1b716877cc5bb39539bf96a8fd08b1851c85fd85112c6432c1ce2a0f29fc9dd8803094c8fa44d063cec5f417e6bed231b6d338934ff4b48424a5a93 +SHA512 (slurm-18.08.8.tar.bz2) = a5557cd043c2a48e652cbbca993420a756ecda80e40ed4ca2f55733050cf4b04477cfb5c8059db67168f5fa6d3fb93ac2c92f8b52b079971f634bd1956173ea0 From 80183677d5259424c110337d611c1cc5a67b2a9c Mon Sep 17 00:00:00 2001 From: Philip Kovacs Date: Sun, 21 Jul 2019 08:40:31 -0400 Subject: [PATCH 15/15] Create slurm-pmi and slurm-pmi-devel subpackages for pmi/pmi2 libs Remove rpm-generated pkgconfig files until upstream provides them Do not pull dependencies with pkgconfig unless package uses it --- .rpmlint | 9 +++ slurm.spec | 138 ++++++++++++++++++++++++---------------- slurm_without_pmi.patch | 22 ------- 3 files changed, 92 insertions(+), 77 deletions(-) create mode 100644 .rpmlint delete mode 100644 slurm_without_pmi.patch diff --git a/.rpmlint b/.rpmlint new file mode 100644 index 0000000..5aca11b --- /dev/null +++ b/.rpmlint @@ -0,0 +1,9 @@ +from Config import * +addFilter("E: shared-lib-without-dependency-information") +addFilter("E: missing-dependency-to-logrotate") +addFilter("W: manual-page-warning") +addFilter("W: no-documentation") +addFilter("W: no-manual-page-for-binary") +addFilter("W: non-conffile-in-etc") +addFilter("W: shared-lib-calls-exit") +addFilter("W: spelling-error") diff --git a/slurm.spec b/slurm.spec index e55a376..9247cef 100644 --- a/slurm.spec +++ b/slurm.spec @@ -7,12 +7,19 @@ %global name_version %{name}-%{version}-%{ups_rel} %endif +# follow arch-inclusions for ucx +%ifarch aarch64 ppc64le x86_64 +%bcond_without ucx +%else +%bcond_with ucx +%endif + # Allow linkage with undefined symbols (disable -z,defs) %undefine _strict_symbol_defs_build Name: slurm Version: 18.08.8 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Simple Linux Utility for Resource Management License: GPLv2 and BSD URL: https://slurm.schedmd.com/ @@ -31,7 +38,6 @@ Patch10: slurm_perlapi_rpaths.patch Patch11: slurm_html_doc_path.patch Patch12: slurm_doc_fix.patch Patch13: slurm_without_cray.patch -Patch14: slurm_without_pmi.patch # Fedora-related patches Patch20: slurm_pmix_soname.patch @@ -45,44 +51,43 @@ BuildRequires: gcc BuildRequires: perl-devel BuildRequires: perl-ExtUtils-MakeMaker BuildRequires: perl-interpreter +BuildRequires: perl-macros BuildRequires: perl-podlators BuildRequires: pkgconf BuildRequires: pkgconfig(check) +BuildRequires: pkgconfig(lua) BuildRequires: python3 BuildRequires: systemd +BuildRequires: freeipmi-devel +BuildRequires: gtk2-devel BuildRequires: hdf5-devel +BuildRequires: hwloc-devel +BuildRequires: libcurl-devel +BuildRequires: libssh2-devel +BuildRequires: lz4-devel +BuildRequires: mariadb-devel +BuildRequires: munge-devel +BuildRequires: ncurses-devel BuildRequires: pam-devel +BuildRequires: pmix-devel BuildRequires: rdma-core-devel -BuildRequires: pkgconfig(gtk+-2.0) -BuildRequires: pkgconfig(hwloc) -BuildRequires: pkgconfig(libcurl) -BuildRequires: pkgconfig(libfreeipmi) -BuildRequires: pkgconfig(liblz4) -BuildRequires: pkgconfig(librrd) -BuildRequires: pkgconfig(libssh2) -BuildRequires: pkgconfig(lua) -BuildRequires: pkgconfig(mariadb) -BuildRequires: pkgconfig(munge) -BuildRequires: pkgconfig(ncurses) -BuildRequires: pkgconfig(openssl) -BuildRequires: pkgconfig(pmix) >= 2.0.0 -BuildRequires: pkgconfig(zlib) BuildRequires: readline-devel +BuildRequires: rrdtool-devel +BuildRequires: zlib-devel + +%if %{with ucx} +BuildRequires: ucx-devel +%endif # follow arch exclusions for numa %ifnarch %{arm} BuildRequires: numactl-devel %endif -# follow arch-inclusions for ucx -%ifarch aarch64 ppc64le x86_64 -BuildRequires: pkgconfig(ucx) -%endif - Requires: munge -Requires: pmix >= 2.0.0 -%ifarch aarch64 ppc64le x86_64 +Requires: pmix +%if %{with ucx} Requires: ucx %endif %{?systemd_requires} @@ -122,6 +127,22 @@ Summary: Slurm shared libraries %description libs Slurm shared libraries. +%package pmi +Summary: The %{name} implementation of libpmi and libpmi2 +Requires: %{name}%{?_isa} = %{version}-%{release} +Conflicts: pmix-pmi +%description pmi +The %{name}-pmi package contains the %{name} implementation of +the libpmi and libpmi2 libraries. + +%package pmi-devel +Summary: Development files for %{name}-pmi +Requires: %{name}-pmi%{?_isa} = %{version}-%{release} +Conflicts: pmix-pmi-devel +%description pmi-devel +The %{name}-pmi-devel package contains the development files for +the libpmi and libpmi2 libraries. + %package rrdtool Summary: Slurm rrdtool external sensor plugin Requires: %{name}%{?_isa} = %{version}-%{release} @@ -169,14 +190,6 @@ Requires: %{name}-perlapi%{?_isa} = %{version}-%{release} %description openlava OpenLava wrapper scripts used for helping migrate from OpenLava/LSF to Slurm. -%package perlapi -Summary: Perl API to Slurm -Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -%description perlapi -Perl API package for Slurm. This package includes the perl API to provide a -helpful interface to Slurm through Perl. - %package pam_slurm Summary: PAM module for restricting access to compute nodes via Slurm Requires: %{name}-libs%{?_isa} = %{version}-%{release} @@ -186,6 +199,14 @@ is in use. Access is granted to root, any user with a Slurm-launched job currently running on the node, or any user who has allocated resources on the node according to Slurm. +%package perlapi +Summary: Perl API to Slurm +Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version)) +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +%description perlapi +Perl API package for Slurm. This package includes the perl API to provide a +helpful interface to Slurm through Perl. + %package torque Summary: Torque/PBS wrappers for transition from Torque/PBS to Slurm Requires: %{name}%{?_isa} = %{version}-%{release} @@ -200,7 +221,6 @@ Torque wrapper scripts used for helping migrate from Torque/PBS to Slurm. %patch11 -p1 %patch12 -p1 %patch13 -p1 -%patch14 -p1 %patch20 -p1 %patch21 -p1 %patch22 -p1 @@ -225,7 +245,7 @@ automake --no-force --prefix=%{_prefix} \ --sysconfdir=%{_sysconfdir}/%{name} \ --with-pam_dir=%{_libdir}/security \ -%ifarch aarch64 ppc64le x86_64 +%if %{with ucx} --with-ucx=%{_prefix} \ %endif --enable-shared \ @@ -315,19 +335,6 @@ touch %{buildroot}%{_rundir}/%{name}/slurmctld.pid touch %{buildroot}%{_rundir}/%{name}/slurmd.pid touch %{buildroot}%{_rundir}/%{name}/slurmdbd.pid -# install pkgconfig file slurm.pc -install -d -m 0755 %{buildroot}%{_libdir}/pkgconfig -cat >%{buildroot}%{_libdir}/pkgconfig/%{name}.pc < - 18.08.8-2 +- Create slurm-pmi and slurm-pmi-devel subpackages for pmi/pmi2 libs +- Remove rpm-generated pkgconfig files until upstream provides them +- Do not pull dependencies with pkgconfig unless package uses it + * Mon Jul 15 2019 Philip Kovacs - 18.08.8-1 - Release of 18.08.8 - Closes security issue (CVE-2019-12838) diff --git a/slurm_without_pmi.patch b/slurm_without_pmi.patch deleted file mode 100644 index 782149c..0000000 --- a/slurm_without_pmi.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/Makefile.am b/Makefile.am -index 6f225183f9..d7d819dc55 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -30,7 +30,6 @@ EXTRA_DIST = \ - META - - pkginclude_HEADERS = \ -- slurm/pmi.h \ - slurm/slurm.h \ - slurm/slurmdb.h \ - slurm/slurm_errno.h \ -diff --git a/contribs/Makefile.am b/contribs/Makefile.am -index 7fa8d82436..d9d6042ec8 100644 ---- a/contribs/Makefile.am -+++ b/contribs/Makefile.am -@@ -1,4 +1,4 @@ --SUBDIRS = lua mic openlava pam pam_slurm_adopt perlapi pmi pmi2 seff sgather sgi sjobexit torque -+SUBDIRS = lua mic openlava pam pam_slurm_adopt perlapi seff sgather sgi sjobexit torque - - EXTRA_DIST = \ - gcp \