X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=rpm.macros;h=aeb242c2e0f8bb96568419ba49168e01f4ef84d6;hb=1719784fb17c2de80679d0e87f9d0b58113b604f;hp=52c191ac13d267fecdc1180aad799e7b90c7c690;hpb=1c834f1450daaf1d30c070a80eabdc24a230020b;p=packages%2Frpm-build-macros.git diff --git a/rpm.macros b/rpm.macros index 52c191a..aeb242c 100644 --- a/rpm.macros +++ b/rpm.macros @@ -289,6 +289,9 @@ CPPFLAGS="${CPPFLAGS:-%{rpmcppflags}}" \\\ -DCMAKE_MODULE_LINKER_FLAGS_PLD="${LDFLAGS:-%{rpmldflags}}" \\\ %if "%{_lib}" == "lib64" \ -DLIB_SUFFIX=64 \\\ +%endif \ +%if "%{_lib}" == "libx32" \ + -DLIB_SUFFIX=x32 \\\ %endif \ -DBUILD_SHARED_LIBS:BOOL=ON \\\ %{nil} @@ -724,6 +727,40 @@ __spec_install_post_check_tmpfiles() { \ %{!?no_install_post_check_tmpfiles:return $fail;} \ }; __spec_install_post_check_tmpfiles }} +#----------------------------------------------------------------- +# Verify that scripts have reasonable shebangs +# Test spec: see "test/spec_install_post_check_shebangs" branch on packages/test.spec +# +#%no_install_post_check_shebangs 1 +# +%__spec_install_post_check_shebangs { \ +__spec_install_post_check_shebangs() { \ +%{!?debug:set +x;} \ + fail=0; \ + echo "Checking script shebangs..."; \ + find $RPM_BUILD_ROOT -type f -perm -500 -print | \ + while read f ; do \ + shebang="$(sed -e'1s/#! *\(.*\)/\1/;t;d;q' "$f")" ; \ + f="${f##$RPM_BUILD_ROOT}"; \ + case "$shebang" in \ + "%{__python}"|"%{__python3}"|"%{__python} "*|"%{__python3} "* \ + |"/usr/bin/python%{py_ver}"|"/usr/bin/python%{py_ver} "* \ + |"/usr/bin/python%{py3_ver}"|"/usr/bin/python%{py3_ver} "*) \ + ;; \ + "/usr/bin/env python"*|"/usr/bin/python"|"/usr/bin/python "*) \ + echo "$f starts with '#!$shebang', should be '#!%{__python}' or '#!%{__python3}'" >&2;\ + fail=1 ; \ + ;; \ + "/usr/bin/env "*) \ + echo "$f starts with '#!$shebang', should be explicit interpreter path" >&2;\ + fail=1 ; \ + ;; \ + *) ;;\ + esac ; \ + done ; \ + echo " DONE" ; \ +}; %{!?no_install_post_check_shebangs:__spec_install_post_check_shebangs} } + # Remove common Perl files we don't package %__spec_install_post_perl_clean {\ %{!?no_install_post_perl_clean: \ @@ -836,6 +873,8 @@ fi; \ %{?_noautoreq_pear: %{__noauto_regexp_helper -p pear %{_noautoreq_pear}}} \ %{?_noautoreq_perl: %{__noauto_regexp_helper -p perl %{_noautoreq_perl}}} \ %{?_noautoreq_java: %{__noauto_regexp_helper -p java %{_noautoreq_java}}} \ + %{?_noautoreq_pyegg: %{__noauto_regexp_helper -p pythonegg %{_noautoreq_pyegg}}} \ + %{?_noautoreq_py3egg: %{__noauto_regexp_helper -p python3egg %{_noautoreq_py3egg}}} \ %{nil} # helper for wrapping _noautoreq between perl() or pear() @@ -939,7 +978,7 @@ fi; \ %__php /usr/bin/php%{php_versuffix} # helper macro -%__php_api_requires(v:) Requires: %{php_name}(%{expand:%1}) = %{expand:%{%{!?2:%{1}}%{?2}}} +%__php_api_requires() Requires: %{php_name}(%{expand:%1}) = %{expand:%{%{!?2:%{1}}%{?2}}} # macros for public use # for php extensions (php-pecl) @@ -1057,11 +1096,10 @@ fi \ # directories %py3_prefix %{expand:%%global py3_prefix %(%{__python3} -c "import sys; print(sys.prefix)" 2>/dev/null || echo ERROR)}%py3_prefix -%py3_libdir %{expand:%%global py3_libdir %(%{__python3} -c "import sysconfig; print(sysconfig.get_path('platstdlib'))" 2>/dev/null || echo ERROR)}%py3_libdir %py3_incdir %{expand:%%global py3_incdir %(%{__python3} -c "import sysconfig; print(sysconfig.get_path('include'))" 2>/dev/null || echo ERROR)}%py3_incdir -%py3_sitedir %{expand:%%global py3_sitedir %(%{__python3} -c "import sysconfig; print(sysconfig.get_path('platlib'))" 2>/dev/null || echo ERROR)}%py3_sitedir -%py3_sitescriptdir %{expand:%%global py3_sitescriptdir %(%{__python3} -c "import sysconfig; print(sysconfig.get_path('purelib'))" 2>/dev/null || echo ERROR)}%py3_sitescriptdir -%py3_scriptdir %{py3_prefix}/share/python%{py3_ver} +%py3_libdir %{py3_prefix}/%{_lib}/python%{py3_ver} +%py3_sitedir %{py3_libdir}/site-packages +%py3_sitescriptdir %{py3_prefix}/share/python%{py3_ver}/site-packages %py3_dyndir %{py3_libdir}/lib-dynload # pure python modules compilation @@ -1069,6 +1107,69 @@ fi \ %py3_ocomp %{__python3} -O -c "import compileall; import sys; compileall.compile_dir(sys.argv[1], ddir=sys.argv[1][len('$RPM_BUILD_ROOT'):])" +%py_build { \ + LDFLAGS="${LDFLAGS:-%rpmldflags}"; export LDFLAGS; \ + CFLAGS="${CFLAGS:-%rpmcppflags %rpmcflags}"; export CFLAGS; \ + CXXFLAGS="${CXXFLAGS:-%rpmcppflags %rpmcxxflags}"; export CXXFLAGS; \ + %{?__cc:CC="%{__cc}"; export CC;} \ + %{?__cxx:CXX="%{__cxx}"; export CXX;} \ + %{__python} setup.py \ + build --build-base=build-2 \ +} + +# "shrink" filter to keep this macro without newlines, +# so it could be used as make arguments +%py_install_opts() %{shrink: \ + --prefix=%{_prefix} \ + --install-purelib=%{py_sitescriptdir} \ + --install-platlib=%{py_sitedir} \ + --optimize=2 \ +} + +%py_install { \ + LDFLAGS="${LDFLAGS:-%rpmldflags}"; export LDFLAGS; \ + CFLAGS="${CFLAGS:-%rpmcppflags %rpmcflags}"; export CFLAGS; \ + CXXFLAGS="${CXXFLAGS:-%rpmcppflags %rpmcxxflags}"; export CXXFLAGS; \ + %{?__cc:CC="%{__cc}"; export CC;} \ + %{?__cxx:CXX="%{__cxx}"; export CXX;} \ + %{__python} setup.py \ + build --build-base=build-2 \ + install --skip-build \ + %{py_install_opts} \ + --root=$RPM_BUILD_ROOT \ +} + +%py3_build { \ + LDFLAGS="${LDFLAGS:-%rpmldflags}"; export LDFLAGS; \ + CFLAGS="${CFLAGS:-%rpmcppflags %rpmcflags}"; export CFLAGS; \ + CXXFLAGS="${CXXFLAGS:-%rpmcppflags %rpmcxxflags}"; export CXXFLAGS; \ + %{?__cc:CC="%{__cc}"; export CC;} \ + %{?__cxx:CXX="%{__cxx}"; export CXX;} \ + %{__python3} setup.py build --build-base=build-3 \ +} + +# "shrink" filter to keep this macro without newlines, +# so it could be used as make arguments +%py3_install_opts() %{shrink: \ + --prefix=%{_prefix} \ + --install-purelib=%{py3_sitescriptdir} \ + --install-platlib=%{py3_sitedir} \ + --optimize=2 \ +} + +%py3_install { \ + LDFLAGS="${LDFLAGS:-%rpmldflags}"; export LDFLAGS; \ + CFLAGS="${CFLAGS:-%rpmcppflags %rpmcflags}"; export CFLAGS; \ + CXXFLAGS="${CXXFLAGS:-%rpmcppflags %rpmcxxflags}"; export CXXFLAGS; \ + %{?__cc:CC="%{__cc}"; export CC;} \ + %{?__cxx:CXX="%{__cxx}"; export CXX;} \ + %{__python3} setup.py \ + build --build-base=build-3 \ + install --skip-build \ + %{py3_install_opts} \ + --root=$RPM_BUILD_ROOT \ +} + # node.js libdir # Requirements: # BuildRequires: rpmbuild(macros) >= 1.634 @@ -1144,9 +1245,6 @@ fi; \ %xmms_effect_plugindir %{expand:%%global xmms_effect_plugindir %(xmms-config --effect-plugin-dir 2>/dev/null || echo ERROR)}%xmms_effect_plugindir %xmms_general_plugindir %{expand:%%global xmms_general_plugindir %(xmms-config --general-plugin-dir 2>/dev/null || echo ERROR)}%xmms_general_plugindir -%_host_base_arch %{expand:%%global _host_base_arch %(echo %{_host_cpu} | sed 's/i.86/i386/;s/athlon/i386/;s/pentium./i386/;s/amd64/x86_64/;s/ia32e/x86_64/;s/sparcv./sparc/;s/arm.*/arm/')}%_host_base_arch -%_target_base_arch %{expand:%%global _target_base_arch %(echo %{_target_cpu} | sed 's/i.86/i386/;s/athlon/i386/;s/pentium./i386/;s/amd64/x86_64/;s/ia32e/x86_64/;s/sparcv./sparc/;s/arm.*/arm/')}%_target_base_arch - # user/group checking macros # # Usage: