Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package suse-hpc for openSUSE:Factory checked in at 2021-03-19 16:40:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/suse-hpc (Old) and /work/SRC/openSUSE:Factory/.suse-hpc.new.2401 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "suse-hpc" Fri Mar 19 16:40:07 2021 rev:22 rq:879575 version:0.5 Changes: -------- --- /work/SRC/openSUSE:Factory/suse-hpc/suse-hpc.changes 2021-01-20 18:23:17.883303096 +0100 +++ /work/SRC/openSUSE:Factory/.suse-hpc.new.2401/suse-hpc.changes 2021-03-19 16:40:08.869870405 +0100 @@ -1,0 +2,8 @@ +Mon Mar 15 07:58:32 UTC 2021 - Egbert Eich <e...@suse.com> + +- Add hooks for extra module files and master packages to + accomodate support for multiple python3 flavors (thanks to + Ben Greiner). +- Made sure, these macros are backward compatible to Leap 15. + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ _service ++++++ --- /var/tmp/diff_new_pack.1uesZW/_old 2021-03-19 16:40:09.445871182 +0100 +++ /var/tmp/diff_new_pack.1uesZW/_new 2021-03-19 16:40:09.445871182 +0100 @@ -6,7 +6,7 @@ <param name="exclude">.git</param> <param name="filename">suse-hpc</param> <param name="versionformat">0.4.%h</param> - <param name="revision">c65447a9944f342fbca39b0d339e347861098dd7</param> + <param name="revision">ac4858f24744588523da51f7fba4ea419187388e</param> <param name="extract">general/dlinfo.c</param> <param name="extract">general/macros.hpc</param> <param name="extract">general/hpc_elf.pl</param> ++++++ macros.hpc ++++++ --- /var/tmp/diff_new_pack.1uesZW/_old 2021-03-19 16:40:09.505871264 +0100 +++ /var/tmp/diff_new_pack.1uesZW/_new 2021-03-19 16:40:09.505871264 +0100 @@ -247,10 +247,13 @@ # %hpc_make_modules_dir mkdir -p %{buildroot}%{hpc_module_dep_base} -# +# Write modules files +# %hpc_make_modules_extra can be defined by domain specific macros such as %hpc_python_master_package +# or in the specfile in order to provide a hook for creating extra module files. %hpc_write_modules_files \ %{?_hpc_build_mpi:mkdir -p %{buildroot}%{hpc_install_base}} \ %hpc_make_modules_dir \ +%{?hpc_make_modules_extra} \ %{?_hpc_build_xx:mkdir -p %{buildroot}%{hpc_module_dep_install}} \ %hpc_write_modules_version_file \ echo "Writing %{buildroot}%{hpc_module_dep_base}%{version}" \ @@ -260,11 +263,14 @@ # For files section: ## Modules Files +# %hpc_module_extra can be defined by domain specific macros such as %hpc_python_master_package or in +# the specfile in order to provide a hook for registering extra files made by %hpc_make_modules_extra %hpc_modules_files \ %{?_hpc_build_xx:%{hpc_module_dep_install}} \ %dir %{hpc_module_dep_base} \ %{hpc_module_dep_base}/.version.%{version} \ -%{hpc_module_dep_base}/%{version} +%{hpc_module_dep_base}/%{version} \ +%{?hpc_module_extra} # Compilers - use in library package when building compilers %hpc_cf_dirs \ @@ -357,7 +363,7 @@ # this package pulls in a new version of the dependent library, because # these libraries also carry the version number of their names and # don't conflict with an earlier version. -# %hpc_master_package [-n <full_package_name>][-g <group>][-s# <.so-version>][-l][-L][-N <pname>][-q] <package_ext> +# %hpc_master_package [-n <full_package_name>][-g <group>][-s# <.so-version>][-l][-L][-N <pname>][-O <fullname>][-P <prefix][-q] <package_ext> # -n <full_package_name>: specify the full package name. This may not be used in conjunction with # the package name extension <package_ext>. # -g <group>: Specify the group to use. @@ -373,13 +379,23 @@ # -N <pname>: Specify if a sub-package has different basename (pname) # -q: For internal use only! # -M: use specified name in place of %%name -# -O: Obsoleted package with version %version, multiple obsoletes may be -# separated by ":" +# -O <fullname>: Add Provides/Obsoletes for package <fullname> with +# version %version, multiple names may be separated by ":" +# -P <prefix>: Add Provides/Obsoletes with %version-%release for package +# names derived from the master package name, replacing <prefix> with +# the contents of %<prefix>_provides. Used for python packages in order +# to provide the extra python3 flavor by the package for the current +# primary interpreter. The argument can be used in general as well: +# If your package is called 'foo-bar' with version and release 0.1-2, you +# `%define foo_provides fooA abc123`, and call +# `%hpc_master_package -P foo`, then the package will have +# 'Provides: fooA-bar = 0.1-2', 'Provides: abc123-bar = 0.1-2', and the +# respective 'Obsoletes:' tags. # -E: create an 'empty' master package with no requires. This allows to # keep the macro package around for compatibility even if the underlying # package has been removed. # -%hpc_master_package(n:g:s:lLaqN:M:O:E) \ +%hpc_master_package(n:g:s:lLaqN:M:O:P:E) \ %define _mylib %{-s:lib}%{!-s:%{-l:lib}} \ %define _p_ext %(test -n "%{*}" && echo -%{*}) \ %{-M: \ %define name %{-M*}} \ @@ -431,6 +447,15 @@ echo "Provides: $i = %version"; \ done)\ } \ +%{-P:%(\ + prefix=%{-P*}; \ + lname=%{_lname}; \ + for extra in %{expand:%%{?%{-P*}_provides}}; do \ + provided_extra=${lname/$prefix/$extra}; \ + echo "Provides: ${provided_extra} = %{version}-%{release}"; \ + echo "Obsoletes: ${provided_extra} < %{version}-%{release}"; \ + done)\ +} \ %{!-E:Requires: %{s_name} = %version} \ %{!-l:%{!-s:%{!-a:BuildArch: noarch}}} \ %description -n %_lname \ @@ -525,6 +550,7 @@ add_args (L_arg) \ add_args (a_arg) \ add_args (other_arg) \ + add_args (python_flavor, "-P") \ -- io.stderr:write("pname "..rpm.expand("%pname").."\\n") \ -- io.stderr:write(rpm.expand("%{hpc_master_package " .. arg_list .."}").."\\n") \ -- io.stderr:write(rpm.expand("%{hpc_master_package " .. arg_list .." -q}"):gsub("%s","").."\\n") \ @@ -547,6 +573,33 @@ rpm.define("pname " .. pname) \ rpm.define("name " .. name) \ -- io.stderr:write("pname "..rpm.expand("%pname").."\\n\\n") \ + if rpm.expand("%{?hpc_make_modules_extra}") == "" then \ + rpm.define("hpc_make_modules_extra %hpc_make_modules_extra_python") \ + end \ + if rpm.expand("%{?hpc_module_extra}") == "" then \ + rpm.define("hpc_module_extra %hpc_module_extra_python") \ + end \ +} + +# For python packages, %hpc_write_modules_files is called inside %python_expand. +# https://github.com/openSUSE/python-rpm-macros#flavor-expansion +# Provide modules for extra flavors if the expanded flavor has <flavor>_provides defined, +# such as the primary python flavor providing "python3". +%hpc_make_modules_extra_python \ +if [ -n "%%{?$python_provides}" ]; then \ + targetdir=%{hpc_module_dep_base} \ + targetdir=${targetdir%%%%/} \ + for extra in %%{?$python_provides}; do \ + ln -sf $targetdir %{buildroot}${targetdir/${python_flavor:-$(cat _current_flavor)}/$extra} \ + done \ +fi + +%hpc_module_extra_python \ +%{lua: \ +local pyflavor = rpm.expand("%python_flavor") \ +for extra in rpm.expand("%{?" .. pyflavor .. "_provides}"):gmatch("%S+") do \ + print(rpm.expand("%hpc_module_dep_base"):gsub(pyflavor, extra):sub(1,-2) .. "\\n") \ +end \ } # %hpc_shebang_sanitize_scripts <dir>