%{dependencytracking} \
}
-%cmake { \
-CC="%{__cc}" \
-CXX="%{__cxx}" \
-CFLAGS="%{rpmcflags}" \
-CXXFLAGS="%{rpmcxxflags}" \
-LDFLAGS="%{rpmldflags}" \
-%{__cmake} \
- -DCMAKE_INSTALL_PREFIX=%{_prefix} \
- -DCMAKE_BUILD_TYPE=%{!?debug:Release}%{?debug:Debug} \
+%cmake \
+%{?__cc:CC="%{__cc}"} \\\
+%{?__cxx:CXX="%{__cxx}"} \\\
+CPPFLAGS="${CPPFLAGS:-%{rpmcppflags}}" \\\
+CFLAGS="${CFLAGS:-%{rpmcflags}}" \\\
+FFLAGS="${FFLAGS:-%{rpmcflags}}" \\\
+FCFLAGS="${FCFLAGS:-%{rpmcflags}}" \\\
+CXXFLAGS="${CXXFLAGS:-%{rpmcxxflags}}" \\\
+LDFLAGS="${LDFLAGS:-%{rpmldflags}}" \\\
+%{__cmake} \\\
+ -DCMAKE_VERBOSE_MAKEFILE=ON \\\
+ -DCMAKE_BUILD_TYPE=%{!?debug:Release}%{?debug:Debug} \\\
+ -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir} \\\
+ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \\\
+ -DINCLUDE_INSTALL_DIR:PATH=%{_includedir} \\\
+ -DLIB_INSTALL_DIR:PATH=%{_libdir} \\\
+ -DSHARE_INSTALL_PREFIX:PATH=%{_datadir} \\\
+ -DSYSCONF_INSTALL_DIR:PATH=%{_sysconfdir} \\\
%if "%{_lib}" == "lib64" \
- -DLIB_SUFFIX=64 \
+ -DLIB_SUFFIX=64 \\\
%endif \
-}
+ -DBUILD_SHARED_LIBS:BOOL=ON \\\
+%{nil}
%scons { \
%{__scons} \
# Find all shared object files with unresolved symbols. Warn
# and terminate if any found (termination can be turned off by define).
#%no_install_post_check_so 1
+#%skip_post_check_so libwithunresolvedok.so.*
+#
+# NOTE: define skip_post_check_so only if such library really requires
+# unresolved symbols and always leave a comment why it is required:
+# # executable provides symbols foo, bar for those libraries:
+# %define skip_post_check_so libwithoutfoo.so.* libwithoutbar.so.*
+#
%__spec_install_post_check_so { \
__spec_install_post_check_so() { \
fail=0; \
printf "Searching for shared objects with unresolved symbols..."; \
for f in $(find $RPM_BUILD_ROOT -type f -name '*.so.*' -print); do \
+ %{?skip_post_check_so:awk -v "file=$f" 'BEGIN { split("%{skip_post_check_so}", R); for (i=1; i in R; i++) { if (file ~ "(^|/)" R[i] "$") exit(1); } }' || continue;} \
LC_ALL=C objdump -T $f 2> /dev/null | LC_ALL=C awk -v "file=$f" 'BEGIN { found=0; skip["program_name"]=1; symbols = "" } /^[0-9a-z]+ +D +\*UND\*/ { if ($NF in skip) { next; }; found = 1; symbols = symbols "\n\t" $NF } END { if (found) { print "\nUnresolved symbols found in: " file symbols; exit(1); } } ' || fail=1 ; \
done ; \
echo " DONE"; \
- %{!?no_install_post_check_so:[ $fail -eq 1 ] && : || :;} \
+ %{!?no_install_post_check_so:return $fail;} \
}; __spec_install_post_check_so }}
#-----------------------------------------------------------------
%php_debug %{expand:%%global php_debug %(awk '/#define ZEND_DEBUG/{print $3}' %{php_includedir}/main/php_config.h 2>/dev/null || echo ERROR)}%php_debug
%zend_module_api %{expand:%%global zend_module_api %(awk '/#define ZEND_MODULE_API_NO/{print $3}' %{php_includedir}/Zend/zend_modules.h 2>/dev/null || echo ERROR)}%zend_module_api
%zend_extension_api %{expand:%%global zend_extension_api %(awk '/#define ZEND_EXTENSION_API_NO/{print $3}' %{php_includedir}/Zend/zend_extensions.h 2>/dev/null || echo ERROR)}%zend_extension_api
-%zend_zts %{expand:%%global zend_zts %(Z=$(grep -sc '^#define ZTS 1' %{php_includedir}/main/php_config.h); echo ${Z:-ERROR})}%zend_zts
+%_zend_zts %{expand:%%global _zend_zts %(Z=$(grep -sc '^#define ZTS 1' %{php_includedir}/main/php_config.h); echo ${Z:-ERROR})}%_zend_zts
+# "_ts" if ZTS enabled, empty otherwise
+%zend_zts %{expand:%%global _zend_zts_%{?_zend_zts} 1}%{?_zend_zts_1:_ts}
# helper macro
%__php_api_requires(v:) Requires: php%{-v*}(%{expand:%1}) = %{expand:%{%{!?2:%{1}}%{?2}}}
%requires_php_extension %{__php_api_requires modules_api php_api_version} \
%{__php_api_requires zend_module_api} \
%{__php_api_requires -v %php_major_version debug php_debug} \
-%{__php_api_requires -v %php_major_version thread-safety zend_zts}
+%{__php_api_requires -v %php_major_version thread-safety _zend_zts}
# for zend extensions
%requires_zend_extension %{__php_api_requires zend_module_api} \
%{__php_api_requires zend_extension_api} \
%{__php_api_requires -v %php_major_version debug php_debug} \
-%{__php_api_requires -v %php_major_version thread-safety zend_zts}
+%{__php_api_requires -v %php_major_version thread-safety _zend_zts}
# for php pdo modules (php-pecl-PDO_*)
%requires_php_pdo_module %{__php_api_requires PDO_API php_pdo_api_version}
# %%pear_package_setup ...
#
# -a # - also unpack SOURCE#. for PEAR bootstrapping
-# -n FMT - create builddir with FMT, instead of default %%{_pearname}-%%{version}
+# -n FMT - create builddir with FMT, instead of default %%{pearname}-%%{version}
# -z - unpack pear package and let pear use package.xml (not tarball) for install. for PEAR bootstrapping
# -D - pass -D to %setup (so the build dir is not removed)
# -c - register channel from local channel.xml file
# as it's displayed to user after package install. and adding additional gzip
# dep is just waste ;)
%pear_package_setup(a:d:n:zDc:) \
-%define srcdir %{-n*}%{!-n:%{_pearname}-%{version}} \
+%define srcdir %{-n*}%{!-n:%{?_pearname}%{!?_pearname:%{pearname}}-%{version}} \
%define builddir %{_builddir}/%{srcdir} \
%setup -q -c -T %{-D:-D} -n %{srcdir} \
%{-z:%{__tar} zxf %{S:0}; %{-a:%{__tar} zxf %{S:%{-a*}}}} \