diff --git a/_service b/_service index 1575196..e7955cb 100644 --- a/_service +++ b/_service @@ -5,8 +5,8 @@ no .git suse-hpc - 0.1.%h - d6d9c0fddeefd4f22d4aa44d6a9f7bc7f625bcba + 0.4.%h + 87f3f2c336d9dc5f9e8874e7639459371cfae3b0 general/dlinfo.c general/macros.hpc general/hpc_elf.pl diff --git a/hpc_elf.attr b/hpc_elf.attr new file mode 100644 index 0000000..e03d066 --- /dev/null +++ b/hpc_elf.attr @@ -0,0 +1,5 @@ +%__hpc_elf_provides %{_rpmconfigdir}/hpc_elf.pl --provides %{?__filter_GLIBC_PRIVATE:--filter-private} %{?hpc_dep_gen_attr} +%__hpc_elf_requires %{_rpmconfigdir}/hpc_elf.pl %{?_hpc_modules:--modules "%_hpc_modules"} --requires %{?__filter_GLIBC_PRIVATE:--filter-private} %{?hpc_dep_gen_attr} +%__hpc_elf_magic ^(setuid )?(setgid )?(sticky )?ELF (32|64)-bit.*executable +%__hpc_elf_path %hpc_prefix +%__hpc_elf_flags exeonly diff --git a/hpc_elf.pl b/hpc_elf.pl new file mode 100644 index 0000000..a068535 --- /dev/null +++ b/hpc_elf.pl @@ -0,0 +1,93 @@ +#! /usr/bin/perl + +use Cwd 'abs_path'; +use File::Basename; + +$dir=dirname(abs_path($0)); + + +$command=$dir . "/elfdeps"; +$dlinfo=$dir . "/dlinfo"; +$arglist = ""; + +sub usage { + my $message = <))) { + $line =~ /([^\(]+)(.*)/; + $libs{$1}{$2} = 1; +} + +foreach $lib ( keys %libs ) { + $full=`$dlinfo $lib`; + chop $full; + if (!$full) { + delete $libs{$lib}; + } elsif ( $ldlibrarypath ) { + $hpc = `LD_LIBRARY_PATH=$ldlibrarypath $dlinfo $lib`; + chop $hpc; + if ( $full ne $hpc) { + delete $libs{$lib}; + } + } +} +foreach $lib ( keys %libs ) { + foreach $key ( keys %{ $libs{$lib} } ) { + print "$lib$key\n"; + } +} + diff --git a/hpc_elflib.attr b/hpc_elflib.attr new file mode 100644 index 0000000..8a9926e --- /dev/null +++ b/hpc_elflib.attr @@ -0,0 +1,5 @@ +%__hpc_elflib_provides %{_rpmconfigdir}/hpc_elf.pl --provides --assume-exec %{?__filter_GLIBC_PRIVATE:--filter-private} %{?hpc_dep_gen_attr} +%__hpc_elflib_requires %{_rpmconfigdir}/hpc_elf.pl %{?_hpc_modules:--modules "%_hpc_modules"} --requires --assume-exec %{?__filter_GLIBC_PRIVATE:--filter-private} %{?hpc_dep_gen_attr} +%__hpc_elflib_magic ^(setuid )?(setgid )?(sticky )?ELF (32|64)-bit.*executable +%__hpc_elflib_path ^%hpc_prefix +%__hpc_elflib_flags exeonly diff --git a/macros.hpc b/macros.hpc index 8ca376e..84d66a3 100644 --- a/macros.hpc +++ b/macros.hpc @@ -196,6 +196,15 @@ EOF\ # This can be overridden in the spec file. %hpc_module_pname %pname +# Modules init: Set up modules required for building +# %hpc_modules_init +# : list of modules (exclude compiler and MPI library). +# May be empty if only compiler and MPI library are needed. +%hpc_modules_init() \ + %{!?_hpc_init_done: %{error: "%%hpc_setup_compiler: Call %%hpc_init first!"}} \ + %{?*:%global _hpc_modules_other %{**}} \ + %global _hpc_modules %{?hpc_compiler_family:%{expand:%%{?%{expand:_hpc_%{hpc_compiler_family}_module}}}} %{?hpc_mpi_family:%{expand:%%{?%{expand:_hpc_%{hpc_mpi_family}_module}}}} %{?_hpc_modules_other} + %hpc_setup_compiler \ %{!?_hpc_init_done: %{error: "%%hpc_setup_compiler: Call %%hpc_init first!"}} \ module purge \ @@ -206,7 +215,8 @@ EOF\ %hpc_setup \ %hpc_setup_compiler \ - %{!?_hpc_build_mpi:%hpc_setup_mpi} + %{!?_hpc_build_mpi:%hpc_setup_mpi} \ + %{?_hpc_modules_other:[ -n "%{?_hpc_modules_other}" ] && module load %_hpc_modules_other} # delete default in %postun %hpc_module_delete_if_default \ diff --git a/suse-hpc.changes b/suse-hpc.changes index 8d87b44..2111fcd 100644 --- a/suse-hpc.changes +++ b/suse-hpc.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Sun Nov 18 10:19:22 UTC 2018 - eich@suse.com + +- Expand modules handling (bsc#1116458): + * add %%hpc_modules_init to store the list of modules + * if a modules list is available, use environment during + dependency generation to exclude objects which will be + found thru environment modules. + * bump package version. + ------------------------------------------------------------------- Fri Oct 26 10:49:00 UTC 2018 - eich@suse.com diff --git a/suse-hpc.spec b/suse-hpc.spec index d50362c..daedcbc 100644 --- a/suse-hpc.spec +++ b/suse-hpc.spec @@ -20,7 +20,7 @@ Summary: SUSE HPC Environment License: BSD-3-Clause Group: Productivity/Clustering/Computing Name: suse-hpc -Version: 0.3 +Version: 0.4 Release: 0 Source0: macros.hpc Source1: dlinfo.c