%__cmake /usr/bin/cmake
%_smp_mflags %(_NCPUS=$(/usr/bin/getconf _NPROCESSORS_ONLN); \\\
- [ "$_NCPUS" -gt 1 ] && echo "-j$(($_NCPUS * 2))")
+ [ "$_NCPUS" -gt 2 ] && echo "-j$(($_NCPUS / 2))")
%__gettextize { \
if grep -qs 'AM_GNU_GETTEXT.*external' configure.{ac,in} ; then \
#%no_install_post_compress_docs 1
%__spec_install_post_compress_docs { \
%{!?no_install_post_compress_docs:__spec_install_post_compress_docs() { \
+ %{!?debug:set +x;} \
for i in /usr/share/man /usr/X11R6/man; do \
if [ -d "$RPM_BUILD_ROOT$i" ]; then \
echo "Compress man pages: $i"; \
find "$RPM_BUILD_ROOT$i" -name '*.bz2' -print | xargs -r %{__bzip2} -df; \
find "$RPM_BUILD_ROOT$i" -name '*.gz' -print | xargs -r %{__gzip} -dnf; \
find $RPM_BUILD_ROOT$i -type l | while read a; do \
- m=$(readlink $a); \
+ m=$(readlink "$a"); \
+ if [[ "$m" = */* ]]; then \
+ # handle links to different man section \
+ l=$(readlink -f "$a"); \
+ # full/relative paths that resolve symlink \
+ l=${l#$RPM_BUILD_ROOT/usr/share/man/}; \
+ l=${l#$RPM_BUILD_ROOT/usr/X11R6/man/}; \
+ # full paths that do not resolve symlink \
+ l=${l#/usr/share/man/}; \
+ l=${l#/usr/X11R6/man/}; \
+ else \
+ l=$m; \
+ fi; \
rm -f $a; \
- echo .so ${m##*/} > $a; \
- echo >&2 "Converted ${a#$RPM_BUILD_ROOT} from symlink to man link: ${m##*/}"; \
+ echo ".so $l" > $a; \
+ echo >&2 "Converted ${a#$RPM_BUILD_ROOT} from symlink to man link: $l"; \
done; \
find "$RPM_BUILD_ROOT$i" -type f -size +%{_min_compress_bytes}c -print | xargs -r %{__gzip} -9nf; \
fi; \
#
%__spec_install_post_strip {%{!?debug: \
%{!?no_install_post_strip:__spec_install_post_strip() { \
+%{!?debug:set +x;} \
if [ -d "$RPM_BUILD_ROOT" ]; then \
if [ -d $RPM_BUILD_ROOT/lib/modules ]; then \
modulelist=$(find $RPM_BUILD_ROOT/lib/modules -name '*o' -type f -print); \
modulecount=$(echo "$modulelist" | wc -l); \
printf "Stripping %d kernel modules..." $modulecount; \
echo "$modulelist" | xargs -l512 chmod u+w; \
- echo "$modulelist" | xargs -l512 %{__strip} --strip-unneeded --remove-section=.comment --remove-section=.note.GNU-stack; \
+ echo "$modulelist" | xargs -l512 %{__strip} -g --remove-section=.comment --remove-section=.note.GNU-stack; \
echo "DONE"; \
fi; \
fi; \
#
%__spec_install_post_chrpath {%{!?debug: \
%{!?no_install_post_chrpath: __spec_install_post_chrpath() { \
+%{!?debug:set +x;} \
if [ -d "$RPM_BUILD_ROOT" ]; then \
files=`find $RPM_BUILD_ROOT -type f ! -regex ".*ld-[0-9.]*so.*" ! -regex ".*/usr/lib[0-9]*/debug/.*" ! -regex ".*/lib/modules/.*" ! -regex ".*%{_docdir}/.*" ! -regex ".*%{_includedir}/.*" %{?_noautochrpath:! -regex "%{_noautochrpath}"}`; \
if [ -n "$files" ]; then \
#
%__spec_install_post_check_so { \
__spec_install_post_check_so() { \
+%{!?debug:set +x;} \
fail=0; \
printf "Searching for shared objects with unresolved symbols..."; \
for f in $(find $RPM_BUILD_ROOT -type f -name '*.so.*' -print); do \
%{!?no_install_post_check_so:return $fail;} \
}; __spec_install_post_check_so }}
+#-----------------------------------------------------------------
+# Verify that for each directory under /var/run package contains
+# tmpfiles.d configuration. Warn and terminate build if config is
+# missing.
+#
+#%no_install_post_check_tmpfiles 1
+#
+%__spec_install_post_check_tmpfiles { \
+__spec_install_post_check_tmpfiles() { \
+%{!?debug:set +x;} \
+ fail=0; \
+ echo "Checking /var/run <-> tmpfiles.d completeness..."; \
+ for d in $RPM_BUILD_ROOT/var/run/*; do \
+ [ -d "$d" ] || continue; \
+ d=${d##$RPM_BUILD_ROOT}; \
+ if ! grep -qsF "$d" $RPM_BUILD_ROOT/usr/lib/tmpfiles.d/*.conf $RPM_BUILD_ROOT/etc/tmpfiles.d/*.conf; then\
+ echo "No tmpfiles configuration for '$d'";\
+ fail=1 ; \
+ fi \
+ done ; \
+ echo " DONE"; \
+ %{!?no_install_post_check_tmpfiles:return $fail;} \
+}; __spec_install_post_check_tmpfiles }}
+
#-----------------------------------------------------------------
# Find and gzip all kernel modules
#
#%no_install_post_compress_modules 1
%__spec_install_post_compress_modules { \
%{!?no_install_post_compress_modules: __spec_install_post_compress_modules() { \
+%{!?debug:set +x;} \
if [ -d $RPM_BUILD_ROOT/lib/modules ]; then \
q=$(find $RPM_BUILD_ROOT/lib/modules -name '*o' -type f -print); \
if [ "$q" ]; then \
# directories
%py3_prefix %{expand:%%global py3_prefix %(%{__python3} -c "import sys; print(sys.prefix)" 2>/dev/null || echo ERROR)}%py3_prefix
-%py3_libdir %{py3_prefix}/%{_lib}/python%{py3_ver}
+%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_incdir /usr/include/python%{py3_ver}
-%py3_sitedir %{py3_libdir}/site-packages
-%py3_sitescriptdir %{py3_scriptdir}/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'):])"
+# node.js libdir
+# Requirements:
+# BuildRequires: rpmbuild(macros) >= 1.634
+%nodejs_libdir /usr/lib/node_modules
# Hardlink binary identical .pyc and .pyo files
%__spec_install_post_py_hardlink {\
%{!?no_install_post_py_hardlink: __spec_install_post_py_hardlink() { \
+%{!?debug:set +x;} \
local a b c=0 t=0; \
if [ -d "$RPM_BUILD_ROOT" ]; then \
find "$RPM_BUILD_ROOT" -name '*.pyc' > __rpm_pyc; \
# Requires: rc-scripts
# -n option:
# BuildRequires: rpmbuild(macros) >= 1.450
-%service(qn) {{%(export noop=%{-n:1} quiet=%{-q:1}; /usr/lib/rpm/service_generator.sh %{*}) };}
-
+%service(qn) {{%(export noop=%{-n:1} quiet=%{-q:1} RPM_BUILD_ROOT=%{buildroot}; /usr/lib/rpm/service_generator.sh %{*}) };}
# Java macros. based on jpackage macros.java
#
%endif \
\
%{!?-c:%{__make} -C %{_kernelsrcdir} clean \\\
- RCS_FIND_IGNORE="-name '*.ko' -o" \\\
+ RCS_FIND_IGNORE="-name '*.[ks]o' -o" \\\
${1+"$@"} \\\
M=$PWD %{MakeOpts}} \
\
%{__make} -C %{_kernelsrcdir} modules \\\
${1+"$@"} \\\
- M=$PWD %{MakeOpts} \
+ M=$PWD CONSTIFY_PLUGIN="" %{MakeOpts} \
\
for MODULE in {%{-m*},}; do \
[ -z "${MODULE}" ] || mv ${MODULE}{,-$cfg}.ko \
%define ModprobeD $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver} \
\
__install_kernel_modules() { \
+%{!?debug:set +x;} \
local cfgs='%{?with_dist_kernel:%{?with_smp: smp}%{?with_up: up}}%{!?with_dist_kernel: nondist}' \
\
for MODULE in {%{-m*},}; do \
) \
%{nil}
+# return EXPANDED source url N from current spec
+%sourceurl(n:) %(test "$IN_RPM" = 1 && exit 1; export IN_RPM=1; rpmbuild --nodigest --nosignature --nobuild -D "prep %%dump" %{_specdir}/%{name}.spec 2>&1 | awk '$2 ~ /^SOURCEURL%{-n*}/ {print $3}')
+
# browser plugins v2
# Author: Elan Ruusamäe <glen@pld-linux.org>
#
%py_lint() \
__py_lint() { \
+%{!?debug:set +x;} \
find "$@" -type f -name '*.py' | python -c ' \
import sys \
import compiler \
# %cacti_import_template %{resourcedir}/cacti_host_template_varnish.xml
#
# Requires: cacti >= 0.8.7e-8
-# BuildRequires: rpmbuild(macros) >= 1.554
+# BuildRequires: rpmbuild(macros) >= 1.630
+# Note: 1.1 (cacti-0.8.7h) adds requirement for --with-template-rras or --with-user-rras option
%cacti_import_template() {\
-/usr/share/cacti/cli/import_template.php --filename=%1 || :; \
+v=$(%{__sed} -rne 's/.+Add Graphs Script ([0-9\.]+).+/\1/p' /usr/share/cacti/cli/import_template.php); \
+if [ "$v" != "1.0" ]; then \
+ rra="--with-template-rras"; \
+fi; \
+/usr/share/cacti/cli/import_template.php --filename=%1 $rra || :; \
}%{nil}
# pre/post script for -upstart subpackages
};} \
%{nil}
+
+# pre/post script for packages supporting systemd units
+#
+# Author: Bartlomiej Zimon <uzi18@o2.pl>
+#
+# Usage:
+# %systemd_reload
+# %systemd_post service_name1.service service_name2.service
+# %systemd_preun service_name1.service service_name2.service
+# %systend_trigger service_name1.service service_name2.service
+#
+# Sample:
+# %post
+# %systemd_post %{name}.service
+#
+# %preun
+# %systemd_preun %{name}.service
+#
+# %postun
+# %systemd_reload
+#
+# %triggerpostun -- %{name} < first-version-with-systemd-units
+# %systemd_trigger %{name}.service
+#
+# Requirements:
+# BuildRequires: rpmbuild(macros) >= 1.627
+# Requires: systemd-units >= 37-0.10
+
+%systemd_reload /bin/systemd_booted && SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog /bin/systemctl --quiet daemon-reload || :
+
+%systemd_trigger() \
+want_enable_service() { \
+ [ -f /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm \
+ [ ${RPM_ENABLE_SYSTEMD_SERVICE:-yes} = no ] && return 1 \
+ /sbin/chkconfig --list ${1%.service} 2>/dev/null | grep -qsv "[0-6]:on" && return 1 \
+ return 0 \
+}\
+ export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \
+ for s in %{*}; do \
+ if want_enable_service $s; then \
+ /bin/systemctl --quiet enable $s || : \
+ fi \
+ done \
+%{nil}
+
+%systemd_post() \
+ export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \
+ /bin/systemd_booted && /bin/systemctl --quiet daemon-reload || : \
+ if [ $1 -eq 1 ]; then \
+ /bin/systemctl --quiet enable %{*} || : \
+ fi \
+ if [ $1 -gt 1 ] && [ -z "$NORESTART" ]; then \
+ /bin/systemctl --quiet try-restart %{*} || : \
+ fi \
+%{nil}
+
+%systemd_preun() \
+ if [ $1 -eq 0 ]; then \
+ export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog; \
+ /bin/systemctl --no-reload --quiet disable %{*} || : \
+ if /bin/systemd_booted; then \
+ /bin/systemctl --quiet stop %{*} || : \
+ fi \
+ fi \
+%{nil}
+
+%systemdunitdir /lib/systemd/system
+
# EOF