]> git.pld-linux.org Git - packages/rpm.git/blobdiff - rpm.macros
- minor spelling
[packages/rpm.git] / rpm.macros
index 86530e30cfb2a38fb1e30cb4d787f521361ca740..a6fe92876782338015b9eee2090b6505b9a02767 100644 (file)
@@ -1,5 +1,5 @@
 # $Revision$, $Date$
-# PLD rpm macros
+# PLD Linux rpm macros
 
 %epoch         0
 %x8664         x86_64 amd64 ia32e
@@ -8,9 +8,6 @@
 %kgcc          %{__cc}
 %kgcc_package  gcc
 
-%_source_payload       w9.gzdio
-%_binary_payload       w9.lzdio
-
 # Build system path macros.
 #
 %__autoconf            autoconf %{?debug:-Wall}
@@ -34,6 +31,7 @@ fi; \
 
 %__glib_gettextize     glib-gettextize --copy --force
 %__gnome_doc_common    gnome-doc-common --copy
+%__gnome_doc_prepare   gnome-doc-prepare --copy --force
 %__gtkdocize           gtkdocize --copy
 %__intltoolize         intltoolize --copy --force
 %__libtoolize          libtoolize --copy --force
@@ -53,6 +51,46 @@ fi; \
 #      and that both p and q are package names (i.e. no version/release).
 %_dependency_whiteout  %{nil}
 
+
+#-----------------------------------------------------------------
+#
+# (re)definition of %{rpm*flags} with %filterout_* support
+# Requires:            awk
+#
+# Flags specified in %filterout_* are removed from %rpm*flags, exactly:
+# %rpmcflags    = %optflags - %filterout - %filterout_c   - %filterout_ld
+# %rpmcxxflags  = %optflags - %filterout - %filterout_cxx - %filterout_ld
+# %rpmldflags   = %optldflags - %filterout_ld
+#
+# Regular expressions are supported, but to avoid some character be treated
+# as regular expression it must be escaped twice.
+
+%filter_out                                            \
+       for (i in I) {  A=0;                    \
+               for (f in F) {                          \
+                       if (I[i] ~ "^" F[f] "$") A=1;   \
+               };                                                      \
+               if (!A) printf(I[i] FS);        \
+       }
+
+%rpmcflags %(awk 'BEGIN {
+       split("%{?debug:%debugcflags}%{!?debug:%optflags}%{?debuginfocflags}",I);
+       split("%{?filterout} %{?filterout_c} %{?filterout_ld}",F);
+       %{filter_out}
+}')
+
+%rpmcxxflags %(awk 'BEGIN {
+       split("%{?debug:%debugcflags}%{!?debug:%optflags}%{?debuginfocflags}",I);
+       split("%{?filterout} %{?filterout_cxx} %{?filterout_ld}",F);
+       %{filter_out}
+}')
+
+%rpmldflags %(awk 'BEGIN {
+       split("%{?optldflags}",I);
+       split("%{?filterout_ld}",F)
+       %{filter_out}
+}')
+
 #-----------------------------------------------------------------
 %configure2_13 { \
  if [ -n "$LINGUAS" ]; then unset LINGUAS; fi; \
@@ -191,10 +229,10 @@ unset LINGUAS ||:\
 %_examplesdir  /usr/src/examples
 
 # Alternative kernel type/version
-%alt_kernel    %{nil}%{?_alt_kernel:-%{?_alt_kernel}}
+%_alt_kernel   %{nil}%{?alt_kernel:-%{?alt_kernel}}
 
 # The directory holding Linux kernel sources
-%_kernelsrcdir /usr/src/linux%{alt_kernel}
+%_kernelsrcdir /usr/src/linux%{_alt_kernel}
 
 # If non-empty "debug" macro defined, add "dbg" suffix to release number
 %_rpmfilename          %%{NAME}-%%{VERSION}-%%{RELEASE}%{?debug:dbg}.%%{ARCH}.rpm
@@ -205,7 +243,7 @@ unset LINGUAS ||:\
 %releq_kernel_up()             %((LC_ALL="C" rpm -qf --qf '%%{name}-up = %%{epoch}:%%{version}-%%{release}\\n' %{_kernelsrcdir}/include/linux/version.h 2>/dev/null || echo ERROR) | sed -e 's/ (none):/ /' | sed -e 's:-headers::' | grep -vE "(is not|no such)")
 %releq_kernel_smp()            %((LC_ALL="C" rpm -qf --qf '%%{name}-smp = %%{epoch}:%%{version}-%%{release}\\n' %{_kernelsrcdir}/include/linux/version.h 2>/dev/null || echo ERROR) | sed -e 's/ (none):/ /' | sed -e 's:-headers::' | grep -vE "(is not|no such)")
 %requires_releq_kernel_up(s:)  Requires%{-s:(%{-s*})}: %releq_kernel_up
-%requires_releq_kernel_smp(s:)         Requires%{-s:(%{-s*})}: %releq_kernel_smp
+%requires_releq_kernel_smp(s:) Requires%{-s:(%{-s*})}: %releq_kernel_smp
 
 %requires_eq()         %(echo '%*' | LC_ALL="C" xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
 %requires_eq_to() %(LC_ALL="C" rpm -q --qf 'Requires: %1 = %%{epoch}:%%{version}\\n' %2 | sed -e 's/ (none):/ /' | grep -v "is not")
@@ -213,7 +251,7 @@ unset LINGUAS ||:\
 %apache_modules_api %(awk '/#define MODULE_MAGIC_NUMBER_MAJOR/ {print $3}' /usr/include/apache/ap_mmn.h 2>/dev/null || echo ERROR)
 
 # kernel version-release handling
-%__kernel_ver  %([ -f %{_kernelsrcdir}/include/linux/version.h ] && (grep UTS_RELEASE %{_kernelsrcdir}/include/linux/version.h 2>/dev/null | head -n 1 | cut -d'"' -f2) || (awk '/^VERSION/ { ver = $0; gsub(/VERSION.*=/, NIL, ver); } /^PATCHLEVEL/ { plev = $0; gsub(/PATCHLEVEL.*=/, NIL, plev); } /^SUBLEVEL/ { slev = $0; gsub(/SUBLEVEL.*=/, NIL, slev); } /^EXTRAVERSION/ { ever = $0; gsub(/EXTRAVERSION.*=/, NIL, ever); gsub(/ /, NIL, ever); } END { printf("%d.%d.%d%s", ver, plev, slev, ever); }' %{_kernelsrcdir}/Makefile 2> /dev/null))
+%__kernel_ver  %( VER_H=%{_kernelsrcdir}/include/linux/utsrelease.h; [ -f $VER_H ] || VER_H=%{_kernelsrcdir}/include/linux/version.h; [ -f $VER_H ] && (grep UTS_RELEASE $VER_H 2>/dev/null | head -n 1 | cut -d'"' -f2) || (awk '/^VERSION/ { ver = $0; gsub(/VERSION.*=/, NIL, ver); } /^PATCHLEVEL/ { plev = $0; gsub(/PATCHLEVEL.*=/, NIL, plev); } /^SUBLEVEL/ { slev = $0; gsub(/SUBLEVEL.*=/, NIL, slev); } /^EXTRAVERSION/ { ever = $0; gsub(/EXTRAVERSION.*=/, NIL, ever); gsub(/ /, NIL, ever); } END { printf("%d.%d.%d%s", ver, plev, slev, ever); }' %{_kernelsrcdir}/Makefile 2> /dev/null))
 %__kernel_rel  %(LC_ALL="C" rpm -qf %{_kernelsrcdir}/include/linux/fs.h 2>/dev/null --qf "%{RELEASE}" | grep -v "is not")
 %__kernel_rpmvr        %(LC_ALL="C" rpm -qf %{_kernelsrcdir}/include/linux/fs.h 2>/dev/null --qf "%{VERSION}-%{RELEASE}" | grep -v "is not")
 %_kernel_ver   %{__kernel_ver}%{?with_dist_kernel:%(echo %{__kernel_ver} | grep -q -e - || echo -%{__kernel_rel})}
@@ -237,6 +275,14 @@ unset LINGUAS ||:\
 ; do echo $l; done >> %1 \
 }
 
+# minimum file size needed for compressed documents.
+# just smaller files than this get larger when compressed.
+# some stats:
+# - 0 byte file compressed was 25 bytes .gz
+# - 39 byte file was compressed as 57
+# - with test/test.spec@man 158 byte file was compressed also 158
+%_min_compress_bytes   159
+
 #-----------------------------------------------------------------
 # find and gzip all files in %{_mandir} and %{infodir}
 #
@@ -248,9 +294,9 @@ unset LINGUAS ||:\
        echo "Compress man and info pages."; \
        for i in /usr/share/man /usr/X11R6/man /usr/share/info; do \
                if [ -d "$RPM_BUILD_ROOT$i" ]; then \
-                       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 f -print | xargs -r %{__gzip} -9nf; \
+                       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 f -size +%{_min_compress_bytes}c -print | xargs -r %{__gzip} -9nf; \
                fi; \
        done; \
 }; __spec_install_post_compress_docs } }
@@ -273,12 +319,15 @@ unset LINGUAS ||:\
        elfarchiveslist=`echo $filelist | xargs -r file | \
                awk '/current ar archive/ {print $1}' | cut -d: -f1`; \
        if [ -n "$elfexelist" ]; then \
+               chmod u+w $elfexelist; \
                %{__strip} --remove-section=.note --remove-section=.comment $elfexelist; \
        fi; \
        if [ -n "$elfsharedlist" ]; then \
+               chmod u+w $elfsharedlist; \
                %{__strip} --strip-unneeded --remove-section=.note --remove-section=.comment $elfsharedlist; \
        fi; \
        if [ -n "$elfarchiveslist" ]; then \
+               chmod u+w $elfarchiveslist; \
                %{__strip} --strip-debug --remove-section=.note --remove-section=.comment $elfarchiveslist; \
        fi; \
 fi; }; __spec_install_post_strip } } }
@@ -363,16 +412,34 @@ fi \
 #
 %update_desktop_database_post() {{ \
        umask 022; \
-       /usr/bin/update-desktop-database; \
+       /usr/bin/update-desktop-database -q; \
 }}
 
 %update_desktop_database_postun() {{ \
 if [ $1 = 0 ]; then \
        umask 022; \
-       /usr/bin/update-desktop-database; \
+       /usr/bin/update-desktop-database -q; \
 fi \
 }}
 
+#-----------------------------------------------------------------
+# Update shared MIME info database
+# requires: shared-mime-info
+#
+%update_mime_database() {{ \
+       umask 022; \
+       /usr/bin/update-mime-database %{_datadir}/mime; \
+}}
+
+#-----------------------------------------------------------------
+# Update icon cache
+# requires: gtk+
+#
+%update_icon_cache() {{ \
+       umask 022; \
+       /usr/bin/gtk-update-icon-cache -qf %{_datadir}/icons/%1; \
+}}
+
 #-----------------------------------------------------------------
 # Update scrollkeeper database
 # requires: scrollkeeper
@@ -429,7 +496,7 @@ fi \
 
 # Ruby
 %ruby_archdir          %(ruby -r rbconfig -e 'print Config::CONFIG["archdir"]' 2>/dev/null || echo ERROR)
-%ruby_ridir            %(ruby -r rbconfig -e 'include Config; print File.join(CONFIG["datadir"], "ri", CONFIG["ruby_version"], "system")' 2>/dev/null || echo ERROR)
+%ruby_ridir                    %(ruby -r rbconfig -e 'include Config; print File.join(CONFIG["datadir"], "ri", CONFIG["ruby_version"], "system")' 2>/dev/null || echo ERROR)
 %ruby_rubylibdir       %(ruby -r rbconfig -e 'print Config::CONFIG["rubylibdir"]' 2>/dev/null || echo ERROR)
 %ruby_sitearchdir      %(ruby -r rbconfig -e 'print Config::CONFIG["sitearchdir"]' 2>/dev/null || echo ERROR)
 %ruby_sitelibdir       %(ruby -r rbconfig -e 'print Config::CONFIG["sitelibdir"]' 2>/dev/null || echo ERROR)
@@ -437,7 +504,7 @@ fi \
 %ruby_ver_requires_eq  Requires:       ruby(ver) = %ruby_version
 %ruby_mod_ver_requires_eq      Requires:       ruby-modules(ver) = %ruby_version
 
-%php_pear_dir  %{_datadir}/pear
+%php_pear_dir          /usr/share/pear
 
 # directory where php includes are installed on system.
 %__php_includedir              /usr/include/php
@@ -456,6 +523,7 @@ fi \
 # macros for public use
 # for php extensions (php-pecl)
 %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}
 
@@ -470,14 +538,14 @@ fi \
 
 # Python specific macro definitions.
 # python main version
-%py_ver                %(python -c "import sys; print sys.version[:3]")
+%py_ver                        %(python -c "import sys; print sys.version[:3]")
 
 # directories
 %py_prefix             %(python -c "import sys; print sys.prefix")
 %py_libdir             %{py_prefix}/%{_lib}/python%{py_ver}
 %py_scriptdir  %{py_prefix}/share/python%{py_ver}
 %py_incdir             /usr/include/python%{py_ver}
-%py_sitedir    %{py_libdir}/site-packages
+%py_sitedir            %{py_libdir}/site-packages
 %py_sitescriptdir %{py_scriptdir}/site-packages
 %py_dyndir             %{py_libdir}/lib-dynload
 
@@ -626,7 +694,7 @@ else \
                %{-M} \\\
                %{-G:-G %{-G*}} \\\
                %{expand:%{%{#}}} 1>&2 || exit $? \
-       [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i passwd \
+       [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i passwd || : \
 fi;
 
 # Usage:
@@ -648,7 +716,7 @@ if [ -n "`/usr/bin/getgid %{1}`" ]; then \
 else \
        echo "Adding group %{1} GID=%{-g*}." \
        /usr/sbin/groupadd -g %{-g*} -r %{1} 1>&2 || exit $? \
-       [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i group \
+       [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i group || : \
 fi;
 
 # apache_config_{install/uninstall} macros written by glen@pld-linux.org.
@@ -739,7 +807,7 @@ if [ "$1" = "1" ] && [ "$2" = "1" ]; then\
        /usr/sbin/webapp register %1 %2\
 fi\
 # reload webserver if the config symlink is there and skip reload if webserver is upgraded\
-if [ -L /etc/%1/webapps.d/%2.conf ] && [ "$2" -lt "2" ]; then\
+if [ -L /etc/%1/webapps.d/%(echo "%2" | tr '/' '-').conf ] && [ "$2" -lt "2" ]; then\
        %{expand:%service -q %%1 reload}\
 fi\
 %{nil}
@@ -750,7 +818,7 @@ fi\
 %webapp_unregister(f) \
 %{?debug:set -x; echo "webapp_unregister: %{name}-%{version}-%{release}: 1:[$1]; 2:[$2]"} \
 # remove link if either of the packages are gone \
-if [ -n "%{-f:1}" ] || [ "$1" = "0" ] || [ "$2" = "0" ] && [ -L /etc/%1/webapps.d/%2.conf ]; then \
+if [ -n "%{-f:1}" ] || [ "$1" = "0" ] || [ "$2" = "0" ] && [ -L /etc/%1/webapps.d/%(echo "%2" | tr '/' '-').conf ]; then \
        /usr/sbin/webapp unregister %1 %2\
        %{expand:%service -q %%1 reload}\
 fi \
@@ -810,9 +878,7 @@ if [ "$1" = "0" ] || [ "$2" = "0" ]; then \
 %_jvmcommonlibdir      %{_libdir}/jvm-common
 %_jvmcommondatadir     %{_datadir}/jvm-common
 %_jvmcommonsysconfdir  %{_sysconfdir}/jvm-common
-%_javadir              %{_datadir}/java
 %_jnidir               %{_libdir}/java
-%_javadocdir           %{_datadir}/javadoc
 %java_home             %(unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm; echo $JAVA_HOME)
 
 %ant                   JAVA_HOME=%{java_home} ant
@@ -879,7 +945,7 @@ EOF
 # line endings.
 #
 # the pear install process output is recorded to install.log, you should put it
-# to %%doc for latter debug or just information.
+# to %%doc for later debug or just for information.
 #
 # additionally additional-packages.txt is produced if it was detected that the
 # package has optional dependencies. the file format is suitable of displaying
@@ -932,4 +998,52 @@ if [ -f _noautoreq ]; then \
 fi \
 %{nil}
 
-# vim:ts=8 sw=8 noet
+
+# Register OpenLDAP schema.
+# Author: Elan Ruusamäe <glen@pld-linux.org>
+#
+# Usage:
+#   %%openldap_schema_register [-d core,nis] %{schemadir}/horde.schema
+#
+#  -d specify dependant schemas, separated by comma
+#
+%openldap_schema_register(d:) \
+for schema in %*; do \
+       if ! grep -q "$schema" /etc/openldap/slapd.conf; then \
+               %{__sed} -i -e " \
+                       /^include.*local.schema/{ \
+                               iinclude\\t     $schema\
+                       } \
+               " /etc/openldap/slapd.conf \
+       fi \
+done \
+# enable dependant schemas \
+if [ "%{-d*}" ]; then \
+       %{__sed} -i -e ' \
+       /^#include.*\\(%(echo '%{-d*}' | %{__sed} -e 's/,/\\\\|/g')\\)\\.schema/{ \
+               s/^#// \
+       }' /etc/openldap/slapd.conf \
+fi \
+%{nil}
+
+# Unregister OpenLDAP schema.
+# Author: Elan Ruusamäe <glen@pld-linux.org>
+#
+# Usage:
+#   %%openldap_schema_unregister %{schemadir}/horde.schema
+#
+%openldap_schema_unregister() \
+for schema in %*; do \
+       if grep -q "$schema" /etc/openldap/slapd.conf; then \
+               %{__sed} -i -e " \
+               /^include.*$(echo "$schema" | %{__sed} -e 's,/,\\\\/,g')/d \
+               # for symmetry it would be nice if we disable enabled schemas in post, \
+               # but we really can not do that, it would break something else. \
+               " /etc/openldap/slapd.conf \
+       fi \
+done \
+%{nil}
+
+%env_update [ ! -x /sbin/env-update ] || /sbin/env-update -u || :
+
+# vim:ts=4 sw=4 noet
This page took 0.066169 seconds and 4 git commands to generate.