# $Revision$, $Date$
+# vim:ts=4 sw=4 noet ft=spec
+#
# PLD Linux rpm macros.
# <http://www.pld-linux.org/>
%kgcc_package gcc
# compiler version
-%cc_version %{expand:%%global cc_version %(%{__cc} -dumpversion || echo ERROR)}%cc_version
-%cxx_version %{expand:%%global cxx_version %(%{__cxx} -dumpversion || echo ERROR)}%cxx_version
+%cc_version %{expand:%%global cc_version %(%{__cc} -dumpversion 2>/dev/null || echo 0.0)}%cc_version
+%cxx_version %{expand:%%global cxx_version %(%{__cxx} -dumpversion 2>/dev/null || echo 0.0)}%cxx_version
%__rm /bin/rm --interactive=never
}
%cmake \
-CC="%{__cc}" \\\
-CXX="%{__cxx}" \\\
-CFLAGS="%{rpmcflags}" \\\
-CXXFLAGS="%{rpmcxxflags}" \\\
-LDFLAGS="%{rpmldflags}" \\\
+%{?__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_INSTALL_PREFIX=%{_prefix} \\\
+ -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 \\\
%endif \
+ -DBUILD_SHARED_LIBS:BOOL=ON \\\
%{nil}
%scons { \
# 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:echo %{skip_post_check_so} | LC_ALL=C awk -v "file=$f" 'file ~ "(^|/)" $0 "$" { 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:return $fail;} \
+__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 \
+ 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; %{?skip_post_check_so:split("%{skip_post_check_so}", R); for (i=1; i in R; i++) { if (file ~ "(^|/)" R[i] "$") { print "Library marked with skip_post_check_so, ignoring errors.\n"; exit(0); } } } exit(1); } } ' || fail=1 ; \
+ done ; \
+ echo " DONE"; \
+ %{!?no_install_post_check_so:return $fail;} \
}; __spec_install_post_check_so }}
#-----------------------------------------------------------------
#-----------------------------------------------------------------
# Update icon cache
-# requires: gtk+
+# BuildRequires: rpmbuild(macros) >= 1.596
+# Requires: hicolor-icon-theme
#
%update_icon_cache() {{ \
+ %{!?1:%{error:%{0}: Required icon dir missing}exit 1} \
umask 022; \
- /usr/bin/gtk-update-icon-cache -qf %{_datadir}/icons/%1; \
+ [ -x /usr/bin/gtk-update-icon-cache ] && /usr/bin/gtk-update-icon-cache -qf %{_datadir}/icons/%1 || :; \
};} \
%{nil}
fi; \
%{nil}
+#-----------------------------------------------------------------
+# Compile GSettings schemas
+# requires: glib2 >= 1:2.26.0
+#
+%glib_compile_schemas() {{ \
+ umask 022; \
+ /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas; \
+};} \
+%{nil}
+
#-----------------------------------------------------------------
# post %install sequence:
# - autodeps exceptions
# banner support (useful in {pre,post}{,un} and triggers)
#
# Usage:
-# %banner name [-a] [-e] [-n] [-tn] <<EOF
+# %banner name [-a] [-e] [-n] [-tn] [-o] <<EOF
# the banner text, the banner text
# the banner text, and following line
#EOF
# -e - send to stderr instead of stdout
# -n - no show banner (overrides -t)
# -t - show only, if RPM_SCRIPTVERBOSITY >= n; default n=5
+# -o - show only once, i.e when package is installed for the first time
#
# Tests:
# (rpm -E '%banner -e banner <<EOF'; echo -e 'hi\nEOF') > m; sh -x m
+# (rpm -E '%banner -o -e banner <<EOF'; echo -e 'hi\nEOF') > m; sh -x m
+# (rpm -E '%banner -o -e banner <<EOF'; echo -e 'hi\nEOF') > m; sh -x m 1
# rpm -E 'date | %banner -e banner' > m; sh -x m
+# rpm -E 'date | %banner -o -e banner' > m; sh -x m
#
-%banner(aent:) ( \
+%banner(aenot:) %{-o:([ "$1" != 1 ] ||} ( \
RPM_SCRIPTVERBOSITY=5 \
[ -r /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm \
if [ -x /usr/bin/banner.sh ]; then \
else \
CMD="cat%{-e: >&2}" \
fi \
-eval $CMD %{?2:%2}%{?3: %3}) \
+eval $CMD %{?2:%2}%{?3: %3})%{-o:)} \
%{nil}
# useradd/groupadd macros
%{!?_noautoprov:%global _noautoprov %{nil}}%{expand:%%global _noautoprov %{_noautoprov} 'pear(tests/.*)'} \
%{nil}
-# Copies exctracted PEAR package structure and PEAR registry to buildroot.
+# Copies extracted PEAR package structure and PEAR registry to buildroot.
# Author: Elan Ruusamäe <glen@pld-linux.org>
%pear_package_install() \
cp -a ./%{php_pear_dir}/{.registry,*} $RPM_BUILD_ROOT%{php_pear_dir} \
+# tests should not be packaged \
+%{__rm} -rf $RPM_BUILD_ROOT%{php_pear_dir}/tests \
+# cleanup backups \
find $RPM_BUILD_ROOT%{php_pear_dir} '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v \
# help the developer out a little: \
if [ -f _noautoreq ]; then \
# migrate from init script to upstart job
%upstart_post() \
- if [ -f /var/lock/subsys/"%1" ] ; then \
- /sbin/service --no-upstart "%1" stop \
- /sbin/service "%1" start \
+ if [ -f /var/lock/subsys/%1 ]; then \
+ /sbin/service --no-upstart %1 stop \
+ /sbin/service %1 start \
fi
# restart the job after upgrade or migrate to init script on removal
# cannot be stopped with 'service' as /etc/init/$name.conf may be missing
# at this point
%upstart_postun() \
- if [ -x /sbin/initctl ] && /sbin/initctl status "%1" 2>/dev/null | grep -q 'running' ; then \
- /sbin/initctl stop "%1" >/dev/null 2>&1 \
- [ -f "/etc/rc.d/init.d/%1" -o -f "/etc/init/%1.conf" ] && { echo -n "Re-" ; /sbin/service "%1" start ; } ; \
+ if [ -x /sbin/initctl ] && /sbin/initctl status %1 2>/dev/null | grep -q 'running' ; then \
+ /sbin/initctl stop %1 >/dev/null 2>&1 \
+ [ -f /etc/rc.d/init.d/%1 -o -f /etc/init/%1.conf ] && { echo -n "Re-"; /sbin/service %1 start; }; \
fi
-# vim:ts=4 sw=4 noet ft=spec
+# EOF