diff options
Diffstat (limited to 'macros.in')
-rw-r--r-- | macros.in | 473 |
1 files changed, 310 insertions, 163 deletions
@@ -6,15 +6,6 @@ # should be added to /etc/rpm/macros, while per-user configuration should # be added to ~/.rpmmacros. # -#============================================================================== -# Macro naming conventions (preliminary): -# -# Macros that begin with an underscore are "local" in the sense that -# they (if used) will not be exported in rpm headers. Some macros -# that don't start with an underscore (but look like they should) -# are compatible with macros generated by rpm-2.5.x and will be made -# more consistent in a future release. -# #============================================================================== # ---- A macro that expands to nothing. @@ -68,6 +59,8 @@ %__ssh @__SSH@ %__tar @__TAR@ %__unzip @__UNZIP@ +%__zstd @__ZSTD@ +%__gem @__GEM@ %__git @__GIT@ %__hg @__HG@ %__bzr @__BZR@ @@ -131,7 +124,7 @@ # %if ! %{with static} # ... # %endif -# %ifdef %{with static} +# %if %{with static} # ... # %endif # %{?with_static: ... } @@ -154,6 +147,8 @@ # # The directory where rpm's configuration and scripts live %_rpmconfigdir %{getconfdir} +# The directory where rpm's macro files live +%_rpmmacrodir %{_rpmconfigdir}/macros.d # The directory where sources/patches will be unpacked and built. %_builddir %{_topdir}/BUILD @@ -179,13 +174,45 @@ # A spec file can %%define _find_debuginfo_opts to pass options to # the script. See the script for details. # + +%_find_debuginfo_opts %{?_rpm_strip_disable:--strip-disable} +%_find_debuginfo_strip_opts %{?_rpm_strip_option:\'--strip-option=%{_rpm_strip_option}\'} +%_find_debuginfo_ko_strip_opts %{?_rpm_ko_strip_option:\'--strip-ko-option=%{_rpm_ko_strip_option}\'} + %__debug_install_post \ - %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\ + %{_rpmconfigdir}/find-debuginfo.sh \\\ + %{?_smp_mflags} \\\ + %{?_missing_build_ids_terminate_build:--strict-build-id} \\\ + %{?_no_recompute_build_ids:-n} \\\ + %{?_include_minidebuginfo:-m} \\\ + %{?_include_gdb_index:-i} \\\ + %{?_unique_build_ids:--build-id-seed "%{VERSION}-%{RELEASE}"} \\\ + %{?_unique_debug_names:--unique-debug-suffix "-%{VERSION}-%{RELEASE}.%{_arch}"} \\\ + %{?_unique_debug_srcs:--unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}"} \\\ + %{?_find_debuginfo_dwz_opts} \\\ + %{?_find_debuginfo_opts} \\\ + %{?_find_debuginfo_strip_opts} \\\ + %{?_find_debuginfo_ko_strip_opts} \\\ + %{?_debugsource_packages:-S debugsourcefiles.list} \\\ + "%{_builddir}/%{?buildsubdir}"\\\ + %{?_install_debug_manifest} \ %{nil} # Template for debug information sub-package. -%debug_package \ -%global __debug_package 1\ +%_debuginfo_template \ +%package debuginfo\ +Summary: Debug information for package %{name}\ +Group: Development/Debug\ +AutoReq: 0\ +AutoProv: 1\ +%description debuginfo\ +This package provides debug information for package %{name}.\ +Debug information is useful when developing applications that use this\ +package or when debugging this package.\ +%files debuginfo -f debugfiles.list\ +%{nil} + +%_debugsource_template \ %package debugsource\ Summary: Debug sources for package %{name}\ Group: Development/Debug\ @@ -194,13 +221,29 @@ AutoReqProv: 0\ This package provides debug sources for package %{name}.\ Debug sources are useful when developing applications that use this\ package or when debugging this package.\ -%files debugsource -f debugsources.list\ +%files debugsource -f debugsourcefiles.list\ %defattr(-,root,root)\ +%manifest %{name}-debugsource.manifest \ +%{nil} + +%debug_package \ +%ifnarch noarch\ +%global __debug_package 1\ +%_debuginfo_template\ +%{?_debugsource_packages:%_debugsource_template}\ +%endif\ %{nil} %_defaultdocdir %{_datadir}/doc/packages +%_docdir_fmt %%{NAME} %_defaultlicensedir %{_datadir}/licenses -%_docdir_fmt %%{NAME} + +# Following macros for filtering auto deps must not be used in spec files. +# Their purpouse is to set up global filtering for all packages. If you need +# to set up specific filtering for your package use %__requires_exclude_from +# and %__provides_exclude_from instead. +%__global_requires_exclude_from %{?_docdir:%{_docdir}} +%__global_provides_exclude_from %{?_docdir:%{_docdir}} # The path to the gzip executable (legacy, use %{__gzip} instead). %_gzipbin %{__gzip} @@ -209,6 +252,15 @@ package or when debugging this package.\ # Any older entry is not packaged in binary packages. %_changelog_trimtime 0 +# If true, set the SOURCE_DATE_EPOCH environment variable +# to the timestamp of the topmost changelog entry +%source_date_epoch_from_changelog 0 + +# If true, make sure that timestamps in built rpms +# are not later than the value of SOURCE_DATE_EPOCH. +# Is ignored when SOURCE_DATE_EPOCH is not set. +%clamp_mtime_to_source_date_epoch 0 + # The directory where newly built binary packages will be written. %_rpmdir %{_topdir}/RPMS @@ -231,7 +283,7 @@ package or when debugging this package.\ %_buildrootdir %{_topdir}/BUILDROOT # Build root path, where %install installs the package during build. -%buildroot %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch} +%buildroot %{_buildrootdir}/%{NAME}-%{VERSION}-%{RELEASE}.%{_arch} # Directory where temporaray files can be created. %_tmppath %{_var}/tmp @@ -275,6 +327,16 @@ package or when debugging this package.\ # #%bugurl +# Configurable distribution tag, same as Disttag: tag in a specfile. +# The tag will be used to supply reliable information to tools like +# rpmfind. +# +# Note: You should not configure with disturl (or build packages with +# the Disttag: tag) unless you are willing to supply content in a +# yet-to-be-determined format at the tag specified. +# +#%disttag + # Boolean (i.e. 1 == "yes", 0 == "no") that controls whether files # marked as %doc should be installed. #%_excludedocs @@ -337,25 +399,29 @@ package or when debugging this package.\ # Compression type and level for source/binary package payloads. # "w9.gzdio" gzip level 9 (default). # "w9.bzdio" bzip2 level 9. -# "w7.xzdio" xz level 7, xz's default. -# "w7.lzdio" lzma-alone level 7, lzma's default +# "w6.xzdio" xz level 6, xz's default. +# "w7T16.xzdio" xz level 7 using 16 thread (xz only) +# "w6.lzdio" lzma-alone level 6, lzma's default +# "w3.zstdio" zstd level 3, zstd's default +# "w.ufdio" uncompressed # #%_source_payload w9.gzdio -%_binary_payload w5.lzdio +#%_binary_payload w9.gzdio +%_binary_payload w19.zstdio # Algorithm to use for generating file checksum digests on build. # If not specified or 0, MD5 is used. -# WARNING: non-MD5 is backwards incompatible, don't enable lightly! -# The supported algorithms may depend on NSS version, as of NSS -# 3.11.99.5 the following are supported: -# 1 MD5 (default) +# WARNING: non-MD5 is backwards incompatible with rpm < 4.6! +# The supported algorithms may depend on the underlying crypto +# implementation but generally at least the following are supported: +# 1 MD5 # 2 SHA1 -# 8 SHA256 +# 8 SHA256 (default) # 9 SHA384 # 10 SHA512 # -#%_source_filedigest_algorithm 1 -#%_binary_filedigest_algorithm 1 +%_source_filedigest_algorithm 8 +%_binary_filedigest_algorithm 8 # Configurable vendor information, same as Vendor: in a specfile. # @@ -366,6 +432,7 @@ package or when debugging this package.\ # Default patch flags #%_default_patch_flags -s +%_default_patch_flags --no-backup-if-mismatch #============================================================================== # ---- Build configuration macros. @@ -389,9 +456,21 @@ package or when debugging this package.\ %_missing_doc_files_terminate_build 1 # +# Should empty %files manifest file terminate a build? +# +# Note: The default value should be 0 for legacy compatibility. +%_empty_manifest_terminate_build 0 + +# # Should binaries in noarch packages terminate a build? %_binaries_in_noarch_packages_terminate_build 1 +# Should invalid utf8 encoding in package metadata terminate a build? +%_invalid_encoding_terminates_build 0 + +# Should invalid version format in requires, provides, ... terminate a build? +%_wrong_version_format_terminate_build 0 + # # Should rpm try to download missing sources at build-time? # Enabling this is dangerous as long as rpm has no means to validate @@ -430,6 +509,78 @@ package or when debugging this package.\ #%_missing_build_ids_terminate_build 1 # +# Include minimal debug information in build binaries. +# Requires _enable_debug_packages. +# +#%_include_minidebuginfo 1 + +# +# Include a .gdb_index section in the .debug files. +# Requires _enable_debug_packages and gdb-add-index installed. +# +#%_include_gdb_index 1 + +# +# Defines how and if build_id links are generated for ELF files. +# The following settings are supported: +# +# - none +# No build_id links are generated. +# +# - alldebug +# build_id links are generated only when the __debug_package global is +# defined. This will generate build_id links in the -debuginfo package +# for both the main file as /usr/lib/debug/.build-id/xx/yyy and for +# the .debug file as /usr/lib/debug/.build-id/xx/yyy.debug. +# This is the old style build_id links as generated by the original +# find-debuginfo.sh script. +# +# - separate +# build_id links are generate for all binary packages. If this is a +# main package (the __debug_package global isn't set) then the +# build_id link is generated as /usr/lib/.build-id/xx/yyy. If this is +# a -debuginfo package (the __debug_package global is set) then the +# build_id link is generated as /usr/lib/debug/.build-id/xx/yyy. +# +# - compat +# Same as for "separate" but if the __debug_package global is set then +# the -debuginfo package will have a compatibility link for the main +# ELF /usr/lib/debug/.build-id/xx/yyy -> /usr/lib/.build-id/xx/yyy +%_build_id_links alldebug + +# Whether build-ids should be made unique between package version/releases +# when generating debuginfo packages. If set to 1 this will pass +# --build-id-seed "%{VERSION}-%{RELEASE}" to find-debuginfo.sh which will +# pass it onto debugedit --build-id-seed to be used to prime the build-id +# note hash. +%_unique_build_ids 1 + +# Do not recompute build-ids but keep whatever is in the ELF file already. +# Cannot be used together with _unique_build_ids (which forces recomputation). +# Defaults to undefined (unset). +#%_no_recompute_build_ids 1 + +# Whether .debug files should be made unique between package version, +# release and architecture. If set to 1 this will pass +# --unique-debug-suffix "-%{VERSION}-%{RELEASE}.%{_arch} find-debuginfo.sh +# to create debuginfo files which end in -<ver>-<rel>.<arch>.debug +# Requires _unique_build_ids. +#%_unique_debug_names 0 + +# Whether the /usr/debug/src/<package> directories should be unique between +# package version, release and architecture. If set to 1 this will pass +# --unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}" to +# find-debuginfo.sh to name the directory under /usr/debug/src as +# <name>-<ver>-<rel>.<arch>. +%_unique_debug_srcs 1 + +# Whether rpm should put debug source files into its own subpackage +%_debugsource_packages 1 + +# Whether rpm should create extra debuginfo packages for each subpackage +%_debuginfo_subpackages 1 + +# # Use internal dependency generator rather than external helpers? %_use_internal_dependency_generator 1 @@ -441,8 +592,8 @@ package or when debugging this package.\ %__docdir_path %{_datadir}/doc:%{_datadir}/man:%{_datadir}/info:%{_datadir}/gtk-doc/html:%{?_docdir}:%{?_mandir}:%{?_infodir}:%{?_javadocdir}:/usr/doc:/usr/man:/usr/info:/usr/X11R6/man # maxnum,cuttime,minnum -# 2009/03/01 (SLES11 GA) -%_binarychangelogtrim 0,1235862000,10 +# 2014/10/13 (SLES12 GA) +%_binarychangelogtrim 0,1413151200,10 # # Path to scripts to autogenerate package dependencies, @@ -454,11 +605,11 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); # Note: Used iff _use_internal_dependency_generator is zero. #%__find_provides %{_rpmconfigdir}/rpmdeps --provides #%__find_requires %{_rpmconfigdir}/rpmdeps --requires -%__find_provides %{__set_helper_env}%{_rpmconfigdir}/find-provides %name -%__find_requires %{__set_helper_env}%{_rpmconfigdir}/find-requires %name +%__find_provides %{_rpmconfigdir}/find-provides %name +%__find_requires %{_rpmconfigdir}/find-requires %name #%__find_conflicts ??? #%__find_obsoletes ??? -%__find_supplements %{__set_helper_env}%{_rpmconfigdir}/find-supplements %name +%__find_supplements %{_rpmconfigdir}/find-supplements %name #%__find_enhances ??? # @@ -482,8 +633,24 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); # %_fileattrsdir %{_rpmconfigdir}/fileattrs +# This macro defines how much space (in bytes) in package should be +# reserved for gpg signatures during building of a package. If this space is +# big enough for gpg signatures to fit into it then signing of the packages is +# very quick because it is not necessary to rewrite the whole package to make +# some space for gpg signatures. +%__gpg_reserved_space 4096 + #============================================================================== # ---- Database configuration macros. +# +# Select backend database. The following values are supported: +# bdb Berkeley DB +# lmdb Lightning Memory-mapped Database +# ndb new data base format +# +%_db_backend bdb + +# # Macros used to configure Berkley db parameters. # # rpmdb macro configuration values are a colon (or white space) separated @@ -532,13 +699,12 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); # Macro(s) to hold the arguments passed to GPG/PGP for package # signing and verification. # -%__gpg_check_password_cmd %{__gpg} \ - gpg --batch --no-verbose --passphrase-fd 3 -u "%{_gpg_name}" -so - %__gpg_sign_cmd %{__gpg} \ - gpg --batch --no-verbose --no-armor --passphrase-fd 3 \ + gpg --no-verbose --no-armor \ %{?_gpg_digest_algo:--digest-algo %{_gpg_digest_algo}} \ --no-secmem-warning \ + %{?_gpg_sign_cmd_extra_args:%{_gpg_sign_cmd_extra_args}} \ -u "%{_gpg_name}" -sbo %{__signature_filename} %{__plaintext_filename} # XXX rpm >= 4.1 verifies signatures internally @@ -605,6 +771,14 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); %_vsflags_rebuilddb 0xc0c00 %_vsflags_verify %{__vsflags} +# Set to 1 to minimize writing (at the cost of more reads) to +# conserve eg SSD disks. +%_minimize_writes 0 + +# Set to 1 to flush file IO during transactions (at a severe cost in +# performance for rotational disks) +#%_flush_io 0 + # # Default output format string for rpm -qa # @@ -612,6 +786,11 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); %_query_all_fmt %%{nvra} # +# Default for coloring output +# valid values are always never and auto +%_color_output never + +# # Default path to the file used for transaction fcntl lock. %_rpmlock_path %{_dbpath}/.rpm.lock @@ -644,9 +823,9 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS\ RPM_DOC_DIR=\"%{_docdir}\"\ export RPM_DOC_DIR\ - RPM_PACKAGE_NAME=\"%{name}\"\ - RPM_PACKAGE_VERSION=\"%{version}\"\ - RPM_PACKAGE_RELEASE=\"%{release}\"\ + RPM_PACKAGE_NAME=\"%{NAME}\"\ + RPM_PACKAGE_VERSION=\"%{VERSION}\"\ + RPM_PACKAGE_RELEASE=\"%{RELEASE}\"\ export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE\ LANG=C\ export LANG\ @@ -655,6 +834,8 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); export RPM_BUILD_ROOT}\ %{?_javaclasspath:CLASSPATH=\"%{_javaclasspath}\"\ export CLASSPATH}\ + PKG_CONFIG_PATH=\"${PKG_CONFIG_PATH}:%{_libdir}/pkgconfig:%{_datadir}/pkgconfig\"\ + export PKG_CONFIG_PATH\ \ %{verbose:set -x}%{!verbose:exec > /dev/null}\ umask 022\ @@ -662,7 +843,7 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); #%___build_body %{nil} -%___build_post exit 0 +%___build_post exit $? %___build_template #!%{___build_shell}\ %{___build_pre}\ @@ -675,7 +856,6 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); #============================================================================== # ---- Scriptlet templates. # Macro(s) that expand to a command and script that is executed. -# CAVEAT: All macro expansions must fit in a BUFSIZ (8192 byte) buffer. # %__spec_prep_shell %{___build_shell} %__spec_prep_args %{___build_args} @@ -814,6 +994,15 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); %_infodir %{_datadir}/info %_mandir %{_datadir}/man +%_hal_prefix /hal +%_hal_bindir %{_hal_prefix}/bin +%_hal_sbindir %{_hal_prefix}/sbin +%_hal_libdir %{_hal_prefix}/%{_lib} +%_hal_includedir %{_hal_prefix}/include +%_hal_sysconfdir %{_hal_prefix}%{_sysconfdir} +%_hal_datadir %{_hal_prefix}/share +%_hal_licensedir %{_hal_prefix}/share/licenses + #============================================================================== # ---- config.guess platform macros. # Macro(s) similar to the tokens used by configure. @@ -843,9 +1032,6 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); # directory structure (--prefix, --libdir etc) and compiler flags # such as CFLAGS. # -# The configure macro should be invoked as %configure (rather than %{configure}) -# because the rest of the arguments will be expanded using %*. -# %_configure ./configure %configure \ CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \ @@ -870,13 +1056,23 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); --disable-dependency-tracking #------------------------------------------------------------------------------ +# Tested features of make +# Output synchronization for parallel make: +%_make_output_sync %(! %{__make} --version -O >/dev/null 2>&1 || echo -O) + +#------------------------------------------------------------------------------ +# The "make" analogue, hiding the _smp_mflags magic from specs +%make_build %{__make} %{_make_output_sync} %{?_smp_mflags} + +#------------------------------------------------------------------------------ # The make install analogue of %configure for modern autotools: -%make_install %{__make} install DESTDIR=%{?buildroot} +%make_install %{__make} install DESTDIR=%{?buildroot} INSTALL="%{__install} -p" #------------------------------------------------------------------------------ # Former make install analogue, kept for compatibility and for old/broken # packages that don't support DESTDIR properly. %makeinstall \ + echo "warning: %%makeinstall is deprecated, try %%make_install instead" 1>&2\ %{__make} \\\ prefix=%{?buildroot:%{buildroot}}%{_prefix} \\\ exec_prefix=%{?buildroot:%{buildroot}}%{_exec_prefix} \\\ @@ -894,61 +1090,6 @@ posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir")); install #------------------------------------------------------------------------------ -# The GNUconfigure macro does the following: -# update config.guess and config.sub. -# regenerate all autoconf/automake files -# optionally change to a directory (make the directory if requested). -# run configure with correct prefix, platform, and CFLAGS. -# optionally restore current directory. -# -# Based on autogen.sh from GNOME and orginal GNUconfigure -# -%GNUconfigure(MCs:) \ - CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS; \ - LDFLAGS="${LDFLAGS:-%{-s:-s}}" ; export LDFLAGS; \ - %{-C:_mydir="`pwd`"; %{-M: %{__mkdir} -p %{-C*};} cd %{-C*}} \ - dirs="`find ${_mydir} -name configure.in -print`"; export dirs; \ - for coin in `echo ${dirs}` \ -do \ - dr=`dirname ${coin}`; \ -if test -f ${dr}/NO-AUTO-GEN; then \ - : \ -else \ - macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < ${coin}`; \ - ( cd ${dr}; \ - aclocalinclude="${ACLOCAL_FLAGS}"; \ - for k in ${macrodirs}; do \ - if test -d ${k}; then \ - aclocalinclude="${aclocalinclude} -I ${k}"; \ - ##else \ - ## echo "**Warning**: No such directory \`${k}'. Ignored." \ - fi \ - done \ - if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then \ - if grep "sed.*POTFILES" configure.in >/dev/null; then \ - : do nothing -- we still have an old unmodified configure.in \ - else \ - test -r ${dr}/aclocal.m4 || touch ${dr}/aclocal.m4; \ - echo "no" | gettextize --force --copy; \ - test -r ${dr}/aclocal.m4 && %{__chmod} u+w ${dr}/aclocal.m4; \ - fi \ - fi \ - if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then \ - %{__libtoolize} --force --copy; \ - fi \ - aclocal ${aclocalinclude}; \ - if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then \ - %{__autoheader}; \ - fi \ - echo "Running automake --gnu ${am_opt} ..."; \ - %{__automake} --add-missing --gnu ${am_opt}; \ - %{__autoconf}; \ - ); \ - fi \ -done \ - %{-C:${_mydir}}%{!-C:.}/configure --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} --bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} --datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} --libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} --infodir=%{_infodir} %* ; \ - %{-C:cd ${_mydir}; unset _mydir} - %patches %{lua: for i, p in ipairs(patches) do print(p.." ") end} %sources %{lua: for i, s in ipairs(sources) do print(s.." ") end} @@ -974,7 +1115,8 @@ done \ # %{perl_sitearch}/Image # %dir %{perl_sitearch}/auto/Image # -%requires_eq() %(LC_ALL="C" echo '%*' | xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") +%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_ge() %(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") %perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch) %perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib) %perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch) @@ -985,46 +1127,12 @@ done \ #------------------------------------------------------------------------------ # Useful python macros for determining python version and paths # -%python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib())") -%python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib(1))") -%python_version %(%{__python} -c "import sys; sys.stdout.write(sys.version[:3])") - -# More useful perl macros (from Raul Dias <rsd@swi.com.br>) -# -%perl_version %(perl -V:version | sed "s!.*='!!;s!'.*!!") -%perl_man1ext %(perl -V:man1ext | sed "s!.*='!!;s!'.*!!") -%perl_man3ext %(perl -V:man3ext | sed "s!.*='!!;s!'.*!!") -%perl_man1dir %(perl -V:man1dir | sed "s!.*='!!;s!'.*!!") -%perl_man3dir %(perl -V:man3dir | sed "s!.*='!!;s!'.*!!") -%perl_installman1dir %(perl -V:installman1dir | sed "s!.*='!!;s!'.*!!") -%perl_installman3dir %(perl -V:installman3dir | sed "s!.*='!!;s!'.*!!") -%perl_installarchlib %(perl -V:installarchlib | sed "s!.*='!!;s!'.*!!") -%perl_prefix %{buildroot} +%python_sitelib %(%{__python} -Es %{_rpmconfigdir}/python-macro-helper sitelib) +%python_sitearch %(%{__python} -Es %{_rpmconfigdir}/python-macro-helper sitearch) +%python_version %(%{__python} -Es %{_rpmconfigdir}/python-macro-helper version) #------------------------------------------------------------------------------ -# Python specific macro definitions (originally from PLD). -# -%py_ver %(python -c "import sys; v=sys.version_info[:2]; print '%%d.%%d'%%v" 2>/dev/null || echo PYTHON-NOT-FOUND) -%py_prefix %(python -c "import sys; print sys.prefix" 2>/dev/null || echo PYTHON-NOT-FOUND) -%py_libdir %{py_prefix}/%{_lib}/python%{py_ver} -%py_incdir %{py_prefix}/include/python%{py_ver} -%py_sitedir %{py_libdir}/site-packages -%py_compile(O) \ -find %1 -name '*.pyc' -exec rm -f {} \\; \ -python -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile_dir(sys.argv[1], ddir=br and (sys.argv[1][len(os.path.abspath(br)):]+'/') or None)" %1 \ -%{-O: \ -find %1 -name '*.pyo' -exec rm -f {} \\; \ -python -O -c "import sys, os, compileall; br='%{buildroot}'; compileall.compile_dir(sys.argv[1], ddir=br and (sys.argv[1][len(os.path.abspath(br)):]+'/') or None)" %1 \ -} -%py_requires(d) \ -%define minver %py_ver \ -%define maxver %(python -c "import sys; a,b=sys.version_info[:2]; print '%%d.%%d'%%(a,b+1)" 2>/dev/null || echo PYTHON-NOT-FOUND) \ -BuildRequires: python %{-d:python-devel} \ -PreReq: python >= %minver, python < %maxver - - -#------------------------------------------------------------------------------ -# arch macro for all Intel i?86 compatibile processors +# arch macro for all Intel i?86 compatible processors # (Note: This macro (and it's analogues) will probably be obsoleted when # rpm can use regular expressions against target platforms in macro # conditionals. @@ -1033,9 +1141,27 @@ PreReq: python >= %minver, python < %maxver #------------------------------------------------------------------------------ # arch macro for all supported ARM processors -%arm armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl armv6l armv7l armv7hl -%arml armv3l armv4l armv5l armv5tel armv6l armv7l armv7hl -%armb armv4b armv5b armv5teb +%arm armv3l armv4b armv4l armv4tl armv5tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl + +#------------------------------------------------------------------------------ +# arch macro for 32-bit MIPS processors +%mips32 mips mipsel mipsr6 mipsr6el + +#------------------------------------------------------------------------------ +# arch macro for 64-bit MIPS processors +%mips64 mips64 mips64el mips64r6 mips64r6el + +#------------------------------------------------------------------------------ +# arch macro for big endian MIPS processors +%mipseb mips mipsr6 mips64 mips64r6 + +#------------------------------------------------------------------------------ +# arch macro for little endian MIPS processors +%mipsel mipsel mipsr6el mips64el mips64r6el + +#------------------------------------------------------------------------------ +# arch macro for all supported MIPS processors +%mips %{mips32} %{mips64} #------------------------------------------------------------------------------ # arch macro for all supported Sparc processors @@ -1047,7 +1173,7 @@ PreReq: python >= %minver, python < %maxver #------------------------------------------------------------------------------ # arch macro for all supported PowerPC 64 processors -%power64 ppc64 ppc64p7 +%power64 ppc64 ppc64p7 ppc64le #------------------------------------------------------------------------ # Use in %install to generate locale specific file lists. For example, @@ -1067,24 +1193,24 @@ PreReq: python >= %minver, python < %maxver # for any special local needs use %__urlhelper_localopts in system-wide # or per-user macro configuration. %__urlhelpercmd @__CURL@ -%__urlhelperopts --silent --show-error --fail --location -o +%__urlhelperopts --silent --show-error --fail --globoff --location -o %__urlhelper_proxyopts %{?_httpproxy:--proxy %{_httpproxy}%{?_httpport::%{_httpport}}}%{!?_httpproxy:%{nil}} %_urlhelper %{__urlhelpercmd} %{?__urlhelper_localopts} %{?__urlhelper_proxyopts} %{__urlhelperopts} -#------------------------------------------------------------------------------ -# Collection specific macros +# Transaction plugin macros %__plugindir %{_libdir}/rpm-plugins -%__collection_font %{__plugindir}/exec.so /usr/bin/fc-cache -%__collection_java %{__plugindir}/exec.so /usr/bin/rebuild-gcj-db -%__collection_sepolicy %{__plugindir}/sepolicy.so -%__collection_sepolicy_flags 1 +#%__transaction_systemd_inhibit %{__plugindir}/systemd_inhibit.so +#%__transaction_selinux %{__plugindir}/selinux.so +#%__transaction_syslog %{__plugindir}/syslog.so +#%__transaction_ima %{__plugindir}/ima.so +#%__transaction_prioreset %{__plugindir}/prioreset.so #------------------------------------------------------------------------------ # transaction specific macros -%__transaction_plugins msm -%__plugindir %{_libdir}/rpm-plugins -%__transaction_msm %{__plugindir}/msm.so -%__transaction_msm_default_policy %{_libdir}/rpm-plugins/msm-device-sec-policy +#%__transaction_plugins msm +#%__plugindir %{_libdir}/rpm-plugins +#%__transaction_msm %{__plugindir}/msm.so +#%__transaction_msm_default_policy %{_libdir}/rpm-plugins/msm-device-sec-policy #------------------------------------------------------------------------------ # Macros for further automated spec %setup and patch application @@ -1098,13 +1224,18 @@ PreReq: python >= %minver, python < %maxver # Plain patch (-m is unused) %__scm_setup_patch(q) %{nil} %__scm_apply_patch(qp:m:)\ -%{__patch} %{-p:-p%{-p*}} %{-q:-s} +%{__patch} %{-p:-p%{-p*}} %{-q:-s} --fuzz=%{_default_patch_fuzz} %{_default_patch_flags} + +# Plain patch with backups for gendiff +%__scm_setup_gendiff(q) %{nil} +%__scm_apply_gendiff(qp:m:)\ +%{__patch} %{-p:-p%{-p*}} %{-q:-s} --fuzz=%{_default_patch_fuzz} %{_default_patch_flags} -b --suffix ".%{2}" # Mercurial (aka hg) %__scm_setup_hg(q)\ %{__hg} init %{-q} .\ %{__hg} add %{-q} .\ -%{__hg} commit %{-q} --user "%{__scm_author}" -m "%{name}-%{version} base" +%{__hg} commit %{-q} --user "%{__scm_author}" -m "%{NAME}-%{VERSION} base" %__scm_apply_hg(qp:m:)\ %{__hg} import - %{-p:-p%{-p*}} %{-q} -m %{-m*} --user "%{__scm_author}" @@ -1116,23 +1247,30 @@ PreReq: python >= %minver, python < %maxver %{__git} config user.email "%{__scm_usermail}"\ %{__git} add .\ %{__git} commit %{-q} -a\\\ - --author "%{__scm_author}" -m "%{name}-%{version} base" + --author "%{__scm_author}" -m "%{NAME}-%{VERSION} base" %__scm_apply_git(qp:m:)\ -%{__git} apply %{-p:-p%{-p*}} -\ -%{__git} commit %{-q} -a -m %{-m*} --author "%{__scm_author}" +%{__git} apply --index %{-p:-p%{-p*}} -\ +%{__git} commit %{-q} -m %{-m*} --author "%{__scm_author}" + +# Git, using "git am" (-m is unused) +%__scm_setup_git_am(q)\ +%{expand:%__scm_setup_git %{-q}} + +%__scm_apply_git_am(qp:m:)\ +%{__git} am %{-q} %{-p:-p%{-p*}} # Quilt %__scm_setup_quilt(q) %{nil} %__scm_apply_quilt(qp:m:)\ -%{__quilt} import %{-p:-p%{-p*}} %{1} && %{__quilt} push +%{__quilt} import %{-p:-p%{-p*}} %{1} && %{__quilt} push %{-q} # Bzr %__scm_setup_bzr(q)\ %{__bzr} init %{-q}\ %{__bzr} whoami --branch "%{__scm_author}"\ %{__bzr} add .\ -%{__bzr} commit %{-q} -m "%{name}-%{version} base" +%{__bzr} commit %{-q} -m "%{NAME}-%{VERSION} base" # bzr doesn't seem to have its own command to apply patches? %__scm_apply_bzr(qp:m:)\ @@ -1141,13 +1279,23 @@ PreReq: python >= %minver, python < %maxver # Single patch application %apply_patch(qp:m:)\ -%{uncompress:%{1}} | %{expand:%__scm_apply_%{__scm} %{-q} %{-p:-p%{-p*}} %{-m:-m%{-m*}}} +%{lua:\ +local file = rpm.expand("%{1}")\ +local num = rpm.expand("%{2}")\ +if posix.access(file, "r") then\ + local options = rpm.expand("%{-q} %{-p:-p%{-p*}} %{-m:-m%{-m*}}")\ + local scm_apply = rpm.expand("%__scm_apply_%{__scm}")\ + print(rpm.expand("%{uncompress:"..file.."} | "..scm_apply.." "..options.." "..file.." "..num.."\\n"))\ +else\ + print("echo 'Cannot read "..file.."'; exit 1;".."\\n")\ +end} # Automatically apply all patches %autopatch(vp:)\ %{lua:\ +local options = rpm.expand("%{!-v:-q} %{-p:-p%{-p*}} ")\ for i, p in ipairs(patches) do\ - print(rpm.expand("%apply_patch -m %{basename:"..p.."} "..rpm.expand("%{!-v:-q} %{-p:-p%{-p*}} ")..p.."\\n"))\ + print(rpm.expand("%apply_patch -m %{basename:"..p.."} "..options..p.." "..i.."\\n"))\ end} # One macro to (optionally) do it all. @@ -1158,7 +1306,7 @@ end} %autosetup(a:b:cDn:TvNS:p:)\ %setup %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{!-v:-q}\ %{-S:%global __scm %{-S*}}\ -%{-S:%{expand:%__scm_setup_%{-S*} %{!-v:-q}}}\ +%{expand:%__scm_setup_%{__scm} %{!-v:-q}}\ %{!-N:%autopatch %{-v} %{-p:-p%{-p*}}} # \endverbatim @@ -1181,4 +1329,3 @@ end} /usr/sbin/groupadd -o -r %{1} 2>/dev/null || :\ /usr/sbin/useradd -o -r -g %{1} -d %{2} -s %{3} -c %{4} %{1} 2>/dev/null || :\ %{nil} - |