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
index 699960d..e03d066 100644
--- a/hpc_elf.attr
+++ b/hpc_elf.attr
@@ -1,5 +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 --requires %{?__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
index 4383c8c..a068535 100644
--- a/hpc_elf.pl
+++ b/hpc_elf.pl
@@ -49,6 +49,8 @@ while ( $a = shift @ARGV ) {
$a =~ /--no-fake-soname/ ||
$a =~ /--filter-private/ ) {
$arglist .= " " . $a;
+ } elsif ( $a =~ /--modules/ ) {
+ $modules = shift @ARGV;
} elsif ( $a =~ /--help/ || $a =~ /-?/ ) {
help;
} elsif ( $a =~ /--usage/ ) {
@@ -60,6 +62,11 @@ while ( $a = shift @ARGV ) {
open HANDLE, "$command $arglist |";
+if ( $modules ) {
+ $ldlibrarypath = `module load $modules; echo \$LD_LIBRARY_PATH`;
+ chop $ldlibrarypath;
+}
+
while ((chop($line = ))) {
$line =~ /([^\(]+)(.*)/;
$libs{$1}{$2} = 1;
@@ -67,8 +74,15 @@ while ((chop($line = ))) {
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 ) {
diff --git a/hpc_elflib.attr b/hpc_elflib.attr
index 8518a89..8a9926e 100644
--- a/hpc_elflib.attr
+++ b/hpc_elflib.attr
@@ -1,5 +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 --requires --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..ca8fa70 100644
--- a/macros.hpc
+++ b/macros.hpc
@@ -168,7 +168,7 @@ EOF\
%global tmp %__elflib_exclude_path \
%global __elflib_exclude_path (%tmp)|(^%hpc_base) \
%undefine tmp \
- %{expand:%([ 0%{?sle_version} -ge 150000 ] && echo %%global _hpc_python3 1)} \
+ %{expand:%([ 0%{?sle_version} -ge 150000 -o 0%{?suse_version} -gt 1500 ] && echo %%global _hpc_python3 1)} \
%global _hpc_init_done 1
%hpc_init(Cc:Mm:v:V:e:) %{expand:%%_hpc_init %{**}}
@@ -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 \
@@ -594,18 +604,18 @@ When this package gets updated it installs the latest version of %name. \
fi \
done
-# %hpc_python_mv_to_sitearch
+# %hpc_python_mv_to_sitearch []
#
-# move to python sitearch, remove shebang lines and
-# remove any excecute permissions.
+# move to python sitearch subdir if set, remove shebang
+# lines and remove any excecute permissions.
# This should be done on any python files that do not contain
# any executable code.
%hpc_python_mv_to_sitearch() \
- _hpc_pydir=%hpc_python_sitearch_no_singlespec \
+ _hpc_pydir=%{hpc_python_sitearch_no_singlespec}%{?2:/%{2}} \
_hpc_base=$(basename %{1}) \
- [ -d %{buildroot}/$_hpc_pydir ] || mkdir -p %{buildroot}/$_hpc_pydir \
- mv %{buildroot}%{1} %{buildroot}/$_hpc_pydir \
- chmod a-x %{buildroot}/$_hpc_pydir/$_hpc_base \
+ [ -d %{buildroot}/$_hpc_pydir ] || mkdir -p %{buildroot}/${_hpc_pydir} \
+ mv %{buildroot}%{1} %{buildroot}/${_hpc_pydir} \
+ [[ "$_hpc_base" =~ .*\.so ]] || chmod a-x %{buildroot}/$_hpc_pydir/$_hpc_base \
%{hpc_shebang_remove %{buildroot}/$_hpc_pydir/$_hpc_base}
# %hpc_verify_python3
diff --git a/suse-hpc.changes b/suse-hpc.changes
index 8d87b44..a518f7d 100644
--- a/suse-hpc.changes
+++ b/suse-hpc.changes
@@ -1,3 +1,21 @@
+-------------------------------------------------------------------
+Mon Nov 19 01:19:05 UTC 2018 - eich@suse.com
+
+- Improve python handling:
+ * set python3 as default for Factory
+ * allow to specify subdir to HPC pyton path
+ * Do not remove executable flag on .so files
+
+-------------------------------------------------------------------
+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