# @RPMVENDORDIR@/macros: # Main Mageia rpm configuration # Only modified macros goes here # # # 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. %_host_vendor @RPMCANONVENDOR@ %_real_vendor @RPMCANONVENDOR@ %_vendor @RPMVENDOR@ %dist_vendor @RPMVENDOR@ %dist_name @RPMVENDOR@ Linux %_gnu @CANONTARGETGNU@ %_target_platform %{_target_cpu}-%{_real_vendor}-%{_target_os}%{?_gnu} %_host_cpu @CANONTARGETCPU@ %_host %{_host_cpu}-%{_real_vendor}-%{_host_os}%{?_gnu} #============================================================================== # ---- GPG/PGP/PGP5 signature macros. # Macro(s) to hold the arguments passed to GPG/PGP for package # signing and verification. # # We disable the gpg key automatic querying %_hkp_keyserver_query %nil # 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 %_vsflags_query 0xc0c00 # Open all indices before doing chroot(2). # %_openall_before_chroot 1 %_repackage_all_erasures 0 %_query_all_fmt %%{name}-%%{version}-%%{release} %_rpmlock_path %{_dbpath}/__db.000 # activate filetriggers (cf http://wiki.mandriva.com/en/Rpm_filetriggers) %_filetriggers_dir /var/lib/rpm/filetriggers # Various programs used in rpm scripts %_update_icon_cache_bin %{_bindir}/gtk-update-icon-cache %_gconftool_bin %{_bindir}/gconftool-2 #============================================================================== # ---- 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. # %ix86 i386 i486 i586 i686 pentium3 pentium4 athlon k6 # Multilibs %_multilibpatt (/%{_lib}|/usr/%{_lib}(|/gconv)|/usr/local/%{_lib}|/usr/X11R6/%{_lib}|/opt/%{_lib})/[^/]*\\.([oa]|la|so[0-9.]*)$ %_arch_tag_suffix %([ "%{?_lib}" = "lib64" ] && echo "()(64bit)") %arch_tagged() %{1}%{_arch_tag_suffix} %{?2:%{2} %{3}%{?!3:%{error:undefined 3rd argument in arch_tagged}}} # Games macros %_gamesdir games %_gamesbindir %{_prefix}/%{_gamesdir} %_gamesdatadir %{_datadir}/%{_gamesdir} # Menu directories %_menudir %{_prefix}/lib/menu %_iconsdir %{_datadir}/icons %_miconsdir %{_datadir}/icons/mini %_liconsdir %{_datadir}/icons/large %_xfontdir %_datadir/fonts %_webconfdir %{_sysconfdir}/httpd/conf %_webappconfdir %_webconfdir/sites.d # compatibility %webappconfdir %_webappconfdir # For Appdata metainfo %_metainfodir %{_datadir}/metainfo #============================================================================== # ---- Build configuration macros. # # Package version macro. # The type of package to produce, for compatibility with legacy # versions of rpm. # # Script gets packaged file list on input. # Returns list of multiarch files that are not marked as such, # i.e. files in $RPM_BUILD_ROOT that have arch-dependent values # # Note: Disable (by commenting out) for legacy compatibility. #%__check_multiarch_files @RPMLIBDIR@/check-multiarch-files %{buildroot} # For rebuilding gcj-db %_rebuildgcjdb_bin %{_bindir}/rebuild-gcj-db %update_gcjdb if [ -x %{_rebuildgcjdb_bin} ]; then %{_rebuildgcjdb_bin} || true ; fi \ %{nil} %clean_gcjdb if [ -x %{_rebuildgcjdb_bin} ]; then %{_rebuildgcjdb_bin} || true ; fi \ %{nil} # Rebuild icon cache # # following themes are handled through filetriggers: %icon_cache_through_filetrigger_hicolor 1 %icon_cache_through_filetrigger_gnome 1 %icon_cache_through_filetrigger_oxygen 1 %update_icon_cache() %{expand: %%{!?icon_cache_through_filetrigger_%1:if [ -x %%{_update_icon_cache_bin} ]; then \ %%{_update_icon_cache_bin} --force --quiet %%{_iconsdir}/%%{1} || true; fi \ %%{nil}}} %clean_icon_cache() %{expand: %%{!?icon_cache_through_filetrigger_%1:if [ -x %%{_update_icon_cache_bin} -a -r %%{_iconsdir}/%%{1}/index.theme ]; then \ %%{_update_icon_cache_bin} --force --quiet %%{_iconsdir}/%%{1} || true ; fi \ %%{nil}}} # GConf schemas: # uninstall still need to be done in %preun: %preun_uninstall_gconf_schemas() if [ "$1" = "0" -a -x %{_gconftool_bin} ]; then \ SCHEMAS="" \ for SCHEMA in %{*} ; do \ SCHEMAS="$SCHEMAS %{_sysconfdir}/gconf/schemas/$SCHEMA.schemas" \ done \ GCONF_CONFIG_SOURCE=`%{_gconftool_bin} --get-default-source` %{_gconftool_bin} --makefile-uninstall-rule $SCHEMAS > /dev/null || true ; fi \ %{nil} # Mageia Linux version # (user may copy the following line in specfile) %mgaversion %distro_release %distsuffix @DISTSUFFIX@ %__dist_ident %{?distsuffix:%distsuffix}%{?!distsuffix:.mga}%{?distro_release:%distro_release} %__distro_section %{?distro_section:%distro_section}%{?!distro_section:core} %mkrel(c:) %{-c: 0.%{-c*}.}%{1}%{?subrel:.%subrel}%{?dist:%dist}%{?!dist:%__dist_ident}%([ "%{__distro_section}" != "core" ] && echo .%__distro_section) %_logdir %{_var}/log %_localstatedir /var %_pkgdocdir %{_docdir}/%{name} %_docdir_fmt %%{NAME} # Include minimal debug information in build binaries. # Requires _enable_debug_packages. # %_enable_debug_packages 1 %_include_minidebuginfo 1 %_include_gdb_index 1 %_debugsource_packages 1 %_debuginfo_subpackages 1 #------------------------------------------------------------------------------ # definions merged from manbo-setup-build # # Default extension to use (for info files) %_extension .xz %__install_info /sbin/install-info %_install_info() if [[ -f %{_infodir}/%{1}%{_extension} ]]; then %{__install_info} %{_infodir}/%{1}%{_extension} --dir=%{_infodir}/dir; fi \ %{nil} # (nb: keep the "alone on its line ';'") %_remove_install_info() if [ "$1" = "0" ]; then if [[ -f %{_infodir}/%{1}%{_extension} ]]; then %{__install_info} %{_infodir}/%{1}%{_extension} --dir=%{_infodir}/dir --remove ; fi; fi \ %{nil} # Macro: %{mklibname [ []] [-s] [-d]} # - %{mklibname test} => lib64test, on a lib64 platform # - %{mklibname test 1 -d} => libtest1-devel # - %{mklibname test 1 -d 0 -s} => libtest1_0-static-devel %mklibname(ds) %{_lib}%{1}%{?2:%{2}}%{?3:_%{3}}%{-s:-static}%{-d:-devel} # Dynamic EVRD tags macro for use with versioned provides/requires in place of # '%{version}-%{release}', ie. to automatically add distepoch or epoch if present %EVRD %{?epoch:%{epoch}:}%{?version:%{version}}%{?release:-%{release}}%{?distepoch::%{distepoch}} # GCC toolchain %__cc_gcc gcc %__cxx_gcc g++ %__cpp_gcc gcc -E # Clang toolchain %__cc_clang clang %__cxx_clang clang++ %__cpp_clang clang-cpp # Default to the GCC toolchain %toolchain gcc %__cc %{expand:%%{__cc_%{toolchain}}} %__cxx %{expand:%%{__cxx_%{toolchain}}} %__cpp %{expand:%%{__cpp_%{toolchain}}} # Compiler macros to use for invoking compilers in spec files for packages that # want to use the default compiler and don't care which compiler that is. %build_cc %{__cc} %build_cxx %{__cxx} %build_cpp %{__cpp} #============================================================================== # ---- compiler flags. %_hardening_gcc_cflags -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 %_hardening_clang_cflags --config=/usr/lib/rpm/redhat/redhat-hardened-clang.cfg %_hardening_cflags %{expand:%%{_hardening_%{toolchain}_cflags}} %_hardening_gcc_ldflags -specs=/usr/lib/rpm/redhat/redhat-hardened-ld %_hardening_clang_ldflags --config=/usr/lib/rpm/redhat/redhat-hardened-clang-ld.cfg %_hardening_ldflags %{expand:%%{_hardening_%{toolchain}_ldflags}} # Use "%undefine _hardened_build" to disable. %_hardened_build 1 %_hardened_cflags %{?_hardened_build:%{_hardening_cflags}} %_hardened_ldflags %{?_hardened_build:%{_hardening_ldflags}} # C compiler flags. This is traditionally called CFLAGS in makefiles. # Historically also available as %%{optflags}, and %%build sets the # environment variable RPM_OPT_FLAGS to this value. %build_cflags %{optflags} # C++ compiler flags. This is traditionally called CXXFLAGS in makefiles. %build_cxxflags %{optflags} # Fortran compiler flags. Makefiles use both FFLAGS and FCFLAGS as # the corresponding variable names. %build_fflags %{optflags} %{?_fmoddir:-I%_fmoddir} # Vala compiler flags. This is used to set VALAFLAGS. %build_valaflags -g # Some linkers default to a build-id algoritim that is not supported by rpmbuild, # so we need to specify the right algorithm to use. %_build_id_flags -Wl,--build-id=sha1 # Link editor flags. This is usually called LDFLAGS in makefiles. # (Some makefiles use LFLAGS instead.) The default value assumes that # the flags, while intended for ld, are still passed through the gcc # compiler driver. At the beginning of %%build, the environment # variable RPM_LD_FLAGS to this value. %build_ldflags %{shrink: \ %{?!_disable_ld_as_needed: -Wl,--as-needed} \ %{?!_disable_ld_no_undefined: -Wl,--no-undefined} \ %{?!_disable_ld_relro: -Wl,-z,relro} \ %{?!_disable_ld_now: -Wl,-z,now} \ %{?!_disable_ld_O1: -Wl,-O1} \ %{?!_disable_ld_build_id: %_build_id_flags} \ %{?!_disable_ld_enable_new_dtags: -Wl,--enable-new-dtags} \ %{_hardened_ldflags}} # For compatibility %ldflags %build_ldflags # Expands to shell code to seot the compiler/linker environment # variables CFLAGS, CXXFLAGS, FFLAGS, FCFLAGS, VALAFLAGS, LDFLAGS if they have # not been set already. RPM_OPT_FLAGS and RPM_LD_FLAGS have already # been set implicitly at the start of the %%build section. # LT_SYS_LIBRARY_PATH is used by libtool script. %set_build_flags \ CFLAGS="${CFLAGS:-%{build_cflags}}" ; export CFLAGS ; \ CXXFLAGS="${CXXFLAGS:-%{build_cxxflags}}" ; export CXXFLAGS ; \ FFLAGS="${FFLAGS:-%{build_fflags}}" ; export FFLAGS ; \ FCFLAGS="${FCFLAGS:-%{build_fflags}}" ; export FCFLAGS ; \ VALAFLAGS="${VALAFLAGS:-%{build_valaflags}}" ; export VALAFLAGS ; \ RUSTFLAGS="${RUSTFLAGS:-%{build_rustflags}}" ; export RUSTFLAGS ; \ LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS ; \ LT_SYS_LIBRARY_PATH="${LT_SYS_LIBRARY_PATH:-%_libdir:}" ; export LT_SYS_LIBRARY_PATH \ CC="${CC:-%{__cc}}" ; export CC ; \ CXX="${CXX:-%{__cxx}}" ; export CXX # For compatibility %setup_compile_flags \ %{warn:%%setup_compile_flags is deprecated, use %%set_build_flags instead} \ %set_build_flags %debugcflags %{?_enable_debug_packages:-g} %_fortify_level 3 %_fortify_cflags %[ 0%{?_fortify_level} > 0 ? "-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=%{_fortify_level}" : "" ] # cf http://wiki.mandriva.com/en/Development/Packaging/Problems#format_not_a_string_literal_and_no_format_arguments %Werror_cflags -Wformat -Werror=format-security %_ssp_cflags -fstack-protector-strong %__common_cflags -O2 %{debugcflags} -pipe %{Werror_cflags} %{?_fortify_cflags}%{?_legacy_common_support: -fcommon} %{_hardened_cflags} %__common_cflags_with_ssp %{__common_cflags} %{?_ssp_cflags} # Servers opt flags. # Also set the env variables for backward compatibility (mdv #32050). %serverbuild %define _ssp_cflags -fstack-protector-all \ export CFLAGS="%optflags"; export CXXFLAGS="%optflags"; export RPM_OPT_FLAGS="%optflags" \ %{nil} %make \ %{warn:%%make is deprecated, use %%make_build instead} \ %{__make} -O %_smp_mflags %makeinstall_std \ %{warn:%%makeinstall_std is deprecated, use %%make_install instead} \ make DESTDIR=%{?buildroot:%{buildroot}} install %__fix_libtool_ltmain_from_overlinking @RPMVENDORDIR@/fix-libtool-ltmain-from-overlinking %__fix_libtool_from_moving_options_after_libs @RPMVENDORDIR@/fix-libtool-from-moving-options-after-libs %__fix_dlsearch_path_in_libtool_for_multilib @RPMVENDORDIR@/fix-dlsearch-path-in-libtool-for-multilib # Update config.{guess,sub} %_configure_gnuconfig_hack 1 %before_configure \ %set_build_flags \ CONFIGURE_TOP="${CONFIGURE_TOP:-.}"; \ if [ "%_configure_gnuconfig_hack" = "1" ]; then \ for i in $(find ${CONFIGURE_TOP} -name config.guess -o -name config.sub); do \ [ -f %{_rpmconfigdir}/%{_real_vendor}/$(basename $i) ] && cp -af %{_rpmconfigdir}/%{_real_vendor}/$(basename $i) $i; \ done; \ fi; \ %{?!_disable_ld_as_needed:@RPMVENDORDIR@/force-as-needed-for-shared-lib-in-libtool ;} \ %{?!_disable_ld_no_undefined:@RPMVENDORDIR@/drop-ld-no-undefined-for-shared-lib-modules-in-libtool ;} \ %{__fix_libtool_ltmain_from_overlinking} ; \ %{__fix_libtool_from_moving_options_after_libs} $CONFIGURE_TOP ; \ %{__fix_dlsearch_path_in_libtool_for_multilib} $CONFIGURE_TOP %{_lib} # This is an improved version of %configure (originally from PLD team). %_configure $CONFIGURE_TOP/configure %configure \ %{before_configure}; \ %{_configure} --host=%{_host} --build=%{_build} \\\ --program-prefix=%{?_program_prefix} \\\ --disable-dependency-tracking \\\ --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} %configure2_5x \ %{warn:%%configure2_5x is deprecated, use %%configure instead} \ %configure # Maximum number of CPU's to use when building, 0 for unlimited. %_smp_ncpus_max 0 # Deprecated names. For backwards compatibility only. %__global_cflags %{build_cflags} %__global_cxxflags %{build_cxxflags} %__global_fflags %{build_fflags} %__global_fcflags %{build_fflags} %__global_ldflags %{build_ldflags} #============================================================================== # ---- Build policy macros. # # #--------------------------------------------------------------------- # Expanded at beginning of %install scriptlet. # #============================================================================== # ---- specfile macros. # Macro(s) here can be used reliably for reproducible builds. # (Note: Above is the goal, below are the macros under development) # #------------------------------------------------------------------------------ # Useful perl macros # (initially from Artur Frysiak ) # (modified by Pixel ) # # [...] # Group: Development/Perl # [...] # %build # perl Makefile.PL INSTALLDIRS=vendor # %make # [...] # %install # rm -rf $RPM_BUILD_ROOT # make install PREFIX="$RPM_BUILD_ROOT/%{prefix}" # [...] # %files # %defattr(644,root,root,755) # %{perl_vendorlib}/CGI # or # %{perl_vendorarch}/DBI # %{perl_vendorarch}/auto/DBI # %{_mandir}/*/* # %perl_convert_version() %(perl -Mversion -le ' $x = "%{1}"; $y = $x; $x =~ s/[[:alpha:]]*$//; $y =~ s/^$x//; $x =~ s/\D*$//; $v = version->new($x)->normal; $v =~ s/^v//; print "$v$y"; ') #-------------------------------------------------------------------------------- # Macro from conectiva %rename() \ Obsoletes: %{1} < %{?2:%2}%{?!2:%{?epoch:%epoch}%{?!epoch:0}:%{version}-%{release}} \ Provides: %{1} = %{?2:%2}%{?!2:%{?epoch:%epoch}%{?!epoch:0}:%{version}-%{release}} # Shorthand for %{defined with_...} # macros provided by rpm 4.4, but buggy :( %_with() %{expand: %%{?_with_%1:1} %%{!?_with_%1: %%{?_without_%1:0} %%{!?_without_%1: %%{?with_%1:%%{with_%1}} %%{!?with_%1: %%{?without_%1:!%%{without_%1}} %%{!?without_%1: %%{?2:%%2} %%{!?2:1} } } } } } %_without() !%{expand: %%{with %1 %{?2:%2}}} #------------------------------------------------------------------------------ # Java Macros # %gcj_support 0 %gcj_native \ %if %{gcj_support} \ BuildRequires: java-gcj-compat-devel \ %else \ BuildArch: noarch \ %endif %aot_compile_rpm_bin %{_bindir}/aot-compile-rpm %gcj_compile \ %if %{gcj_support} \ %aot_compile_rpm_bin \ %endif %gcj_files \ %if %{gcj_support} \ %dir %{_libdir}/gcj/%{name} \ %attr(-,root,root) %{_libdir}/gcj/%{name}/* \ %endif %remove_java_binaries \ find . -name "*.jar" -delete %create_jar_links() \ pushd %{buildroot}%{_javadir}; \ for jar in *-%{version}.jar; do ln -sf ${jar} ${jar/-%{version}/}; done \ popd #------------------------------------------------------------------------------ # Ocaml macro # %ocaml_sitelib %(if [ -x /usr/bin/ocamlc ]; then ocamlc -where;fi)/site-lib #------------------------------------------------------------------------------ # Systemd and general service related macros # %_tmpfilescreate() /usr/bin/systemd-tmpfiles --create %{1}.conf \ %{nil} # Minimum versions for various packaging helpers. # These is defined here to easy upgrading from previous distros when the various # service helpers change and thus those pacakges need to be installed first to # ensure a smooth upgrade %rpmhelper_required_version 0.24.11 %systemd_required_version 195 #------------------------------------------------------------------------------ # Redefine RPM sections to allow jumping over them using "--without
". # This an interesting alternative to --short-circuit. # The following are mostly equivalent: # % rpmbuild -bi --short-circuit foo.spec && rpmbuild -bb --short-circuit foo.spec # % rpmbuild -bb --without build foo.spec %prep %%prep \ [ %{_with prep} -eq 1 ] || exit 0 \ [ %{_with build} -eq 1 ] || exit 0 \ [ %{_with install} -eq 1 ] || exit 0 \ %{nil} %build %%build \ [ %{_with install} -eq 1 ] || exit 0 \ [ %{_with build} -eq 1 ] || exit 0 \ %{nil} #--------------------------------------------------------------------- # Expanded at beginning of %install scriptlet. # %__spec_install_pre %{___build_pre}\ if [ %{_with install} -eq 1 ]; then\ [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\ mkdir -p `dirname "$RPM_BUILD_ROOT"`\ mkdir "$RPM_BUILD_ROOT"\ fi #--------------------------------------------------------------------- # Expanded at end of %install scriptlet. %__brp_strip /usr/lib/rpm/brp-strip %{__strip} %__brp_strip_comment_note /usr/lib/rpm/brp-strip-comment-note %{__strip} %{__objdump} %__brp_strip_static_archive /usr/lib/rpm/brp-strip-static-archive %{__strip} %__brp_check_rpaths /usr/lib/rpm/check-rpaths %__brp_remove_la_files /usr/lib/rpm/brp-remove-la-files # __brp_mangle_shebangs_exclude - shebangs to exclude # __brp_mangle_shebangs_exclude_file - file from which to get shebangs to exclude # __brp_mangle_shebangs_exclude_from - files to ignore # __brp_mangle_shebangs_exclude_from_file - file from which to get files to ignore %__brp_mangle_shebangs /usr/lib/rpm/redhat/brp-mangle-shebangs %{?__brp_mangle_shebangs_exclude:--shebangs "%{?__brp_mangle_shebangs_exclude}"} %{?__brp_mangle_shebangs_exclude_file:--shebangs-from "%{__brp_mangle_shebangs_exclude_file}"} %{?__brp_mangle_shebangs_exclude_from:--files "%{?__brp_mangle_shebangs_exclude_from}"} %{?__brp_mangle_shebangs_exclude_from_file:--files-from "%{__brp_mangle_shebangs_exclude_from_file}"} %__arch_install_post /usr/lib/rpm/check-buildroot %__os_install_post \ %{?__spec_helper_post}%{?!__spec_helper_post:/usr/share/spec-helper/spec-helper} \ %{!?__debug_package:\ %{?__brp_strip} \ %{?__brp_strip_comment_note} \ %{?__brp_strip_static_archive} \ } \ %{?__brp_check_rpaths} \ %{?__brp_remove_la_files} \ %{?__brp_mangle_shebangs} \ %{__os_install_post_python} \ %{nil} %__spec_install_post\ %{?__debug_package:%{__debug_install_post}}\ %{__arch_install_post}\ %{__os_install_post}\ %{nil} %install\ %%install\ [ %{_with install} -eq 1 ] || exit 0 \ %{nil} %check %%check \ [ %{_with check} -eq 1 ] || exit 0 \ %{nil} # # Should missing buildids terminate a build? %_missing_build_ids_terminate_build 1 # If enabled, dilute user() and group() requires into recommends %_use_weak_usergroup_deps 1 # Use SHA-256 for FILEDIGESTS instead of default MD5 %_source_filedigest_algorithm 8 %_binary_filedigest_algorithm 8 # Use Zstandard compression for binary payloads %_binary_payload w19.zstdio # Automatically trim changelog entries after 2 years %_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)}