-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}
%{!?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: \
%{?_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()
%__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)
# 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
%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
%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: