diff options
Diffstat (limited to 'macros.in')
-rw-r--r-- | macros.in | 1074 |
1 files changed, 1074 insertions, 0 deletions
diff --git a/macros.in b/macros.in new file mode 100644 index 0000000..3a5bbcd --- /dev/null +++ b/macros.in @@ -0,0 +1,1074 @@ +#/*! \page config_macros Default configuration: @RPMCONFIGDIR@/macros +# \verbatim +# +# This is a global RPM configuration file. All changes made here will +# be lost when the rpm package is upgraded. Any per-system configuration +# 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. +# +%nil %{!?nil} + +#============================================================================== +# ---- filesystem macros. +# +%_usr @prefix@ +%_usrsrc %{_usr}/src +%_var @localstatedir@ + +#============================================================================== +# ---- Generally useful path macros. +# +%__awk @AWK@ +%__bzip2 @__BZIP2@ +%__cat @__CAT@ +%__chgrp @__CHGRP@ +%__chmod @__CHMOD@ +%__chown @__CHOWN@ +%__cp @__CP@ +%__cpio @__CPIO@ +%__file @__FILE@ +%__gpg @__GPG@ +%__grep @__GREP@ +%__gzip @__GZIP@ +%__id @__ID@ +%__id_u %{__id} -u +%__install @__INSTALL@ +%__ln_s @LN_S@ +%__lrzip @__LRZIP@ +%__lzip @__LZIP@ +# Deprecated, use %__xz instead. +%__lzma %__xz --format=lzma +%__xz @__XZ@ +%__make @__MAKE@ +%__mkdir @__MKDIR@ +%__mkdir_p @__MKDIR_P@ +%__mv @__MV@ +%__patch @__PATCH@ +%__perl @__PERL@ +%__python @__PYTHON@ +%__restorecon @__RESTORECON@ +%__rm @__RM@ +%__rsh @__RSH@ +%__sed @__SED@ +%__semodule @__SEMODULE@ +%__ssh @__SSH@ +%__tar @__TAR@ +%__unzip @__UNZIP@ + +#============================================================================== +# ---- Build system path macros. +# +%__ar @AR@ +%__as @AS@ +%__cc @__CC@ +%__cpp @CPP@ +%__cxx @CXX@ +%__ld @__LD@ +%__nm @__NM@ +%__objcopy @__OBJCOPY@ +%__objdump @__OBJDUMP@ +%__ranlib @RANLIB@ +%__remsh %{__rsh} +%__strip @__STRIP@ + +# XXX avoid failures if tools are not installed when rpm is built. +%__libtoolize libtoolize +%__aclocal aclocal +%__autoheader autoheader +%__automake automake +%__autoconf autoconf + +#============================================================================== +# Conditional build stuff. + +# Check if symbol is defined. +# Example usage: %if %{defined with_foo} && %{undefined with_bar} ... +%defined() %{expand:%%{?%{1}:1}%%{!?%{1}:0}} +%undefined() %{expand:%%{?%{1}:0}%%{!?%{1}:1}} + +# Shorthand for %{defined with_...} +%with() %{expand:%%{?with_%{1}:1}%%{!?with_%{1}:0}} +%without() %{expand:%%{?with_%{1}:0}%%{!?with_%{1}:1}} + +# Handle conditional builds. %bcond_with is for case when feature is +# default off and needs to be activated with --with ... command line +# switch. %bcond_without is for the dual case. +# +# %bcond_with foo defines symbol with_foo if --with foo was specified on +# command line. +# %bcond_without foo defines symbol with_foo if --without foo was *not* +# specified on command line. +# +# For example (spec file): +# +# (at the beginning) +# %bcond_with extra_fonts +# %bcond_without static +# (and later) +# %if %{with extra_fonts} +# ... +# %else +# ... +# %endif +# %if ! %{with static} +# ... +# %endif +# %ifdef %{with static} +# ... +# %endif +# %{?with_static: ... } +# %{!?with_static: ... } +# %{?with_extra_fonts: ... } +# %{!?with_extra_fonts: ... } + +# +# The bottom line: never use without_foo, _with_foo nor _without_foo, only +# with_foo. This way changing default set of bconds for given spec is just +# a matter of changing single line in it and syntax is more readable. +%bcond_with() %{expand:%%{?_with_%{1}:%%global with_%{1} 1}} +%bcond_without() %{expand:%%{!?_without_%{1}:%%global with_%{1} 1}} +# +#============================================================================== +# ---- Required rpmrc macros. +# Macros that used to be initialized as a side effect of rpmrc parsing. +# These are the default values that can be overridden by other +# (e.g. per-platform, per-system, per-packager, per-package) macros. +# +# The directory where rpm's configuration and scripts live +%_rpmconfigdir %{getconfdir} + +# The directory where sources/patches will be unpacked and built. +%_builddir %{_topdir}/BUILD + +# The interpreter used for build scriptlets. +%_buildshell /bin/sh + +# The path to the bzip2 executable (legacy, use %{__bzip2} instead). +%_bzip2bin %{__bzip2} + +# The location of the rpm database file(s). +%_dbpath %{_var}/lib/rpm + +# The location of the rpm database file(s) after "rpm --rebuilddb". +%_dbpath_rebuild %{_dbpath} + +%_keyringpath %{_dbpath}/pubkeys/ + +# +# Path to script that creates debug symbols in a /usr/lib/debug +# shadow tree. +# +# A spec file can %%define _find_debuginfo_opts to pass options to +# the script. See the script for details. +# +%__debug_install_post \ + %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\ +%{nil} + +# Template for debug information sub-package. +%debug_package \ +%ifnarch noarch\ +%global __debug_package 1\ +%package debug\ +Summary: Debug information for package %{name}\ +Group: Development/Debug\ +AutoReqProv: 0\ +%description debug\ +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 debug -f debugfiles.list\ +%defattr(-,root,root)\ +%endif\ +%{nil} + +%_defaultdocdir %{_datadir}/doc + +# The path to the gzip executable (legacy, use %{__gzip} instead). +%_gzipbin %{__gzip} + +# The Unix time of the latest kept changelog entry in binary packages. +# Any older entry is not packaged in binary packages. +%_changelog_trimtime 0 + +# The directory where newly built binary packages will be written. +%_rpmdir %{_topdir}/RPMS + +# A template used to generate the output binary package file name +# (legacy). +%_rpmfilename %{_build_name_fmt} + +# The directory where sources/patches from a source package will be +# installed. This is also where sources/patches are found when building. +%_sourcedir %{_topdir}/SOURCES + +# The directory where the spec file from a source package will be +# installed. +%_specdir %{_topdir}/SPECS + +# The directory where newly built source packages will be written. +%_srcrpmdir %{_topdir}/SRPMS + +# The directory where buildroots will be created. +%_buildrootdir %{_topdir}/BUILDROOT + +# Build root path, where %install installs the package during build. +%buildroot %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch} + +# Directory where temporaray files can be created. +%_tmppath %{_var}/tmp + +# Path to top of build area. +%_topdir %{getenv:HOME}/rpmbuild + +# The path to the unzip executable (legacy, use %{__unzip} instead). +%_unzipbin %{__unzip} + +#============================================================================== +# ---- Optional rpmrc macros. +# Macros that are initialized as a side effect of rpmrc and/or spec +# file parsing. +# +# The sub-directory (relative to %{_builddir}) where sources are compiled. +# This macro is set after processing %setup, either explicitly from the +# value given to -n or the default name-version. +# +#%buildsubdir + +# Configurable distribution information, same as Distribution: tag in a +# specfile. +# +#%distribution + +# Configurable distribution URL, same as DistURL: tag in a specfile. +# The URL will be used to supply reliable information to tools like +# rpmfind. +# +# Note: You should not configure with disturl (or build packages with +# the DistURL: tag) unless you are willing to supply content in a +# yet-to-be-determined format at the URL specified. +# +#%disturl + +# Configurable bug URL, same as BugURL: tag in a specfile. +# The URL will be used to supply reliable information to where +# to file bugs. +# +#%bugurl + +# Boolean (i.e. 1 == "yes", 0 == "no") that controls whether files +# marked as %doc should be installed. +#%_excludedocs + +# The port and machine name of a FTP proxy host running TIS firewall. +# +#%_ftpport +#%_ftpproxy + +# The signature to use and the location of configuration files for +# signing packages with GNU gpg. +# +#%_gpg_name +#%_gpg_path + +# The port and machine name of an HTTP proxy host. +# +#%_httpport +#%_httpproxy + +# The PATH put into the environment before running %pre/%post et al. +# +%_install_script_path /sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin + +# A colon separated list of desired locales to be installed; +# "all" means install all locale specific files. +# +%_install_langs all + +# The value of CLASSPATH in build scriptlets (iff configured). +# +#%_javaclasspath all + +# Import packaging conventions from jpackage.org (prefixed with _ +# to avoid name collisions). +# +%_javadir %{_datadir}/java +%_javadocdir %{_datadir}/javadoc + +# A colon separated list of paths where files should *not* be installed. +# Usually, these are network file system mount points. +# +#%_netsharedpath + +# (experimental) +# The type of pattern match used on rpmdb iterator selectors: +# "default" simple glob-like regex, periods will be escaped, +# splats will have period prepended, full "^...$" match +# required. Also, file path tags will use glob(7). +# "strcmp" compare strings +# "regex" regex(7) patterns using regcomp(3)/regexec(3) +# "glob" glob(7) patterns using fnmatch(3) +# +%_query_selector_match default + +# Configurable packager information, same as Packager: in a specfile. +# +#%packager + +# 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 +# +#%_source_payload w9.gzdio +#%_binary_payload w9.gzdio + +# 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) +# 2 SHA1 +# 8 SHA256 +# 9 SHA384 +# 10 SHA512 +# +#%_source_filedigest_algorithm 1 +#%_binary_filedigest_algorithm 1 + +# Configurable vendor information, same as Vendor: in a specfile. +# +#%vendor + +# Default fuzz level for %patch in spec file. +%_default_patch_fuzz 0 + +# Default patch flags +%_default_patch_flags -s + +#============================================================================== +# ---- Build configuration macros. +# +# Script gets packaged file list on input and buildroot as first parameter. +# Returns list of unpackaged files, i.e. files in $RPM_BUILD_ROOT not packaged. +# +# Note: Disable (by commenting out) for legacy compatibility. +%__check_files %{_rpmconfigdir}/check-files %{buildroot} + +# +# Should unpackaged files in a build root terminate a build? +# +# Note: The default value should be 0 for legacy compatibility. +%_unpackaged_files_terminate_build 1 + +# +# Should missing %doc files in the build directory terminate a build? +# +# Note: The default value should be 0 for legacy compatibility. +%_missing_doc_files_terminate_build 1 + +# +# Should binaries in noarch packages terminate a build? +%_binaries_in_noarch_packages_terminate_build 1 + +# +# Program to call for each successfully built and written binary package. +# The package name is passed to the program as a command-line argument. +# +#%_build_pkgcheck %{_bindir}/rpmlint + +# +# Program to call for the whole binary package set after build. +# The package set is passed to the program via command-line arguments. +# +#%_build_pkgcheck_set %{_bindir}/rpmlint + +# +# Program to call for successfully built and written SRPM. +# The package name is passed to the program as a command-line argument. +# +#%_build_pkgcheck_srpm %{_bindir}/rpmlint + +# +# Should the build of packages fail if package checker (if defined) returns +# non-zero exit status? +# +#%_nonzero_exit_pkgcheck_terminate_build 1 + +# +# Should an ELF file processed by find-debuginfo.sh having no build ID +# terminate a build? This is left undefined to disable it and defined to +# enable. +# +#%_missing_build_ids_terminate_build 1 + +# +# Use internal dependency generator rather than external helpers? +%_use_internal_dependency_generator 1 + +# +# Filter GLIBC_PRIVATE Provides: and Requires: +%_filter_GLIBC_PRIVATE 0 + +# Desired selinux policy tree +%__policy_tree %{expand:%%global __policy_tree %{lua:\ +t="targeted"\ +f = io.open("/etc/selinux/config")\ +if f then\ + for l in f:lines() do\ + if "SELINUXTYPE=" == string.sub(l,0,12) then t=string.sub(l,13); end\ + end\ + f:close()\ +end\ +print (t)\ +}}%{__policy_tree} + +# Path to selinux file context patterns. +%__file_context_path /etc/selinux/%{__policy_tree}/contexts/files/file_contexts + +# Directories whose contents should be considered as documentation. +%__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 + +# +# Path to selinux file context patterns used to add +# RPMTAG_FILECONTEXTS to packages when building. +# +# Undefined, missing or %{nil} will disable. +%_build_file_context_path %{nil} + +# +# Path to selinux file context patterns used to set +# (or override package content) file contexts when installing. +# +# Undefined, missing or %{nil} will use package content (if available). +%_install_file_context_path %{__file_context_path} + +# +# Path to selinux file context patterns used to verify +# file contexts on file system. +# +# Undefined, missing or %{nil} will use package content (if available). +%_verify_file_context_path %{__file_context_path} + +# +# Path to scripts to autogenerate package dependencies, +# +# Note: Used iff _use_internal_dependency_generator is zero. +#%__find_provides %{_rpmconfigdir}/rpmdeps --provides +#%__find_requires %{_rpmconfigdir}/rpmdeps --requires +%__find_provides %{_rpmconfigdir}/find-provides +%__find_requires %{_rpmconfigdir}/find-requires +#%__find_conflicts ??? +#%__find_obsoletes ??? + +# +# Path to file attribute classifications for automatic dependency +# extraction, used when _use_internal_dependency_generator +# is used (on by default). Files can have any number of attributes +# attached to them, and dependencies are separately extracted for +# each attribute. +# +# To define a new file attribute called "myattr", add a file named +# "myattr" to this directory, defining the requires and/or provides +# finder script(s) + magic and/or path pattern regex(es). +# provides finder and +# %__myattr_requires path + args to requires finder script for <myattr> +# %__myattr_provides path + args to provides finder script for <myattr> +# %__myattr_magic libmagic classification match regex +# %__myattr_path path based classification match regex +# %__myattr_flags flags to control behavior (just "exeonly" for now) +# %__myattr_exclude_magic exclude by magic regex +# %__myattr_exclude_path exclude by path regex +# +%_fileattrsdir %{_rpmconfigdir}/fileattrs + +#============================================================================== +# ---- Database configuration macros. +# Macros used to configure Berkley db parameters. +# +# rpmdb macro configuration values are a colon (or white space) separated +# list of tokens, with an optional '!' negation to explicitly disable bit +# values, or a "=value" if a parameter. A per-tag value is used (e.g. +# %_dbi_config_Packages) if defined, otherwise a per-rpmdb default +# (e.g. %_dbi_config). +# +# Here's a short list of the tokens, with a guess of whether the option is +# useful: +# (nothing) currently used in rpm, known to work. +# "+++" under development, will be supported in rpm eventually. +# "???" I have no clue, you're mostly on your own. +# +# If you do find yourself inclined to fiddle, here's what I see (shrug): +# 1) Only the value of mp_size has any serious impact on overall performance, +# and you will need ~256Kb to handle a typical machine install. +# 2) Only the Packages hash, because of the size of the values (i.e. headers), +# will ever need tuning. Diddle the pagesize if you're interested, although +# I believe that you will find pagesize=512 "best". +# 3) Adding nofsync increases speed, but risks total data loss. Fiddle shared +# and/or mp_size instead. +# +# token works? Berkeley db flag or value +#================================================== +#---------------------- DBENV tunable values: +# mmapsize=16Mb DBENV->set_mp_mmapsize +# cachesize=1Mb DBENV->set_cachesize, DB->set_cachesize +#---------------------- DB->open bits: +# nommap ??? DB_NOMMAP +#----------------------- rpmdb specific configuration: +# lockdbfd (always on for Packages) Use fcntl(2) locking ? +# nofsync Disable fsync(2) call performed after db3 writes? +# + +# Misc BDB tuning options +%__dbi_other mp_mmapsize=128Mb mp_size=64Mb + +%_dbi_config %{?__dbi_other} + +# "Packages" should have shared/exclusive fcntl(2) lock using "lockdbfd". +%_dbi_config_Packages %{?_dbi_config} lockdbfd + +#============================================================================== +# ---- GPG/PGP/PGP5 signature macros. +# 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_digest_algo:--digest-algo %{_gpg_digest_algo}} \ + --no-secmem-warning \ + -u "%{_gpg_name}" -sbo %{__signature_filename} %{__plaintext_filename} + +# XXX rpm >= 4.1 verifies signatures internally +#%__gpg_verify_cmd %{__gpg} \ +# gpg --batch --no-verbose --verify --no-secmem-warning \ +# %{__signature_filename} %{__plaintext_filename} +# +# XXX rpm-4.1 verifies prelinked libraries using a prelink undo helper. +# Normally this macro is defined in /etc/rpm/macros.prelink, installed +# with the prelink package. If the macro is undefined, then prelinked +# shared libraries contents are MD5 digest verified (as usual), rather +# than MD5 verifying the output of the prelink undo helper. +# +# Note: The 2nd token is used as argv[0] and "library" is a +# placeholder that will be deleted and replaced with the appropriate +# library file path. +#%__prelink_undo_cmd /usr/sbin/prelink prelink -y library + +# Horowitz Key Protocol server configuration +# +%_hkp_keyserver http://pgp.mit.edu +%_hkp_keyserver_query %{_hkp_keyserver}:11371/pks/lookup?op=get&search=0x + +#============================================================================== +# ---- Transaction macros. +# Macro(s) used to parameterize transactions. +# +# The output binary package file name template used when building +# binary packages. +# +# XXX Note: escaped %% for use in headerSprintf() +%_build_name_fmt %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm + +# The default transaction color. This value is a set of bits to +# determine file and dependency affinity for this arch. +# 0 uncolored (i.e. use only arch as install hint) +# 1 Elf32 permitted +# 2 Elf64 permitted +%_transaction_color @RPMCANONCOLOR@ + +# Verify digest/signature flags for various rpm modes: +# 0x30300 (_RPMVSF_NODIGESTS) --nohdrchk if set, don't check digest(s) +# 0xc0c00 (_RPMVSF_NOSIGNATURES) --nosignature if set, don't check signature(s) +# 0xf0000 (_RPMVSF_NOPAYLOAD) --nolegacy if set, check header+payload (if possible) +# 0x00f00 (_RPMVSF_NOHEADER) --nohdrchk if set, don't check rpmdb headers +# +# For example, the value 0xf0c00 (=0xf0000+0xc0c00) disables legacy +# digest/signature checking, disables signature checking, but attempts +# digest checking, also when retrieving headers from the database. +# +# You also can do: +# >>> hex(rpm._RPMVSF_NOSIGNATURES) +# '0xc0c00' +# or: +# >>> hex(rpm._RPMVSF_NOSIGNATURES|rpm._RPMVSF_NOPAYLOAD) +# '0xf0c00' +# at the python prompt for example, after "import rpm". +# +# The checking overhead is ~11ms per header for digests/signatures; +# each header from the database is checked only when first encountered +# for each database open. +# +# Note: the %_vsflags_erase applies to --upgrade/--freshen modes as +# well as --erase. +# +%__vsflags 0xf0000 +%_vsflags_build %{__vsflags} +%_vsflags_erase %{__vsflags} +%_vsflags_install %{__vsflags} +%_vsflags_query %{__vsflags} +%_vsflags_rebuilddb %{__vsflags} +%_vsflags_verify %{__vsflags} + +# +# Default output format string for rpm -qa +# +# XXX Note: escaped %% for use in headerFormat() +%_query_all_fmt %%{nvra} + +# +# Default path to the file used for transaction fcntl lock. +%_rpmlock_path %{_dbpath}/.rpm.lock + +#============================================================================== +# ---- per-platform macros. +# Macros that are specific to an individual platform. The values here +# will be used if the per-platform macro file does not exist.. +# +%_arch @RPMCANONARCH@ +%_build_arch @RPMCANONARCH@ +%_vendor @RPMCANONVENDOR@ +%_os @RPMCANONOS@ +%_gnu @RPMCANONGNU@ +%_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu} + +# +# Define a generic value for optflags. Normally overridden by per-target macros. +%optflags -O2 + +# +# ISA dependency marker, none for noarch and name-bitness for others +%_isa %{?__isa:(%{__isa})}%{!?__isa:%{nil}} + +# +# Define per-arch and per-os defaults. Normally overridden by per-target macros. +%__arch_install_post %{nil} +%__os_install_post %{___build_post} + +#============================================================================== +# ---- Scriptlet template templates. +# Global defaults used for building scriptlet templates. +# + +%___build_shell %{?_buildshell:%{_buildshell}}%{!?_buildshell:/bin/sh} +%___build_args -e +%___build_cmd %{?_sudo:%{_sudo} }%{?_remsh:%{_remsh} %{_remhost} }%{?_remsudo:%{_remsudo} }%{?_remchroot:%{_remchroot} %{_remroot} }%{___build_shell} %{___build_args} +%___build_pre \ + RPM_SOURCE_DIR=\"%{u2p:%{_sourcedir}}\"\ + RPM_BUILD_DIR=\"%{u2p:%{_builddir}}\"\ + RPM_OPT_FLAGS=\"%{optflags}\"\ + RPM_ARCH=\"%{_arch}\"\ + RPM_OS=\"%{_os}\"\ + 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}\"\ + export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE\ + LANG=C\ + export LANG\ + unset CDPATH DISPLAY ||:\ + %{?buildroot:RPM_BUILD_ROOT=\"%{u2p:%{buildroot}}\"\ + export RPM_BUILD_ROOT}\ + %{?_javaclasspath:CLASSPATH=\"%{_javaclasspath}\"\ + export CLASSPATH}\ + \ + %{verbose:set -x}%{!verbose:exec > /dev/null}\ + umask 022\ + cd \"%{u2p:%{_builddir}}\"\ + + +#%___build_body %{nil} +%___build_post exit 0 + +%___build_template #!%{___build_shell}\ +%{___build_pre}\ +%{nil} + +#%{___build_body}\ +#%{___build_post}\ +#%{nil} + +#============================================================================== +# ---- 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} +%__spec_prep_cmd %{___build_cmd} +%__spec_prep_pre %{___build_pre} +%__spec_prep_body %{___build_body} +%__spec_prep_post %{___build_post} +%__spec_prep_template #!%{__spec_prep_shell}\ +%{__spec_prep_pre}\ +%{nil} + +#%{__spec_prep_body}\ +#%{__spec_prep_post}\ +#%{nil} + +%__spec_build_shell %{___build_shell} +%__spec_build_args %{___build_args} +%__spec_build_cmd %{___build_cmd} +%__spec_build_pre %{___build_pre} +%__spec_build_body %{___build_body} +%__spec_build_post %{___build_post} +%__spec_build_template #!%{__spec_build_shell}\ +%{__spec_build_pre}\ +%{nil} + +#%{__spec_build_body}\ +#%{__spec_build_post}\ +#%{nil} + +%__spec_install_shell %{___build_shell} +%__spec_install_args %{___build_args} +%__spec_install_cmd %{___build_cmd} +%__spec_install_pre %{___build_pre} +%__spec_install_body %{___build_body} +%__spec_install_post\ +%{?__debug_package:%{__debug_install_post}}\ +%{__arch_install_post}\ +%{__os_install_post}\ +%{nil} +%__spec_install_template #!%{__spec_install_shell}\ +%{__spec_install_pre}\ +%{nil} + +#%{__spec_install_body}\ +#%{__spec_install_post}\ +#%{nil} + +%__spec_check_shell %{___build_shell} +%__spec_check_args %{___build_args} +%__spec_check_cmd %{___build_cmd} +%__spec_check_pre %{___build_pre} +%__spec_check_body %{___build_body} +%__spec_check_post %{___build_post} +%__spec_check_template #!%{__spec_check_shell}\ +%{__spec_check_pre}\ +%{nil} + +#%{__spec_check_body}\ +#%{__spec_check_post}\ +#%{nil} + +#%__spec_autodep_shell %{___build_shell} +#%__spec_autodep_args %{___build_args} +#%__spec_autodep_cmd %{___build_cmd} +#%__spec_autodep_pre %{___build_pre} +#%__spec_autodep_body %{___build_body} +#%__spec_autodep_post %{___build_post} +#%__spec_autodep_template #!%{__spec_autodep_shell}\ +#%{__spec_autodep_pre}\ +#%{nil} + +#%{__spec_autodep_body}\ +#%{__spec_autodep_post}\ +#%{nil} + +%__spec_clean_shell %{___build_shell} +%__spec_clean_args %{___build_args} +%__spec_clean_cmd %{___build_cmd} +%__spec_clean_pre %{___build_pre} +%__spec_clean_body %{___build_body} +%__spec_clean_post %{___build_post} +%__spec_clean_template #!%{__spec_clean_shell}\ +%{__spec_clean_pre}\ +%{nil} + +#%{__spec_clean_body}\ +#%{__spec_clean_post}\ +#%{nil} + +%__spec_rmbuild_shell %{___build_shell} +%__spec_rmbuild_args %{___build_args} +%__spec_rmbuild_cmd %{___build_cmd} +%__spec_rmbuild_pre %{___build_pre} +%__spec_rmbuild_body %{___build_body} +%__spec_rmbuild_post %{___build_post} +%__spec_rmbuild_template #!%{__spec_rmbuild_shell}\ +%{__spec_rmbuild_pre}\ +%{nil} + +#%{__spec_rmbuild_body}\ +#%{__spec_rmbuild_post}\ +#%{nil} + +# XXX We don't expand pre/post install scriptlets (yet). +#%__spec_pre_pre %{nil} +#%__spec_pre_post %{nil} +#%__spec_post_pre %{nil} +#%__spec_post_post %{nil} +#%__spec_preun_pre %{nil} +#%__spec_preun_post %{nil} +#%__spec_postun_pre %{nil} +#%__spec_postun_post %{nil} +#%__spec_triggerpostun_pre %{nil} +#%__spec_triggerpostun_post %{nil} +#%__spec_triggerun_pre %{nil} +#%__spec_triggerun_post %{nil} +#%__spec_triggerin_pre %{nil} +#%__spec_triggerin_post %{nil} + +#============================================================================== +# ---- configure macros. +# Macro(s) slavishly copied from autoconf's config.status. +# +%_prefix @prefix@ +%_exec_prefix %{_prefix} +%_bindir %{_exec_prefix}/bin +%_sbindir %{_exec_prefix}/sbin +%_libexecdir %{_exec_prefix}/libexec +%_datadir %{_prefix}/share +%_sysconfdir /etc +%_sharedstatedir %{_prefix}/com +%_localstatedir %{_prefix}/var +%_lib lib +%_libdir %{_exec_prefix}/%{_lib} +%_includedir %{_prefix}/include +%_infodir %{_datadir}/info +%_mandir %{_datadir}/man + +#============================================================================== +# ---- config.guess platform macros. +# Macro(s) similar to the tokens used by configure. +# +%_build %{_host} +%_build_alias %{_host_alias} +%_build_cpu %{_host_cpu} +%_build_vendor %{_host_vendor} +%_build_os %{_host_os} +%_host @host@ +%_host_alias @host_alias@%{nil} +%_host_cpu @host_cpu@ +%_host_vendor @host_vendor@ +%_host_os @host_os@ +%_target %{_host} +%_target_alias %{_host_alias} +%_target_cpu %{_host_cpu} +%_target_vendor %{_host_vendor} +%_target_os %{_host_os} + +#============================================================================== +# ---- specfile macros. +# Macro(s) here can be used reliably for reproducible builds. +# (Note: Above is the goal, below are the macros under development) +# +# The configure macro runs autoconf configure script with platform specific +# 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 ; \ + CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \ + FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ; \ + %{_configure} --host=%{_host} --build=%{_build} \\\ + --program-prefix=%{?_program_prefix} \\\ + --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} + +#------------------------------------------------------------------------------ +# The make install analogue of %configure for modern autotools: +%make_install %{__make} install DESTDIR=%{?buildroot} + +#------------------------------------------------------------------------------ +# Former make install analogue, kept for compatibility and for old/broken +# packages that don't support DESTDIR properly. +%makeinstall \ + %{__make} \\\ + prefix=%{?buildroot:%{buildroot}}%{_prefix} \\\ + exec_prefix=%{?buildroot:%{buildroot}}%{_exec_prefix} \\\ + bindir=%{?buildroot:%{buildroot}}%{_bindir} \\\ + sbindir=%{?buildroot:%{buildroot}}%{_sbindir} \\\ + sysconfdir=%{?buildroot:%{buildroot}}%{_sysconfdir} \\\ + datadir=%{?buildroot:%{buildroot}}%{_datadir} \\\ + includedir=%{?buildroot:%{buildroot}}%{_includedir} \\\ + libdir=%{?buildroot:%{buildroot}}%{_libdir} \\\ + libexecdir=%{?buildroot:%{buildroot}}%{_libexecdir} \\\ + localstatedir=%{?buildroot:%{buildroot}}%{_localstatedir} \\\ + sharedstatedir=%{?buildroot:%{buildroot}}%{_sharedstatedir} \\\ + mandir=%{?buildroot:%{buildroot}}%{_mandir} \\\ + infodir=%{?buildroot:%{buildroot}}%{_infodir} \\\ + 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} + +#------------------------------------------------------------------------------ +# Useful perl macros (from Artur Frysiak <wiget@t17.ds.pwr.wroc.pl>) +# +# For example, these can be used as (from ImageMagick.spec from PLD site) +# [...] +# BuildPrereq: perl +# [...] +# %package perl +# Summary: libraries and modules for access to ImageMagick from perl +# Group: Development/Languages/Perl +# Requires: %{name} = %{version} +# %requires_eq perl +# [...] +# %install +# rm -fr $RPM_BUILD_ROOT +# install -d $RPM_BUILD_ROOT/%{perl_sitearch} +# [...] +# %files perl +# %defattr(644,root,root,755) +# %{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") +%perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch) +%perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib) +%perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch) +%perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib) +%perl_archlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib) +%perl_privlib %(eval "`%{__perl} -V:installprivlib`"; echo $installprivlib) + +#------------------------------------------------------------------------------ +# 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])") + +#------------------------------------------------------------------------------ +# arch macro for all Intel i?86 compatibile processors +# (Note: This macro (and it's analogues) will probably be obsoleted when +# rpm can use regular expressions against target platforms in macro +# conditionals. +# +%ix86 i386 i486 i586 i686 pentium3 pentium4 athlon geode + +#------------------------------------------------------------------------------ +# arch macro for all supported ARM processors +%arm armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv7l + +#------------------------------------------------------------------------------ +# arch macro for all supported Sparc processors +%sparc sparc sparcv8 sparcv9 sparcv9v sparc64 sparc64v + +#------------------------------------------------------------------------------ +# arch macro for all supported Alpha processors +%alpha alpha alphaev56 alphaev6 alphaev67 + +#------------------------------------------------------------------------ +# Use in %install to generate locale specific file lists. For example, +# +# %install +# ... +# %find_lang %{name} +# ... +# %files -f %{name}.lang +# +%find_lang %{_rpmconfigdir}/find-lang.sh %{buildroot} + +# Commands + opts to use for retrieving remote files +# Proxy opts can be set through --httpproxy/--httpport popt aliases, +# 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 +%__urlhelper_proxyopts %{?_httpproxy:--proxy %{_httpproxy}%{?_httpport::%{_httpport}}}%{!?_httpproxy:%{nil}} +%_urlhelper %{__urlhelpercmd} %{?__urlhelper_localopts} %{?__urlhelper_proxyopts} %{__urlhelperopts} + +#------------------------------------------------------------------------------ +# Collection specific 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 + +# \endverbatim +#*/ |