%_dependency_whiteout %{nil}
%_smp_mflags %([ -z "$RPM_BUILD_NCPUS" ] \\\
- && RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
- [ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-j$RPM_BUILD_NCPUS")
+ && RPM_BUILD_NCPUS=$(/usr/bin/getconf _NPROCESSORS_ONLN); \\\
+ [ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-j$(($RPM_BUILD_NCPUS * 2))")
#-----------------------------------------------------------------
#
# Flags specified in %filterout_* are removed from %rpm*flags, exactly:
# %rpmcflags = %optflags - %filterout - %filterout_c - %filterout_ld
# %rpmcxxflags = %optflags - %filterout - %filterout_cxx - %filterout_ld
+# %rpmcppflags = %optcppflags - %filterout - %filterout_cpp - %filterout_ld
# %rpmldflags = %optldflags - %filterout_ld
#
# Regular expressions are supported, but to avoid some character be treated
%{filter_out}
}')
+%rpmcppflags %(awk 'BEGIN {
+ split("%{?debug:%debugcppflags}%{!?debug:%optcppflags}%{?debuginfocppflags}",I);
+ split("%{?filterout} %{?filterout_cpp} %{?filterout_cpp}",F);
+ %{filter_out}
+}')
+
%rpmldflags %(awk 'BEGIN {
split("%{?optldflags}",I);
split("%{?filterout_ld}",F)
CXXFLAGS="${CXXFLAGS:-%rpmcxxflags}" ; export CXXFLAGS ; \
FFLAGS="${FFLAGS:-%rpmcflags}" ; export FFLAGS ; \
FCFLAGS="${FCFLAGS:-%rpmcflags}" ; export FCFLAGS ; \
- CPPFLAGS="${CPPFLAGS:-}" ; export CPPFLAGS ; \
+ CPPFLAGS="${CPPFLAGS:-%rpmcppflags}" ; export CPPFLAGS ; \
%{?__cc:CC="%{__cc}" ; export CC ; } \
%{?__cxx:CXX="%{__cxx}" ; export CXX ; } \
%{?configuredir:%{configuredir}}%{!?configuredir:.}/configure \
%{dependencytracking} \
}
-# override __cmake to add -j4 in your ~/.rpmmacros for parallel make
%__cmake /usr/bin/cmake
%cmake { \
CC="%{__cc}" \
CXX="%{__cxx}" \
CFLAGS="%{rpmcflags}" \
CXXFLAGS="%{rpmcxxflags}" \
+LDFLAGS="%{rpmldflags}" \
%{__cmake} \
}
CFLAGS="${CFLAGS:-%rpmcflags}" \
CXXFLAGS="${CXXFLAGS:-%rpmcxxflags}" \
FFLAGS="${FFLAGS:-%rpmcflags}" \
- CPPFLAGS="${CPPFLAGS:-}" \
+ CPPFLAGS="${CPPFLAGS:-%rpmcppflags}" \
%{?__cc:CC="%{__cc}"} \
%{?__cxx:CXX="%{__cxx}"} \
libsuffix=%{_lib} \
CXXFLAGS="${CXXFLAGS:-%rpmcxxflags}" \
FFLAGS="${FFLAGS:-%rpmcflags}" \
FCFLAGS="${FCFLAGS:-%rpmcflags}" \
- CPPFLAGS="${CPPFLAGS:-}" \
+ CPPFLAGS="${CPPFLAGS:-%rpmcppflags}" \
%{?__cc:CC="%{__cc}"} \
%{?__cxx:CXX="%{__cxx}"} \
--host=%{_target_platform} \
fi; \
fi; }; __spec_install_post_chrpath } } }
+#-----------------------------------------------------------------
+# 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
+%__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 \
+ 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 ] && : || :;} \
+}; __spec_install_post_check_so }}
+
#-----------------------------------------------------------------
# Find and gzip all kernel modules
#
#
%gconf_schema_install() \
umask 022; \
- GCONF_CONFIG_SOURCE="xml:readwrite:/etc/gconf/gconf.xml.defaults" /usr/bin/gconftool-2 --makefile-install-rule /etc/gconf/schemas/%{?1}%{!?1:*.schemas} > /dev/null; \
+ GCONF_CONFIG_SOURCE="xml:readwrite:/etc/gconf/gconf.xml.defaults" \\\
+ /usr/bin/gconftool-2 --makefile-install-rule /etc/gconf/schemas/%{?1}%{!?1:*.schemas} > /dev/null; \
%{nil}
%gconf_schema_uninstall() \
-if [ $1 = 0 ]; then \
+if [ $1 = 0 -a -x /usr/bin/gconftool-2 ]; then \
umask 022; \
- GCONF_CONFIG_SOURCE="xml:readwrite:/etc/gconf/gconf.xml.defaults" /usr/bin/gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/%{?1} > /dev/null \
+ GCONF_CONFIG_SOURCE="xml:readwrite:/etc/gconf/gconf.xml.defaults" \\\
+ /usr/bin/gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/%{?1} > /dev/null \
fi; \
%{nil}
%update_desktop_database() {{ \
umask 022; \
/usr/bin/update-desktop-database -q; \
-}}%{nil}
+};} \
+%{nil}
%update_desktop_database_post %update_desktop_database
%update_desktop_database_postun() {{ \
if [ "$1" = "0" ]; then \
- %update_desktop_database; \
+ %update_desktop_database \
fi; \
-}}%{nil}
+};} \
+%{nil}
#-----------------------------------------------------------------
# Update shared MIME info database
%update_mime_database() {{ \
umask 022; \
/usr/bin/update-mime-database %{_datadir}/mime; \
-}}%{nil}
+};} \
+%{nil}
#-----------------------------------------------------------------
# Update icon cache
%update_icon_cache() {{ \
umask 022; \
/usr/bin/gtk-update-icon-cache -qf %{_datadir}/icons/%1; \
-}}%{nil}
+};} \
+%{nil}
#-----------------------------------------------------------------
# Update scrollkeeper database
%ruby_vendorlibdir %{expand:%%global ruby_vendorlibdir %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["vendorlibdir"]' 2>/dev/null || echo ERROR)}%ruby_vendorlibdir
%ruby_sitearchdir %{expand:%%global ruby_sitearchdir %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["sitearchdir"]' 2>/dev/null || echo ERROR)}%ruby_sitearchdir
%ruby_sitelibdir %{expand:%%global ruby_sitelibdir %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["sitelibdir"]' 2>/dev/null || echo ERROR)}%ruby_sitelibdir
+%ruby_rdocdir /usr/share/rdoc
%ruby_version %{expand:%%global ruby_version %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["ruby_version"]' 2>/dev/null || echo ERROR)}%ruby_version
%ruby_ver_requires_eq Requires: ruby(ver) = %ruby_version
%ruby_mod_ver_requires_eq Requires: ruby-modules(ver) = %ruby_version
%pyrequires_eq() Requires: %1
# Hardlink binary identical .pyc and .pyo files
-# (idea by glen <at> pld-linux <dot> org)
%__spec_install_post_py_hardlink {\
%{!?no_install_post_py_hardlink: __spec_install_post_py_hardlink() { \
-[ ! -d "$RPM_BUILD_ROOT" ] || find "$RPM_BUILD_ROOT" -name '*.pyc' | while read a; do \
- b="${a%.pyc}.pyo"; \
- if cmp -s "$a" "$b"; then \
- ln -f "$a" "$b"; \
- fi; \
-done \
+local a b c=0 t=0; \
+if [ -d "$RPM_BUILD_ROOT" ]; then \
+ find "$RPM_BUILD_ROOT" -name '*.pyc' > __rpm_pyc; \
+ while read a; do \
+ b="${a%.pyc}.pyo"; \
+ if cmp -s "$a" "$b"; then \
+ ln -f "$a" "$b"; \
+ c=$((c + 1)); \
+ fi; \
+ t=$((t + 1)); \
+ done < __rpm_pyc; \
+ [ $t -gt 0 ] && printf "Hardlink Python files: %d/%d files hardlinked\n" $c $t; \
+ rm -f __rpm_pyc; \
+fi; \
}; __spec_install_post_py_hardlink } }
# remove python sources, so that check-files won't complain
-# (idea by glen <at> pld-linux <dot> org)
%py_postclean() \
for d in %{py_sitescriptdir} %{py_sitedir} %*; do \
[ ! -d "$RPM_BUILD_ROOT$d" ] || find "$RPM_BUILD_ROOT$d" -name '*.py' -print0 | xargs -0r -l512 rm;\
%groupadd(g:P:rfo) \
%{!-g:%{error:groupadd: Required argument -g missing}} \
%{!?1:%{error:groupadd: Required parameter group missing}} \
-if [ -n "`/usr/bin/getgid %{1}`" ]; then \
+if /usr/bin/getgid %{1} > /dev/null 2>&1; then \
if [ "`/usr/bin/getgid %{1}`" != "%{-g*}" ]; then \
echo "Error: group %{1} doesn't have gid=%{-g*}. Correct this before installing %{-P*}%{!?-P:%{name}}." 1>&2 \
exit 1 \
%java_home %{expand:%%global java_home %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm; echo ${JAVA_HOME:-ERROR})}%java_home
-%ant JAVA_HOME=%{java_home} ant
+%ant JAVA_HOME=%{java_home} CLASSPATH=$CLASSPATH ant
%jar %{java_home}/bin/jar
%java %{expand:%%global java %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVACMD; . %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD)}%java
%javac %{java_home}/bin/javac
# Author: Elan Ruusamäe <glen@pld-linux.org>
#
# Usage:
-# %%pear_package_setup [-a #] [-n FMT]
+# %%pear_package_setup ...
#
# -a # - also unpack SOURCE#. for PEAR bootstrapping
# -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
#
# unpack PEAR package to %%{_builddir}/FMT. package is extracted with already
# destination hierarchy. you should copy the tree to buildroot after
%__pear_install_log \
tee install.log \
# make post message of optional packages \
-grep 'can optionally use' install.log | sed -e 's,package "pear/,package "php-pear-,g;s,^pear/,php-pear-,' > optional-packages.txt \
+grep 'can optionally use' install.log | sed -e 's,package "pear/,package "php-pear-,g;s,^pear/,php-pear-,;s,^pear/,php-pear-,;s,^channel://.*/,,' > optional-packages.txt \
if [ -s optional-packages.txt ]; then \
awk -F'"' '/use package/{print $2}' optional-packages.txt | sed -e "s,_,/,g;s,php-pear-, 'pear(,;s,$,.*)'," | tr -d '\\\n' > _noautoreq \
else \
%pear_install(a:n:zD) \
%__pear \\\
- -c pearrc \\\
+ -c %{builddir}/pearrc \\\
-d doc_dir=/docs \\\
- -d php_dir=%{php_pear_dir} \\\
+ -d temp_dir=/tmp \\\
+ -d php_dir=%{-c:%{builddir}/}%{php_pear_dir} \\\
-d bin_dir=%{_bindir} \\\
-d data_dir=%{php_pear_dir}/data \\\
-d test_dir=%{php_pear_dir}/tests \\\
--nodeps \\\
%{-f:--force} \\\
%{!-z:%{S:%{-a*}%{!-a:0}}}%{-z:$_P} > .install.log || { c=$?; cat .install.log; exit $c; }; \
+ %{-c:cp -a %{builddir}/%{builddir}/%{php_pear_dir} %{builddir}/%(dirname %{php_pear_dir}); rm -rf %{builddir}/%{builddir}; } \
%{nil}
# The main macro.
# using this macro will append optional-packages.txt to the nocompressdoc list
# as it's displayed to user after package install. and adding additional gzip
# dep is just waste ;)
-%pear_package_setup(a:n:zD) \
+%pear_package_setup(a:n:zDc:) \
%define srcdir %{-n*}%{!-n:%{_pearname}-%{version}} \
%define builddir %{_builddir}/%{srcdir} \
%setup -q -c -T %{-D:-D} -n %{srcdir} \
%{-z:tar zxf %{S:0}; %{-a:tar zxf %{S:%{-a*}}}} \
%{-z:_P=package2.xml; [ -f $_P ] || _P=package.xml; _N=%{srcdir}; mv $_P $_N; cd $_N} \
+%{-c:%{__pear} -c pearrc config-set php_dir %{builddir}/%{php_pear_dir}; %__pear -c %{builddir}/pearrc channel-add %{-c*}} \
%pear_install \
%{-z:cd ..} \
cat %{-z:$_N/}.install.log | %__pear_install_log \
[ -r "%{_kernelsrcdir}/config-$cfg" ] || exit 1 \
\
rm -rf o \
- install -d o/include/linux \
+ install -d o/include/linux o/arch/powerpc/lib \
ln -sf %{_kernelsrcdir}/config-$cfg o/.config \
ln -sf %{_kernelsrcdir}/Module.symvers-$cfg o/Module.symvers \
ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h o/include/linux/autoconf.h \
[ -z "$PATCH_SH" ] || echo "$PATCH_SH" | %__spec_build_shell \
set -x \
\
- %if %{with dist_kernel} \
+ %if %{with dist_kernel} || %(test -f %{_kernelsrcdir}/scripts/bin2c ; echo $?) \
%{__make} -j1 -C %{_kernelsrcdir} prepare scripts \\\
%{-p*} %{-P*} \\\
%{MakeOpts} \
%else \
install -d o/include/config \
touch o/include/config/MARKER \
+ ln -sf %{_kernelsrcdir}/include/config/auto-$cfg.conf o/include/config/auto.conf \
ln -sf %{_kernelsrcdir}/scripts o/scripts \
%endif \
\