replace source code with tar.gz
This commit is contained in:
parent
a506c4cd18
commit
51911d2381
@ -1,96 +0,0 @@
|
||||
#!/usr/bin/sh
|
||||
|
||||
# Get build root
|
||||
RPM_BUILD_ROOT="${1}"
|
||||
|
||||
# If using normal root, avoid changing anything.
|
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create temporary file listing files in the manifest
|
||||
#[ -n "$TMPDIR" ] || TMPDIR="/tmp"
|
||||
TMPDIR="/tmp"
|
||||
BIN_PKG_FILES=${TMPDIR}/${3%%.rpm}
|
||||
cat - > $BIN_PKG_FILES
|
||||
|
||||
# Ensure temporary file is cleaned up when we exit
|
||||
trap "rm -f \"${BIN_PKG_FILES}\"" 0 2 3 5 10 13 15
|
||||
|
||||
# File empty, exit
|
||||
if [ -z $(head -c 1 $BIN_PKG_FILES) ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create directory for digest lists
|
||||
DIGEST_LIST_DIR=$RPM_BUILD_ROOT/$2/etc/ima/digest_lists
|
||||
mkdir -p $DIGEST_LIST_DIR
|
||||
mkdir -p $DIGEST_LIST_DIR.tlv
|
||||
mkdir -p $DIGEST_LIST_DIR.sig
|
||||
|
||||
# Generate digest list for the kernel
|
||||
gen_digest_lists -i M: -t metadata -f compact -d $DIGEST_LIST_DIR -i l:policy \
|
||||
-i i: -o add -p -1 -m immutable -i L:$BIN_PKG_FILES -i u: \
|
||||
-A $RPM_BUILD_ROOT -i e: \
|
||||
-i F:/lib \
|
||||
-i F:/usr/lib \
|
||||
-i F:/lib64 \
|
||||
-i F:/usr/lib64 \
|
||||
-i F:/lib/modules \
|
||||
-i F:/usr/lib/modules \
|
||||
-i F:/lib/firmware \
|
||||
-i F:/usr/lib/firmware
|
||||
|
||||
f="$DIGEST_LIST_DIR/0-metadata_list-compact-$(basename $BIN_PKG_FILES)"
|
||||
[ -f $f ] || exit 0
|
||||
|
||||
chmod 644 $f
|
||||
echo $f
|
||||
|
||||
# Generate TLV digest list to check metadata
|
||||
gen_digest_lists -i M: -t metadata -f compact -d $DIGEST_LIST_DIR.tlv \
|
||||
-i l:policy -i i: -o add -p -1 -m immutable -i L:$BIN_PKG_FILES -i u: \
|
||||
-T -A $RPM_BUILD_ROOT -i e: \
|
||||
-i F:/lib \
|
||||
-i F:/usr/lib \
|
||||
-i F:/lib64 \
|
||||
-i F:/usr/lib64 \
|
||||
-i F:/lib/modules \
|
||||
-i F:/usr/lib/modules \
|
||||
-i F:/lib/firmware \
|
||||
-i F:/usr/lib/firmware
|
||||
|
||||
f="$DIGEST_LIST_DIR.tlv/0-metadata_list-compact_tlv-$(basename $BIN_PKG_FILES)"
|
||||
[ -f $f ] || exit 0
|
||||
|
||||
chmod 644 $f
|
||||
echo $f
|
||||
|
||||
if [[ "$(basename $BIN_PKG_FILES)" =~ "digest-list-tools" && \
|
||||
! $(basename $BIN_PKG_FILES) =~ "debug" ]]; then
|
||||
# Generate digest list for the user space parsers
|
||||
LD_LIBRARY_PATH=$RPM_BUILD_ROOT/usr/lib64 \
|
||||
$RPM_BUILD_ROOT/usr/bin/gen_digest_lists \
|
||||
-d $DIGEST_LIST_DIR -t parser -f compact -m immutable \
|
||||
-i I:$RPM_BUILD_ROOT/usr/libexec -o add -p -1 -i i:
|
||||
|
||||
f="$DIGEST_LIST_DIR/0-parser_list-compact-libexec"
|
||||
[ -f $f ] || exit 0
|
||||
|
||||
chmod 644 $f
|
||||
echo $f
|
||||
|
||||
[ -f /usr/lib/rpm/brp-suse.d/brp-99-pesign ] || exit 0
|
||||
|
||||
BRP_PESIGN_FILES="$2/etc/ima/digest_lists/*"
|
||||
export BRP_PESIGN_FILES
|
||||
export RPM_BUILD_ROOT
|
||||
RPM_PACKAGE_NAME="digest-list-tools"
|
||||
export RPM_PACKAGE_NAME
|
||||
RPM_SOURCE_DIR="$(rpm --eval %_topdir)/SOURCES"
|
||||
export RPM_SOURCE_DIR
|
||||
|
||||
if [ -f "/usr/lib/rpm/brp-suse.d/brp-99-pesign" ]; then
|
||||
/usr/lib/rpm/brp-suse.d/brp-99-pesign &> /dev/null
|
||||
fi
|
||||
fi
|
||||
@ -1,8 +0,0 @@
|
||||
#!/bin/sh -efu
|
||||
|
||||
# If using normal root, avoid changing anything.
|
||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
/sbin/ldconfig -N -r "$RPM_BUILD_ROOT"
|
||||
1462
config.guess
vendored
1462
config.guess
vendored
File diff suppressed because it is too large
Load Diff
1823
config.sub
vendored
1823
config.sub
vendored
File diff suppressed because it is too large
Load Diff
25
fix-error-message-for-kmodtool.patch
Normal file
25
fix-error-message-for-kmodtool.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 177688aa4c6888a693da0ee7a06e01066cde4c54 Mon Sep 17 00:00:00 2001
|
||||
From: Yangyang Shen <shenyangyang4@huawei.com>
|
||||
Date: Wed, 30 Sep 2020 14:45:14 +0800
|
||||
Subject: [PATCH] fix error message for kmodtool
|
||||
|
||||
---
|
||||
kmodtool.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kmodtool.py b/kmodtool.py
|
||||
index 724f481..75492b9 100644
|
||||
--- a/kmodtool.py
|
||||
+++ b/kmodtool.py
|
||||
@@ -39,7 +39,7 @@ def get_rpmtemplate(kmod_name,verrel):
|
||||
print("This package provides the " + kmod_name + " kernel modules built for the Linux")
|
||||
print("kernel "+ verrel + " for the %{_target_cpu} family of processors.")
|
||||
print("%post -n kmod-" + kmod_name)
|
||||
- print("if [ -e /boot/System.map-" + verrel + "]; then")
|
||||
+ print("if [ -e /boot/System.map-" + verrel + " ]; then")
|
||||
print(" /sbin/depmod -aeF /boot/System.map-" + verrel +" " + verrel +"> /dev/null || :")
|
||||
print("fi")
|
||||
if (kmp !=""):
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@ -2,29 +2,14 @@
|
||||
|
||||
Name: %{vendor}-rpm-config
|
||||
Version: 30
|
||||
Release: 14
|
||||
Release: 15
|
||||
License: GPL+
|
||||
Summary: specific rpm configuration files
|
||||
URL: https://gitee.com/src-openeuler/openEuler-rpm-config
|
||||
URL: https://gitee.com/openeuler/openEuler-rpm-config
|
||||
|
||||
Source1: brp-ldconfig
|
||||
Source2: rpmrc
|
||||
Source3: macros
|
||||
Source4: config.guess
|
||||
Source5: config.sub
|
||||
Source6: kmodtool.py
|
||||
Source0: https://gitee.com/openeuler/openEuler-rpm-config/repository/archive/%{version}.tar.gz
|
||||
|
||||
Source10: macros.perl
|
||||
Source11: macros.python
|
||||
Source12: macros.go
|
||||
Source13: macros.forge
|
||||
Source14: macros.kmp
|
||||
|
||||
Source20: openEuler-hardened-cc1
|
||||
Source21: openEuler-hardened-ld
|
||||
Source22: openEuler-pie-cc1
|
||||
Source23: openEuler-pie-ld
|
||||
SOurce24: brp-digest-list
|
||||
Patch0: fix-error-message-for-kmodtool.patch
|
||||
|
||||
Provides: python-rpm-macros = %{version}-%{release}
|
||||
Provides: python2-rpm-macros = %{version}-%{release}
|
||||
@ -87,8 +72,7 @@ Summary: Macros and scripts for building kernel module packages
|
||||
Macros and scripts for building kernel module packages.
|
||||
|
||||
%prep
|
||||
%setup -c -T
|
||||
cp -p %{sources} .
|
||||
%autosetup -n %{name} -p1
|
||||
|
||||
%install
|
||||
mkdir -p %{buildroot}%{rpmvdir}
|
||||
@ -99,7 +83,7 @@ install -p -m 644 -t %{buildroot}%{rpmvdir} openEuler-*
|
||||
install -p -m 755 -t %{buildroot}%{rpmvdir} kmodtool.py
|
||||
|
||||
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d
|
||||
install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d/ %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14}
|
||||
install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d/ macros.perl macros.python macros.go macros.forge macros.kmp
|
||||
|
||||
mkdir -p %{buildroot}%{_fileattrsdir}
|
||||
|
||||
@ -119,6 +103,9 @@ mkdir -p %{buildroot}%{_fileattrsdir}
|
||||
%{_rpmconfigdir}/macros.d/macros.kmp
|
||||
|
||||
%changelog
|
||||
* Wed Sep 30 2020 shenyangyang <shenyangyang4@huawei.com> - 30-15
|
||||
- Change the source code to tar
|
||||
|
||||
* Fri Aug 21 2020 Wang Shuo <wangshuo_1994@foxmail.com> - 30-14
|
||||
- fix error message for kmodtool
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
version_control: NA
|
||||
src_repo: NA
|
||||
tag_prefix: NA
|
||||
seperator: NA
|
||||
version_control: gitee
|
||||
src_repo: https://gitee.com/openeuler/openEuler-rpm-config
|
||||
tag_prefix: "^"
|
||||
seperator: "."
|
||||
|
||||
83
kmodtool.py
83
kmodtool.py
@ -1,83 +0,0 @@
|
||||
# -*- coding: UTF-8 -*-
|
||||
#!/usr/bin/python3
|
||||
|
||||
# kmodtool - Helper script for building kernel module RPMs
|
||||
|
||||
import os,subprocess,sys
|
||||
|
||||
def print_verrel ():
|
||||
#verrel=subprocess.getoutput("(rpm -q --qf '%{VERSION}-%{RELEASE}' `rpm -q kernel-devel` | head -n 1)")
|
||||
# if (len(verrel)== 0):
|
||||
verrel=subprocess.getoutput("uname -r")
|
||||
return verrel
|
||||
|
||||
def print_rpmtemplate():
|
||||
kmod_name = sys.argv[2]
|
||||
# verrel=subprocess.getoutput("(rpm -q --qf '%{VERSION}-%{RELEASE}' `rpm -q kernel-devel` | head -n 1)")
|
||||
# if (len(verrel)== 0):
|
||||
verrel=subprocess.getoutput("uname -r")
|
||||
|
||||
if not kmod_name:
|
||||
print("Please provide the kmodule-name as first parameter.")
|
||||
exit()
|
||||
get_rpmtemplate(kmod_name,verrel)
|
||||
|
||||
|
||||
def get_rpmtemplate(kmod_name,verrel):
|
||||
print("%package -n kmod-" + kmod_name)
|
||||
print("Summary: " + kmod_name + " " + "kernel module(s)")
|
||||
print("Group: System Environment/Kernel")
|
||||
if "%{version}":
|
||||
print("Version: %{version}")
|
||||
if "%{release}":
|
||||
print("Release: %{release}")
|
||||
print("Provides: kernel-modules =" + " " + verrel)
|
||||
print("Provides: "+ kmod_name + "-kmod = %{?epoch:%{epoch}:}%{version}-%{release}")
|
||||
print("Requires(post): /usr/sbin/depmod")
|
||||
print("Requires(postun): /usr/sbin/depmod")
|
||||
print("%description -n kmod-" + kmod_name)
|
||||
print("This package provides the " + kmod_name + " kernel modules built for the Linux")
|
||||
print("kernel "+ verrel + " for the %{_target_cpu} family of processors.")
|
||||
print("%post -n kmod-" + kmod_name)
|
||||
print("if [ -e /boot/System.map-" + verrel + " ]; then")
|
||||
print(" /sbin/depmod -aeF /boot/System.map-" + verrel +" " + verrel +"> /dev/null || :")
|
||||
print("fi")
|
||||
if (kmp !=""):
|
||||
print("modules=( $(find /lib/modules/" + verrel + "/extra/" + kmod_name + ") )")
|
||||
print("""if [ -x "/sbin/weak-modules" ]; then
|
||||
printf '%s\\n' "${modules[@]}" | /sbin/weak-modules --add-modules
|
||||
fi""")
|
||||
print("%preun -n kmod-" + kmod_name)
|
||||
print("rpm -ql kmod-" + kmod_name + "| grep '\.ko$' > /var/run/rpm-kmod-" + kmod_name +"-modules")
|
||||
|
||||
print("%postun -n kmod-" + kmod_name)
|
||||
print("/sbin/depmod -aF /boot/System.map-" + verrel+" " + verrel + " &> /dev/null || :")
|
||||
|
||||
if (kmp !=""):
|
||||
print("modules=( $(cat /var/run/rpm-kmod-" + kmod_name + "-modules) )")
|
||||
print("#rm /var/run/rpm-kmod-" + kmod_name + "-modules")
|
||||
print("""if [ -x "/sbin/weak-modules" ]; then
|
||||
printf '%s\\n' "${modules[@]}" | /sbin/weak-modules --remove-modules
|
||||
fi""")
|
||||
|
||||
print("%files -n kmod-" + kmod_name)
|
||||
kmp_override_filelist= sys.argv[3]
|
||||
if kmp_override_filelist == '%filelist':
|
||||
print("%defattr(644,root,root,755)")
|
||||
print("/lib/modules/" + verrel)
|
||||
print("/lib/firmware/")
|
||||
else:
|
||||
with open(kmp_override_filelist) as f:
|
||||
for line in f:
|
||||
print(line, end = '')
|
||||
|
||||
#for i in range(len(sys.argv)):
|
||||
if (sys.argv[1] == "verrel"):
|
||||
print_verrel()
|
||||
if (sys.argv[1] == "rpmtemplate_kmp"):
|
||||
kmp=1
|
||||
print_rpmtemplate()
|
||||
else:
|
||||
print("Error: Unknown option 'sys.argv[i]'.")
|
||||
exit()
|
||||
|
||||
306
macros
306
macros
@ -1,306 +0,0 @@
|
||||
# Per-platform rpm configuration file.
|
||||
|
||||
%_vendor openEuler
|
||||
%_os linux
|
||||
%_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu}
|
||||
|
||||
#==============================================================================
|
||||
# ---- configure macros. note that most of these are inherited
|
||||
# from the defaults.
|
||||
#
|
||||
%_localstatedir /var
|
||||
|
||||
%_pkgdocdir %{_docdir}/%{name}
|
||||
%_docdir_fmt %%{NAME}
|
||||
|
||||
%_fmoddir %{_libdir}/gfortran/modules
|
||||
|
||||
%_enable_debug_packages 1
|
||||
#%_include_minidebuginfo 1
|
||||
%_include_gdb_index 1
|
||||
%_debugsource_packages 1
|
||||
#%_debuginfo_subpackages 1
|
||||
|
||||
%_build_id_links none
|
||||
|
||||
#==============================================================================
|
||||
# ---- compiler flags.
|
||||
|
||||
%build_cflags %{optflags}
|
||||
%build_cxxflags %{optflags}
|
||||
%build_fflags %{optflags} -I%{_fmoddir}
|
||||
%build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags}
|
||||
|
||||
%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 ; \
|
||||
LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS
|
||||
|
||||
#For backwards compatibility only.
|
||||
%__global_cflags %{build_cflags}
|
||||
%__global_cxxflags %{build_cxxflags}
|
||||
%__global_fflags %{build_fflags}
|
||||
%__global_fcflags %{build_fflags}
|
||||
%__global_ldflags %{build_ldflags}
|
||||
|
||||
#==============================================================================
|
||||
# ---- configure and makeinstall.
|
||||
%_configure_gnuconfig_hack 1
|
||||
%_configure_libtool_hardening_hack 1
|
||||
%configure \
|
||||
%{set_build_flags}; \
|
||||
[ "%_configure_gnuconfig_hack" = 1 ] && for i in $(find $(dirname %{_configure}) -name config.guess -o -name config.sub) ; do \
|
||||
[ -f /usr/lib/rpm/openEuler/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/openEuler/$(basename $i) $i ; \
|
||||
done ; \
|
||||
[ "%_configure_libtool_hardening_hack" = 1 ] && [ x != "x%{_hardened_ldflags}" ] && \
|
||||
for i in $(find . -name ltmain.sh) ; do \
|
||||
%{__sed} -i.backup -e 's~compiler_flags=$~compiler_flags="%{_hardened_ldflags}"~' $i \
|
||||
done ; \
|
||||
%{_configure} --build=%{_build} --host=%{_host} \\\
|
||||
--program-prefix=%{?_program_prefix} \\\
|
||||
--disable-dependency-tracking \\\
|
||||
%{?_configure_disable_silent_rules:--disable-silent-rules} \\\
|
||||
--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}
|
||||
|
||||
# ---- Build policy macros.
|
||||
|
||||
%__spec_install_pre %{___build_pre}\
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\
|
||||
mkdir -p `dirname "$RPM_BUILD_ROOT"`\
|
||||
mkdir "$RPM_BUILD_ROOT"\
|
||||
%{nil}
|
||||
|
||||
# ---- Expanded at end of %install scriptlet.
|
||||
%__arch_install_post /usr/lib/rpm/check-buildroot
|
||||
|
||||
# Build root policy macros. Standard naming:
|
||||
# convert all '-' in basename to '_', add two leading underscores.
|
||||
%__brp_ldconfig /usr/lib/rpm/openEuler/brp-ldconfig
|
||||
%__brp_compress /usr/lib/rpm/brp-compress
|
||||
%__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_python_bytecompile /usr/lib/rpm/brp-python-bytecompile "%{__python}" "%{?_python_bytecompile_errors_terminate_build}" "%{?_python_bytecompile_extra}"
|
||||
%__brp_python_hardlink /usr/lib/rpm/brp-python-hardlink
|
||||
|
||||
%__os_install_post \
|
||||
%{?__brp_ldconfig} \
|
||||
%{?__brp_compress} \
|
||||
%{!?__debug_package:\
|
||||
%{?__brp_strip} \
|
||||
%{?__brp_strip_comment_note} \
|
||||
} \
|
||||
%{?__brp_strip_static_archive} \
|
||||
%{?py_auto_byte_compile:%{?__brp_python_bytecompile}} \
|
||||
%{?__brp_python_hardlink} \
|
||||
%{nil}
|
||||
|
||||
%__spec_install_post\
|
||||
%{?__debug_package:%{__debug_install_post}}\
|
||||
%{__arch_install_post}\
|
||||
%{__os_install_post}\
|
||||
%{nil}
|
||||
|
||||
%install %{?_enable_debug_packages:%{?buildsubdir:%{debug_package}}}\
|
||||
%%install\
|
||||
%{nil}
|
||||
|
||||
#
|
||||
# Should missing buildids terminate a build?
|
||||
%_missing_build_ids_terminate_build 1
|
||||
|
||||
#
|
||||
## Automatically compile python files
|
||||
%py_auto_byte_compile 1
|
||||
|
||||
#
|
||||
## Should python bytecompilation errors terminate a build?
|
||||
%_python_bytecompile_errors_terminate_build 1
|
||||
## Should python bytecompilation compile outisde python specific directories?
|
||||
%_python_bytecompile_extra 1
|
||||
|
||||
# Use SHA-256 for FILEDIGESTS instead of default MD5
|
||||
%_source_filedigest_algorithm 8
|
||||
%_binary_filedigest_algorithm 8
|
||||
|
||||
# Use XZ compression for binary payloads
|
||||
%_binary_payload w2.xzdio
|
||||
|
||||
|
||||
# secure options for rpmbuild
|
||||
#
|
||||
# #hardened options
|
||||
%_hardening_cflags -specs=/usr/lib/rpm/%{_vendor}/openEuler-hardened-cc1
|
||||
%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/%{_vendor}/openEuler-hardened-ld
|
||||
# Use "%undefine _hardened_build" to disable.
|
||||
%_hardened_build 1
|
||||
%_hardened_cflags %{?_hardened_build:%{_hardening_cflags}}
|
||||
%_hardened_ldflags %{?_hardened_build:%{_hardening_ldflags}}
|
||||
|
||||
#secure options pie
|
||||
%_sec_opt_build 1
|
||||
#Use "%undefine _sec_opt_build" to disable.
|
||||
#Use "%undefine _pie_build" to disable.
|
||||
%_pie_build 1
|
||||
%_pie_pre_cflags -specs=/usr/lib/rpm/%{_vendor}/openEuler-pie-cc1
|
||||
%_pie_pre_ldflags -Wl,-z,now -specs=/usr/lib/rpm/%{_vendor}/openEuler-pie-ld
|
||||
%_pie_cflags %{?_sec_opt_build:?_pie_build:%{_pie_pre_cflags}}
|
||||
%_pie_ldflags %{?_sec_opt_build:?_pie_build:%{_pie_pre_ldflags}}
|
||||
|
||||
#Use "%undefine _fs_build" to disable.
|
||||
%_fs_build 1
|
||||
%_fs_pre_cflags -specs=/usr/lib/rpm/%{_vendor}/openEuler-fs-cc1
|
||||
%_fs_cflags %{?_fs_build:%{_fs_pre_cflags}}
|
||||
|
||||
|
||||
# Fail linking if there are undefined symbols. Required for proper
|
||||
# ELF symbol versioning support. Disabled by default.
|
||||
# Use "%define _ld_strict_symbol_defs 1" to enable.
|
||||
#%_ld_strict_symbol_defs 1
|
||||
%_ld_symbols_flags %{?_ld_strict_symbol_defs:-Wl,-z,defs}
|
||||
|
||||
# use "%define _ld_as_needed 1" to enable.
|
||||
#%_ld_as_needed 1
|
||||
%_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}
|
||||
|
||||
%__global_compiler_flags -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches %{_hardened_cflags}
|
||||
|
||||
# Automatically trim changelog entries after 2 years
|
||||
%_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)}
|
||||
|
||||
#==============================================================================
|
||||
# ---- Generic auto req/prov filtering macros
|
||||
|
||||
# prevent anything matching from being scanned for provides
|
||||
%filter_provides_in(P) %{expand: \
|
||||
%global __filter_prov_cmd %{?__filter_prov_cmd} %{__grep} -v %{-P} '%*' | \
|
||||
}
|
||||
|
||||
# prevent anything matching from being scanned for requires
|
||||
%filter_requires_in(P) %{expand: \
|
||||
%global __filter_req_cmd %{?__filter_req_cmd} %{__grep} -v %{-P} '%*' | \
|
||||
}
|
||||
|
||||
# filter anything matching out of the provides stream
|
||||
%filter_from_provides() %{expand: \
|
||||
%global __filter_from_prov %{?__filter_from_prov} | %{__sed} -e '%*' \
|
||||
}
|
||||
|
||||
# filter anything matching out of the requires stream
|
||||
%filter_from_requires() %{expand: \
|
||||
%global __filter_from_req %{?__filter_from_req} | %{__sed} -e '%*' \
|
||||
}
|
||||
|
||||
# actually set up the filtering bits
|
||||
%filter_setup %{expand: \
|
||||
%global _use_internal_dependency_generator 0 \
|
||||
%global __deploop() while read FILE; do echo "${FILE}" | /usr/lib/rpm/rpmdeps -%{1}; done | /bin/sort -u \
|
||||
%global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \
|
||||
%global __find_requires /bin/sh -c "%{?__filter_req_cmd} %{__deploop R} %{?__filter_from_req}" \
|
||||
}
|
||||
|
||||
# compare two versions, returns -1, 0, 1, ~~~
|
||||
%rpm_vercmp() %{lua:print(rpm.expand('%1') == '~~~' and '~~~' or rpm.vercmp(rpm.expand('%1'), rpm.expand('%2')))}
|
||||
# expand to the installed version of a package/provides
|
||||
%pkg_version() %(LC_ALL=C rpm -q --whatprovides --qf "%%{version}" "%1" | sed -e "s/^no package provides .*/~~~/")
|
||||
# compare the installed version to a value. returns -1, 0, 1, ~~~
|
||||
%pkg_version_cmp() %{expand:%{expand:%%%%{rpm_vercmp %%{pkg_version %1} %%2}}}
|
||||
# convenience/readability
|
||||
%pkg_vcmp() (%{expand:%%{pkg_version_cmp %1 %3}} %2 0)
|
||||
|
||||
#arches macros
|
||||
%generic_arches %{ix86} x86_64 %{arm} aarch64
|
||||
%ldc_arches %{generic_arches}
|
||||
%valgrind_arches %{generic_arches}
|
||||
%nodejs_arches %{generic_arches}
|
||||
%ldc_arches %{generic_arches}
|
||||
%mono_arches %{generic_arches}
|
||||
%fpc_arches %{generic_arches}
|
||||
%ghc_arches_with_ghci %{generic_arches}
|
||||
%ghc_arches %{generic_arches}
|
||||
%GNAT_arches %{GPRbuild_arches} %{generic_arches}
|
||||
%GPRbuild_arches %{generic_arches}
|
||||
%nim_arches %{generic_arches}
|
||||
%nodejs_arches %{generic_arches}
|
||||
%ocaml_native_compiler %{generic_arches}
|
||||
%ocaml_natdynlink %{generic_arches}
|
||||
%ocaml_native_profiling %{generic_arches}
|
||||
%openblas_arches %{generic_arches}
|
||||
|
||||
#%ldconfig /sbin/ldconfig
|
||||
%ldconfig_post(n:) %{?ldconfig:%post -p %ldconfig %{?*} %{-n:-n %{-n*}}\
|
||||
%end}
|
||||
%ldconfig_postun(n:) %{?ldconfig:%postun -p %ldconfig %{?*} %{-n:-n %{-n*}}\
|
||||
%end}
|
||||
%ldconfig_scriptlets(n:) %{?ldconfig:\
|
||||
%ldconfig_post %{?*} %{-n:-n %{-n*}}\
|
||||
%ldconfig_postun %{?*} %{-n:-n %{-n*}}\
|
||||
}
|
||||
|
||||
# Some miscellaneous macros
|
||||
%_metainfodir %{_datadir}/metainfo
|
||||
%rpmmacrodir /usr/lib/rpm/macros.d
|
||||
|
||||
# arches that mono builds on
|
||||
%_monogacdir %{_monodir}/gac
|
||||
%_monodir %{_prefix}/lib/mono
|
||||
|
||||
# ---- VPATH default settings
|
||||
%_vpath_builddir %_target_platform
|
||||
%_vpath_srcdir .
|
||||
|
||||
|
||||
# ---- custom macros
|
||||
%disable_rpath \
|
||||
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool \
|
||||
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
|
||||
|
||||
%delete_la_and_a \
|
||||
find $RPM_BUILD_ROOT -type f -name "*.la" -delete \
|
||||
find $RPM_BUILD_ROOT -type f -name "*.a" -delete
|
||||
|
||||
%delete_la find $RPM_BUILD_ROOT -type f -name "*.la" -delete
|
||||
|
||||
%chrpath_delete find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "\<ELF\>" | awk -F ':' '{print $1}' | xargs -i chrpath --delete {}
|
||||
|
||||
%package_help \
|
||||
%package help \
|
||||
Summary: Documents for %{name} \
|
||||
Buildarch: noarch \
|
||||
Requires: man info \
|
||||
\
|
||||
%description help \
|
||||
Man pages and other related documents for %{name}.
|
||||
|
||||
#%sbin_installinfo_rm bc.info
|
||||
#%sbin_installinfo_rm bc.info.gz
|
||||
|
||||
%install_info() \
|
||||
/sbin/install-info %1 %{_infodir}/dir || :
|
||||
|
||||
%install_info_rm() \
|
||||
/sbin/install-info --remove %1 %{_infodir}/dir || :
|
||||
|
||||
# macros that used for perl
|
||||
%__perl /usr/bin/perl
|
||||
%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)
|
||||
283
macros.forge
283
macros.forge
@ -1,283 +0,0 @@
|
||||
# Map forge information to rpm metadata. This macro will compute default spec
|
||||
# variable values.
|
||||
#
|
||||
# The following spec variables SHOULD be set before calling the macro:
|
||||
#
|
||||
# forgeurl the project url on the forge, strongly recommended;
|
||||
# alternatively, use -u <url>
|
||||
# Version if applicable, set it with Version: <version>
|
||||
# tag if applicable
|
||||
# commit if applicable
|
||||
# date if applicable (to override the mtime of the Source archive)
|
||||
#
|
||||
# The macro will attempt to compute and set the following variables if they are
|
||||
# not already set by the packager:
|
||||
#
|
||||
# forgesource an URL that can be used as SourceX: value
|
||||
# forgesetupargs the correct arguments to pass to %setup for this source
|
||||
# used by %forgesetup and %forgeautosetup
|
||||
# archivename the source archive filename, without extentions
|
||||
# archiveext the source archive filename extensions, without leading dot
|
||||
# archiveurl the url that can be used to download the source archive,
|
||||
# without renaming
|
||||
# scm the scm type, when packaging code snapshots: commits or tags
|
||||
#
|
||||
# If the macro is unable to parse your forgeurl value set at least archivename
|
||||
# and archiveurl before calling it.
|
||||
#
|
||||
# Most of the computed variables are both overridable and optional. However,
|
||||
# the macro WILL REDEFINE %{dist} when packaging a snapshot (commit or tag).
|
||||
# The previous %{dist} value will be lost. Don’t call the macro if you don’t
|
||||
# wish %{dist} to be changed.
|
||||
#
|
||||
# Optional parameters:
|
||||
# -u <url> Ignore forgeurl even if it exists and use <url> instead. Note
|
||||
# that the macro will still end up setting <url> as the forgeurl
|
||||
# spec variable if it manages to parse it.
|
||||
# -s Silently ignore problems in forgeurl, use it if it can be parsed,
|
||||
# ignore it otherwise.
|
||||
# -p Restore problem handling, override -s.
|
||||
# -v Be verbose and print every spec variable the macro sets.
|
||||
# -i Print some info about the state of spec variables the macro may use or
|
||||
# set at the end of the processing.
|
||||
%forgemeta(u:spvi) %{lua:
|
||||
local forgeurl = rpm.expand("%{?-u*}")
|
||||
if (forgeurl == "") then
|
||||
forgeurl = rpm.expand("%{?forgeurl}")
|
||||
end
|
||||
local silent = false
|
||||
local verbose = false
|
||||
local informative = false
|
||||
if (rpm.expand("%{?-s}") ~= "") then
|
||||
silent = true
|
||||
end
|
||||
if (rpm.expand("%{?-p}") ~= "") then
|
||||
silent = false
|
||||
end
|
||||
if (rpm.expand("%{?-v}") ~= "") then
|
||||
verbose = true
|
||||
end
|
||||
if (rpm.expand("%{?-i}") ~= "") then
|
||||
informative = true
|
||||
end
|
||||
local tag = rpm.expand("%{?tag}")
|
||||
local commit = rpm.expand("%{?commit}")
|
||||
-- Be explicit about the spec variables we’re setting
|
||||
local function explicitset(rpmvariable,value)
|
||||
rpm.define(rpmvariable .. " " .. value)
|
||||
if verbose then
|
||||
rpm.expand("%{echo:Setting %%{" .. rpmvariable .. "} = " .. value .. "\\n}")
|
||||
end
|
||||
end
|
||||
-- Never ever stomp on a spec variable the packager already set
|
||||
local function safeset(rpmvariable,value)
|
||||
if (rpm.expand("%{?" .. rpmvariable .. "}") == "") then
|
||||
explicitset(rpmvariable,value)
|
||||
end
|
||||
end
|
||||
-- Set spec variable values for each known software publishing service
|
||||
if (forgeurl ~= "") then
|
||||
local forge = string.match(forgeurl, "^[^:]+://([^/]+)/")
|
||||
if (forge == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:URLs must include a protocol such as https:// and a path starting with / !\\n}")
|
||||
end
|
||||
else
|
||||
if (string.match(forge, "^gitlab[%.-]") or string.match(forge, "[%.-]gitlab[%.]")) then
|
||||
forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+")
|
||||
if (forgeurl == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:Gitlab URLs must match https://(…[-.])gitlab[-.]…/owner/repo !\\n}")
|
||||
end
|
||||
else
|
||||
explicitset("forgeurl", forgeurl)
|
||||
if (commit == "") then
|
||||
rpm.expand("%{error:All Gitlab URLs require commit value knowledge: you need to define %{commit}!\\nPlease vote on https://gitlab.com/gitlab-org/gitlab-ce/issues/38830\\n}")
|
||||
end
|
||||
safeset("archiveext", "tar.bz2")
|
||||
safeset("forgesetupargs", "-n %{archivename}")
|
||||
if (commit ~= "") or (tag ~= "") then
|
||||
safeset("scm", "git")
|
||||
end
|
||||
local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)")
|
||||
local repo = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)")
|
||||
local version = rpm.expand("%{?version}")
|
||||
if (version ~= "") and (version ~= "0") and (tag == "") then
|
||||
-- GitLab does not have strong versionning semantics
|
||||
-- Some projects use "version" as release tag, others "v" + "version"
|
||||
-- Tag value needs to be explicitly declared before calling the macro
|
||||
-- in the second case
|
||||
tag = version
|
||||
safeset("tag", tag)
|
||||
end
|
||||
if (tag ~= "") then
|
||||
safeset("archivename", repo .. "-%{tag}-%{commit}")
|
||||
safeset("archiveurl", "%{forgeurl}/repository/%{tag}/archive.%{archiveext}")
|
||||
else
|
||||
safeset("archivename", repo .. "-%{commit}")
|
||||
safeset("archiveurl", "%{forgeurl}/repository/%{commit}/archive.%{archiveext}")
|
||||
end
|
||||
end
|
||||
end
|
||||
if (string.match(forge, "^github[%.-]") or string.match(forge, "[%.-]github[%.]")) then
|
||||
forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+")
|
||||
if (forgeurl == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:GitHub URLs must match https://(…[-.])github[-.]…/owner/repo !\\n}")
|
||||
end
|
||||
else
|
||||
explicitset("forgeurl", forgeurl)
|
||||
safeset("archiveext", "tar.gz")
|
||||
local forgesetupargs = "-n %{archivename}"
|
||||
if (commit ~= "") or (tag ~= "") then
|
||||
safeset("scm", "git")
|
||||
end
|
||||
local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)")
|
||||
local repo = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)")
|
||||
if (tag ~= "") then
|
||||
-- if upstream used a version suffix such as -rc1 or -beta it will not
|
||||
-- be a valid version string for rpm but github will accept it fine and
|
||||
-- use the same naming as for other versions: v prefix in the tag and
|
||||
-- archivename, no v prefix in the topdir naming inside the archive
|
||||
local version = rpm.expand("%{?version}")
|
||||
if version ~= "" and
|
||||
(string.match(tag, "^v" .. version .. "[^%d]") or
|
||||
string.match(tag, "^v" .. version .. "$")) then
|
||||
forgesetupargs = "-n " .. repo .. "-" .. string.gsub(tag, "^v", "")
|
||||
end
|
||||
safeset("archivename", repo .. "-%{tag}")
|
||||
safeset("archiveurl", "%{forgeurl}/archive/%{tag}.%{archiveext}")
|
||||
else
|
||||
if (commit ~= "") then
|
||||
safeset("archivename", repo .. "-%{commit}")
|
||||
safeset("archiveurl", "%{forgeurl}/archive/%{commit}/" .. repo .. "-%{commit}.%{archiveext}")
|
||||
else
|
||||
safeset("archivename", repo .. "-%{version}")
|
||||
safeset("archiveurl", "%{forgeurl}/archive/v%{version}.%{archiveext}")
|
||||
end
|
||||
end
|
||||
safeset("forgesetupargs", forgesetupargs)
|
||||
end
|
||||
end
|
||||
if (forge == "code.googlesource.com") then
|
||||
forgeurl = string.match(forgeurl, "https://code.googlesource.com/[^#?]*[^/#?]+")
|
||||
if (forgeurl == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:Googlesource URLs must match https://code.googlesource.com/…/repo !\\n}")
|
||||
end
|
||||
else
|
||||
explicitset("forgeurl", forgeurl)
|
||||
safeset("archiveext", "tar.gz")
|
||||
safeset("forgesetupargs", "-c")
|
||||
if (commit ~= "") or (tag ~= "") then
|
||||
safeset("scm", "git")
|
||||
end
|
||||
local repo = string.match(forgeurl, "^[^:]+://.+/([^/?#]+)")
|
||||
if (tag ~= "") then
|
||||
safeset("archivename", repo .. "-%{tag}")
|
||||
safeset("archiveurl", "%{forgeurl}/+archive/%{tag}.%{archiveext}")
|
||||
else
|
||||
if (commit ~= "") then
|
||||
safeset("archivename", repo .. "-%{commit}")
|
||||
safeset("archiveurl", "%{forgeurl}/+archive/%{commit}.%{archiveext}")
|
||||
else
|
||||
safeset("archivename", repo .. "-v%{version}")
|
||||
safeset("archiveurl", "%{forgeurl}/+archive/v%{version}.%{archiveext}")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if (forge == "bitbucket.org") then
|
||||
forgeurl = string.match(forgeurl, "https://[^/]+/[^/]+/[^/#?]+")
|
||||
if (forgeurl == nil) then
|
||||
if not silent then
|
||||
rpm.expand("%{error:BitBucket URLs must match https://bitbucket.org/owner/repo !\\n}")
|
||||
end
|
||||
else
|
||||
explicitset("forgeurl", forgeurl)
|
||||
if (commit == "") then
|
||||
rpm.expand("%{error:All BitBucket URLs require commit value knowledge: you need to define %{commit}!\\n}")
|
||||
end
|
||||
local shortcommit = string.sub(commit, 1, 12)
|
||||
safeset("archiveext", "tar.bz2")
|
||||
-- Default to git even though BitBucket allows choosing between several SCMs
|
||||
-- Set scm to hg for example before calling the macro if your project does not use git
|
||||
safeset("scm", "git")
|
||||
local owner = string.match(forgeurl, "^[^:]+://[^/]+/([^/]+)")
|
||||
local repo = string.match(forgeurl, "^[^:]+://[^/]+/[^/]+/([^/]+)")
|
||||
safeset("archivename", owner .. "-" .. repo .. "-" .. shortcommit)
|
||||
safeset("forgesetupargs", "-n %{archivename}")
|
||||
if (tag ~= "") then
|
||||
safeset("archiveurl", "%{forgeurl}/get/%{tag}.%{archiveext}")
|
||||
else
|
||||
safeset("archiveurl", "%{forgeurl}/get/%{commit}.%{archiveext}")
|
||||
end
|
||||
end
|
||||
end
|
||||
if (forge == "pagure.io") then
|
||||
if not silent then
|
||||
rpm.expand("%{error:https://pagure.io/pagure/issue/861 needs to be resolved before the “pagure.io”\\nsoftware publishing service can be supported.\\n}")
|
||||
end
|
||||
end
|
||||
-- Final tests to check forgeurl was successfuly parsed
|
||||
if not silent then
|
||||
if (rpm.expand("%{?archivename}") == "") or (rpm.expand("%{?archiveurl}") == "") then
|
||||
rpm.expand("%{error:Automation for the “" .. forge .. "”\\nsoftware publishing service is not implemented yet.\\nPlease extend the %%forgemeta macro!\\n}")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- Set defaults if forgeurl is missing or does not parse
|
||||
local archivename = rpm.expand("%{?archivename}")
|
||||
safeset("archiveext", "tar.gz")
|
||||
if (archivename ~= "") then
|
||||
safeset("forgesetupargs", "-n %{archivename}")
|
||||
end
|
||||
if (commit ~= "") or (tag ~= "") then
|
||||
safeset("scm", "git")
|
||||
end
|
||||
-- Source URL processing (computing the forgesource spec variable)
|
||||
local archiveurl = rpm.expand("%{?archiveurl}")
|
||||
local archiveext = rpm.expand("%{?archiveext}")
|
||||
if (archivename ~= "") and (archiveurl ~= "") then
|
||||
if (string.match(archiveurl, "/([^/]+)$") == archivename .. "." .. archiveext) then
|
||||
safeset("forgesource", "%{archiveurl}")
|
||||
else
|
||||
safeset("forgesource", "%{?archiveurl}#/%{?archivename}.%{archiveext}")
|
||||
end
|
||||
end
|
||||
-- dist processing (computing the correct pefix for snapshots)
|
||||
local distprefix = rpm.expand("%{?tag}")
|
||||
local version = rpm.expand("%{?version}")
|
||||
if (distprefix == version) or (distprefix == "v" .. version) then
|
||||
distprefix = ""
|
||||
end
|
||||
if (distprefix == "") then
|
||||
distprefix = string.sub(rpm.expand("%{?commit}"), 1, 7)
|
||||
end
|
||||
if (distprefix ~= "") then
|
||||
local dist = ".%{?date}%{!?date:%([ -r %{_sourcedir}/%{archivename}.%{archiveext} ] && date +%Y%m%d -u -r %{_sourcedir}/%{archivename}.%{archiveext})}%{scm}" .. string.gsub(distprefix, "-",".") .. rpm.expand("%{?dist}")
|
||||
explicitset("dist", dist)
|
||||
end
|
||||
-- Final spec variable summary if the macro was called with -i
|
||||
if informative then
|
||||
rpm.expand("%{echo:Forge-specific packaging variables\\n}")
|
||||
rpm.expand("%{echo: forgeurl: %{?forgeurl}\\n}")
|
||||
rpm.expand("%{echo: forgesource: %{?forgesource}\\n}")
|
||||
rpm.expand("%{echo: forgesetupargs: %{?forgesetupargs}\\n}")
|
||||
rpm.expand("%{echo:Generic variables\\n}")
|
||||
rpm.expand("%{echo: archivename: %{?archivename}\\n}")
|
||||
rpm.expand("%{echo: archiveext: %{?archiveext}\\n}")
|
||||
rpm.expand("%{echo: archiveurl: %{?archiveurl}\\n}")
|
||||
rpm.expand("%{echo: scm: %{?scm}\\n}")
|
||||
rpm.expand("%{echo: tag: %{?tag}\\n}")
|
||||
rpm.expand("%{echo: commit: %{?commit}\\n}")
|
||||
rpm.expand("%{echo: dist: %{?dist} (snapshot date is either manually supplied or computed once %%{_sourcedir}/%%{archivename}.%%{archiveext} is available)\\n}")
|
||||
end
|
||||
}
|
||||
|
||||
# Convenience macro to relay computed arguments to %setup
|
||||
%forgesetup(a:b:cDn:Tq) %setup %{?forgesetupargs} %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{-q}
|
||||
|
||||
# Convenience macro to relay computed arguments to %autosetup
|
||||
%forgeautosetup(a:b:cDn:TvNS:p:) %autosetup %{?forgesetupargs} %{-a} %{-b} %{-c} %{-D} %{-n} %{-T} %{-v} %{-N} %{-S} %{-p}
|
||||
170
macros.go
170
macros.go
@ -1,170 +0,0 @@
|
||||
# Copyright (c) 2015-2018 Jakub Cajka <jcajka@redhat.com>,
|
||||
# Jan Chaloupka <jchaloup@redhat.com>,
|
||||
# Nicolas Mailhot <nim@fedoraproject.org>
|
||||
# This file is distributed under the terms of GNU GPL license version 3, or
|
||||
# any later version.
|
||||
|
||||
# This file contains macros for building projects in golang for packages
|
||||
# with golang compiler or gcc-go compiler based on an architecture.
|
||||
# Golang is primarly for primary architectures, gcc-go for secondary.
|
||||
#
|
||||
# This file provides only macros and must not use any other package except
|
||||
# redhat-rpm-macros.
|
||||
|
||||
# Define arches for PA and SA
|
||||
%golang_arches %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
|
||||
%gccgo_arches %{mips}
|
||||
%go_arches %{golang_arches} %{gccgo_arches}
|
||||
|
||||
# Where to set GOPATH for builds
|
||||
%gopath %{_datadir}/gocode
|
||||
|
||||
# Define go_compilers macro to signal go-compiler package is available
|
||||
%go_compiler 1
|
||||
|
||||
# Sanitize a Go import path that can then serve as rpm package name
|
||||
# Mandatory parameter: a Go import path
|
||||
%gorpmname() %{lua:
|
||||
local goname = rpm.expand("%1")
|
||||
-- lowercase and end with '/'
|
||||
goname = string.lower(goname .. "/")
|
||||
-- remove eventual protocol prefix
|
||||
goname = string.gsub(goname, "^http(s?)://", "")
|
||||
-- remove eventual .git suffix
|
||||
goname = string.gsub(goname, "%.git/*", "")
|
||||
-- remove eventual git. prefix
|
||||
goname = string.gsub(goname, "^git%.", "")
|
||||
-- add golang prefix
|
||||
goname = "golang-" .. goname
|
||||
-- remove FQDN root (.com, .org, etc)
|
||||
goname = string.gsub(goname, "^([^/]+)%.([^%./]+)/", "%1/")
|
||||
-- special-case x.y.z number-strings as that’s an exception in our naming
|
||||
-- guidelines
|
||||
repeat
|
||||
goname, i = string.gsub(goname, "(%d)%.(%d)", "%1:%2")
|
||||
until i == 0
|
||||
-- replace various separators rpm does not like with -
|
||||
goname = string.gsub(goname, "[%._/%-]+", "-")
|
||||
-- because of the Azure sdk
|
||||
goname = string.gsub(goname, "%-for%-go%-", "-")
|
||||
-- Tokenize along - separators and remove duplicates to avoid
|
||||
-- golang-foo-foo-bar-foo names
|
||||
local result = ""
|
||||
local tokens = {}
|
||||
tokens["go"] = true
|
||||
for token in string.gmatch(goname, "[^%-]+") do
|
||||
if not tokens[token] then
|
||||
result = result .. "-" .. token
|
||||
tokens[token] = true
|
||||
end
|
||||
end
|
||||
-- reassemble the string, restore x.y.z runs, convert the vx.y.z
|
||||
-- Go convention to x.y.z as prefered in rpm naming
|
||||
result = string.gsub(result, "^-", "")
|
||||
result = string.gsub(result, ":", ".")
|
||||
-- some projects have a name that end up in a number, and *also* add release
|
||||
-- numbers on top of it, keep a - prefix before version strings
|
||||
result = string.gsub(result, "%-v([%.%d])", "-%1")
|
||||
print(result)
|
||||
}
|
||||
|
||||
# Map Go information to rpm metadata. This macro will compute default spec
|
||||
# variable values.
|
||||
#
|
||||
# The following spec variable MUST be set before calling the macro:
|
||||
#
|
||||
# goipath the packaged Go project import path
|
||||
#
|
||||
# The following spec variables SHOULD be set before calling the macro:
|
||||
#
|
||||
# forgeurl the project url on the forge, strongly recommended, if it can not
|
||||
# be deduced from goipath; alternatively, use -u <url>
|
||||
# Version if applicable, set it with Version: <version>
|
||||
# tag if applicable
|
||||
# commit if applicable
|
||||
#
|
||||
# The macro will attempt to compute and set the following variables if they are
|
||||
# not already set by the packager:
|
||||
#
|
||||
# goname an rpm-compatible package name derived from goipath
|
||||
# gosource an URL that can be used as SourceX: value
|
||||
# gourl an URL that can be used as URL: value
|
||||
#
|
||||
# It will delegate processing to the forgemeta macro for:
|
||||
#
|
||||
# forgesource an URL that can be used as SourceX: value
|
||||
# forgesetupargs the correct arguments to pass to %setup for this source
|
||||
# used by %forgesetup and %forgeautosetup
|
||||
# archivename the source archive filename, without extentions
|
||||
# archiveext the source archive filename extensions, without leading dot
|
||||
# archiveurl the url that can be used to download the source archive,
|
||||
# without renaming
|
||||
# scm the scm type, when packaging code snapshots: commits or tags
|
||||
#
|
||||
# If the macro is unable to parse your forgeurl value set at least archivename
|
||||
# and archiveurl before calling it.
|
||||
#
|
||||
# Most of the computed variables are both overridable and optional. However,
|
||||
# the macro WILL REDEFINE %{dist} when packaging a snapshot (commit or tag).
|
||||
# The previous %{dist} value will be lost. Don’t call the macro if you don’t
|
||||
# wish %{dist} to be changed.
|
||||
#
|
||||
# Optional parameters:
|
||||
# -u <url> Ignore forgeurl even if it exists and use <url> instead. Note
|
||||
# that the macro will still end up setting <url> as the forgeurl
|
||||
# spec variable if it manages to parse it.
|
||||
# -s Silently ignore problems in forgeurl, use it if it can be parsed,
|
||||
# ignore it otherwise.
|
||||
# -p Restore problem handling, override -s.
|
||||
# -v Be verbose and print every spec variable the macro sets.
|
||||
# -i Print some info about the state of spec variables the macro may use or
|
||||
# set at the end of the processing.
|
||||
%gometa(u:spvi) %{expand:%{lua:
|
||||
local forgeurl = rpm.expand("%{?-u*}")
|
||||
if (forgeurl == "") then
|
||||
forgeurl = rpm.expand("%{?forgeurl}")
|
||||
end
|
||||
-- Be explicit about the spec variables we’re setting
|
||||
local function explicitset(rpmvariable,value)
|
||||
rpm.define(rpmvariable .. " " .. value)
|
||||
if (rpm.expand("%{?-v}") ~= "") then
|
||||
rpm.expand("%{echo:Setting %%{" .. rpmvariable .. "} = " .. value .. "\\n}")
|
||||
end
|
||||
end
|
||||
-- Never ever stomp on a spec variable the packager already set
|
||||
local function safeset(rpmvariable,value)
|
||||
if (rpm.expand("%{?" .. rpmvariable .. "}") == "") then
|
||||
explicitset(rpmvariable,value)
|
||||
end
|
||||
end
|
||||
-- All the Go packaging automation relies on goipath being set
|
||||
local goipath = rpm.expand("%{?goipath}")
|
||||
if (goipath == "") then
|
||||
rpm.expand("%{error:Please set the Go import path in the “goipath” variable before calling “gometa”!}")
|
||||
end
|
||||
-- Compute and set spec variables
|
||||
if (forgeurl ~= "") then
|
||||
rpm.expand("%forgemeta %{?-v} %{?-i} %{?-s} %{?-p} -u " .. forgeurl .. "\\n")
|
||||
safeset("gourl", forgeurl)
|
||||
else
|
||||
safeset("gourl", "https://" .. goipath)
|
||||
rpm.expand("%forgemeta %{?-v} %{?-i} -s %{?-p} -u %{gourl}\\n")
|
||||
end
|
||||
if (rpm.expand("%{?forgesource}") ~= "") then
|
||||
safeset("gosource", "%{forgesource}")
|
||||
else
|
||||
safeset("gosource", "%{gourl}/%{archivename}.%{archiveext}")
|
||||
end
|
||||
safeset("goname", "%gorpmname %{goipath}")
|
||||
rpm.define("gosetup %forgesetup")
|
||||
-- Final spec variable summary if the macro was called with -i
|
||||
if (rpm.expand("%{?-i}") ~= "") then
|
||||
rpm.expand("%{echo:Go-specific packaging variables}")
|
||||
rpm.expand("%{echo: goipath: %{?goipath}}")
|
||||
rpm.expand("%{echo: goname: %{?goname}}")
|
||||
rpm.expand("%{echo: gourl: %{?gourl}}")
|
||||
rpm.expand("%{echo: gosource: %{?gosource}}")
|
||||
end}
|
||||
BuildRequires: compiler(go-compiler)
|
||||
ExclusiveArch: %{go_arches}
|
||||
}
|
||||
21
macros.kmp
21
macros.kmp
@ -1,21 +0,0 @@
|
||||
# Use these macros to differentiate between RH and other KMP implementation(s).
|
||||
|
||||
kernel_module_package_release 1
|
||||
|
||||
|
||||
|
||||
#kernel_module_package [ -n name ] [ -v version ] [ -r release ]
|
||||
# [ -f filelist]
|
||||
#
|
||||
|
||||
%kernel_module_package_buildreqs %global kmodtool_generate_buildreqs 1 \
|
||||
kernel-devel
|
||||
|
||||
%kernel_module_package(n:v:r:f:) %{expand:%( \
|
||||
%define kmodtool /usr/lib/rpm/openEuler/kmodtool.py\
|
||||
%define latest_kernel $(rpm -q --qf '%{VERSION}-%{RELEASE}\\\\n' `rpm -q kernel-devel` | head -n 1) \
|
||||
%{!?kernel_version:%{expand:%%global kernel_version %{latest_kernel}}} \
|
||||
%global kverrel %(%{kmodtool} verrel %{?kernel_version} 2>/dev/null) \
|
||||
python3 %{kmodtool} rpmtemplate_kmp %{-n*}%{!-n:%name} %{kverrel} %{-f*}%{!-f:%filelist} \
|
||||
)}
|
||||
|
||||
151
macros.perl
151
macros.perl
@ -1,151 +0,0 @@
|
||||
# Sensible Perl-specific RPM build macros.
|
||||
#
|
||||
# Note that these depend on the generic filtering system being in place in
|
||||
# rpm core; but won't cause a build to fail if they're not present.
|
||||
#
|
||||
# Chris Weyl <cweyl@alumni.drew.edu> 2009
|
||||
# Marcela Mašláňová <mmaslano@redhat.com> 2011
|
||||
|
||||
# This macro unsets several common vars used to control how Makefile.PL (et
|
||||
# al) build and install packages. We also set a couple to help some of the
|
||||
# common systems be less interactive. This was blatantly stolen from
|
||||
# cpanminus, and helps building rpms locally when one makes extensive use of
|
||||
# local::lib, etc.
|
||||
#
|
||||
# Usage, in %build, before "%{__perl} Makefile.PL ..."
|
||||
#
|
||||
# %{?perl_ext_env_unset}
|
||||
|
||||
%perl_ext_env_unset %{expand:
|
||||
unset PERL_MM_OPT MODULEBUILDRC PERL5INC
|
||||
export PERL_AUTOINSTALL="--defaultdeps"
|
||||
export PERL_MM_USE_DEFAULT=1
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# Filtering macro incantations
|
||||
|
||||
# keep track of what "revision" of the filtering we're at. Each time we
|
||||
# change the filter we should increment this.
|
||||
|
||||
%perl_default_filter_revision 3
|
||||
|
||||
# By default, for perl packages we want to filter all files in _docdir from
|
||||
# req/prov scanning.
|
||||
# Filtering out any provides caused by private libs in vendorarch/archlib
|
||||
# (vendor/core) is done by rpmbuild since Fedora 20
|
||||
# <https://fedorahosted.org/fpc/ticket/353>.
|
||||
#
|
||||
# Note that this must be invoked in the spec file, preferably as
|
||||
# "%{?perl_default_filter}", before any %description block.
|
||||
|
||||
%perl_default_filter %{expand: \
|
||||
%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}^%{_docdir}
|
||||
%global __requires_exclude_from %{?__requires_exclude_from:%__requires_exclude_from|}^%{_docdir}
|
||||
%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}^perl\\\\(VMS|^perl\\\\(Win32|^perl\\\\(DB\\\\)|^perl\\\\(UNIVERSAL\\\\)
|
||||
%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\\\(VMS|^perl\\\\(Win32
|
||||
}
|
||||
|
||||
#############################################################################
|
||||
# Macros to assist with generating a "-tests" subpackage in a semi-automatic
|
||||
# manner.
|
||||
#
|
||||
# The following macros are still in a highly experimental stage and users
|
||||
# should be aware that the interface and behaviour may change.
|
||||
#
|
||||
# PLEASE, PLEASE CONDITIONALIZE THESE MACROS IF YOU USE THEM.
|
||||
#
|
||||
# See http://gist.github.com/284409
|
||||
|
||||
# These macros should be invoked as above, right before the first %description
|
||||
# section, and conditionalized. e.g., for the common case where all our tests
|
||||
# are located under t/, the correct usage is:
|
||||
#
|
||||
# %{?perl_default_subpackage_tests}
|
||||
#
|
||||
# If custom files/directories need to be specified, this can be done as such:
|
||||
#
|
||||
# %{?perl_subpackage_tests:%perl_subpackage_tests t/ one/ three.sql}
|
||||
#
|
||||
# etc, etc.
|
||||
|
||||
%perl_version %(eval "`%{__perl} -V:version`"; echo $version)
|
||||
%perl_testdir %{_libexecdir}/perl5-tests
|
||||
%cpan_dist_name %(eval echo %{name} | %{__sed} -e 's/^perl-//')
|
||||
|
||||
# easily mark something as required by -tests and BR to the main package
|
||||
%tests_req() %{expand:\
|
||||
BuildRequires: %*\
|
||||
%%tests_subpackage_requires %*\
|
||||
}
|
||||
|
||||
# fixup (and create if needed) the shbang lines in tests, so they work and
|
||||
# rpmlint doesn't (correctly) have a fit
|
||||
%fix_shbang_line() \
|
||||
TMPHEAD=`mktemp`\
|
||||
TMPBODY=`mktemp`\
|
||||
for file in %* ; do \
|
||||
head -1 $file > $TMPHEAD\
|
||||
tail -n +2 $file > $TMPBODY\
|
||||
%{__perl} -pi -e '$f = /^#!/ ? "" : "#!%{__perl}$/"; $_="$f$_"' $TMPHEAD\
|
||||
cat $TMPHEAD $TMPBODY > $file\
|
||||
done\
|
||||
%{__perl} -MExtUtils::MakeMaker -e "ExtUtils::MM_Unix->fixin(qw{%*})"\
|
||||
%{__rm} $TMPHEAD $TMPBODY\
|
||||
%{nil}
|
||||
|
||||
# additional -tests subpackage requires, if any
|
||||
%tests_subpackage_requires() %{expand: \
|
||||
%global __tests_spkg_req %{?__tests_spkg_req} %* \
|
||||
}
|
||||
|
||||
# additional -tests subpackage provides, if any
|
||||
%tests_subpackage_provides() %{expand: \
|
||||
%global __tests_spkg_prov %{?__tests_spkg_prov} %* \
|
||||
}
|
||||
|
||||
#
|
||||
# Runs after the body of %check completes.
|
||||
#
|
||||
|
||||
%__perl_check_pre %{expand: \
|
||||
%{?__spec_check_pre} \
|
||||
pushd %{buildsubdir} \
|
||||
%define perl_br_testdir %{buildroot}%{perl_testdir}/%{cpan_dist_name} \
|
||||
%{__mkdir_p} %{perl_br_testdir} \
|
||||
%{__tar} -cf - %{__perl_test_dirs} | ( cd %{perl_br_testdir} && %{__tar} -xf - ) \
|
||||
find . -maxdepth 1 -type f -name '*META*' -exec %{__cp} -vp {} %{perl_br_testdir} ';' \
|
||||
find %{perl_br_testdir} -type f -exec %{__chmod} -c -x {} ';' \
|
||||
T_FILES=`find %{perl_br_testdir} -type f -name '*.t'` \
|
||||
%fix_shbang_line $T_FILES \
|
||||
%{__chmod} +x $T_FILES \
|
||||
%{_fixperms} %{perl_br_testdir} \
|
||||
popd \
|
||||
}
|
||||
|
||||
#
|
||||
# The actual invoked macro
|
||||
#
|
||||
|
||||
%perl_subpackage_tests() %{expand: \
|
||||
%global __perl_package 1\
|
||||
%global __perl_test_dirs %* \
|
||||
%global __spec_check_pre %{expand:%{__perl_check_pre}} \
|
||||
%package tests\
|
||||
Summary: Test suite for package %{name}\
|
||||
Group: Development/Debug\
|
||||
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}\
|
||||
Requires: /usr/bin/prove \
|
||||
%{?__tests_spkg_req:Requires: %__tests_spkg_req}\
|
||||
%{?__tests_spkg_prov:Provides: %__tests_spkg_prov}\
|
||||
AutoReqProv: 0 \
|
||||
%description tests\
|
||||
This package provides the test suite for package %{name}.\
|
||||
%files tests\
|
||||
%defattr(-,root,root,-)\
|
||||
%{perl_testdir}\
|
||||
}
|
||||
|
||||
# shortcut sugar
|
||||
%perl_default_subpackage_tests %perl_subpackage_tests t/
|
||||
|
||||
294
macros.python
294
macros.python
@ -1,294 +0,0 @@
|
||||
# Note that the path could itself be a python file, or a directory
|
||||
|
||||
# Python's compile_all module only works on directories, and requires a max
|
||||
# recursion depth
|
||||
|
||||
# Usage:
|
||||
# %py_byte_compile <interpereter> <path>
|
||||
# Example:
|
||||
# %py_byte_compile %{__python3} %{buildroot}%{_datadir}/spam/plugins/
|
||||
|
||||
# This will terminate build on SyntaxErrors, if you want to avoid that,
|
||||
# use it in a subshell like this:
|
||||
# (%{py_byte_compile <interpereter> <path>}) || :
|
||||
|
||||
%py_byte_compile()\
|
||||
python_binary="%1"\
|
||||
bytecode_compilation_path="%2"\
|
||||
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -m py_compile\
|
||||
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -m py_compile
|
||||
%py_setup setup.py
|
||||
%py_shbang_opts -s
|
||||
|
||||
# Use the slashes after expand so that the command starts on the same line as
|
||||
# the macro
|
||||
%py_build() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python} %{py_setup} %{?py_setup_args} build --executable="%{__python} %{py_shbang_opts}" %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py_build_egg() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python} %{py_setup} %{?py_setup_args} bdist_egg %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py_build_wheel() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python} %{py_setup} %{?py_setup_args} bdist_wheel %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py_install() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*}
|
||||
}
|
||||
|
||||
%py_install_egg() %{expand:\\\
|
||||
mkdir -p %{buildroot}%{python_sitelib}
|
||||
easy_install -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python_version}.egg %{?*}
|
||||
}
|
||||
|
||||
%py_install_wheel() %{expand:\\\
|
||||
pip install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps
|
||||
}
|
||||
|
||||
%python_provide() %{lua:
|
||||
function string.starts(String,Start)
|
||||
return string.sub(String,1,string.len(Start))==Start
|
||||
end
|
||||
package = rpm.expand("%{?1}")
|
||||
vr = rpm.expand("%{?epoch:%{epoch}:}%{version}-%{release}")
|
||||
if (string.starts(package, "python2-")) then
|
||||
--No unversioned provides as python2 is not default
|
||||
elseif (string.starts(package, "python" .. rpm.expand("%{python3_pkgversion}") .. "-")) then
|
||||
print("\\nProvides: python-")
|
||||
l = 8 + string.len(rpm.expand("%{python3_pkgversion}"))
|
||||
print(string.sub(package,l,string.len(package)))
|
||||
print(" = ")
|
||||
print(vr)
|
||||
--Obsoleting the previous default python package (if it doesn't have isa)
|
||||
if (string.sub(package, "-1") ~= ")") then
|
||||
print("\\nObsoletes: python-")
|
||||
print(string.sub(package,l,string.len(package)))
|
||||
print(" < ")
|
||||
print(vr)
|
||||
end
|
||||
elseif (rpm.expand("%{?python3_other_pkgversion}") ~= "" and string.starts(package, "python" .. rpm.expand("%{python3_other_pkgversion}") .. "-")) then
|
||||
--No unversioned provides as python3_other is not default
|
||||
elseif (string.starts(package, "pypy-")) then
|
||||
--No unversioned provides as pypy is not default
|
||||
elseif (string.starts(package, "pypy2-")) then
|
||||
--No unversioned provides as pypy is not default
|
||||
elseif (string.starts(package, "pypy3-")) then
|
||||
--No unversioned provides as pypy is not default
|
||||
elseif (string.starts(package, "python-")) then
|
||||
--No unversioned provides needed for unversioned python
|
||||
else
|
||||
print("%python_provide: ERROR: ")
|
||||
print(package)
|
||||
print(" not recognized.")
|
||||
end
|
||||
}
|
||||
|
||||
%python_enable_dependency_generator() \
|
||||
%global __pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires \
|
||||
%{nil}
|
||||
%__python2 /usr/bin/python2
|
||||
%python2_sitelib %(%{__python2} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
|
||||
%python2_sitearch %(%{__python2} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")
|
||||
%python2_version %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}.{0.minor}'.format(sys.version_info))")
|
||||
%python2_version_nodots %(%{__python2} -Esc "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))")
|
||||
|
||||
%py2_shbang_opts -s
|
||||
|
||||
# Use the slashes after expand so that the command starts on the same line as
|
||||
# the macro
|
||||
%py2_build() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python2} %{py_setup} %{?py_setup_args} build --executable="%{__python2} %{py2_shbang_opts}" %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py2_build_egg() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python2} %{py_setup} %{?py_setup_args} bdist_egg %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py2_build_wheel() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python2} %{py_setup} %{?py_setup_args} bdist_wheel %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py2_install() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python2} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*}
|
||||
}
|
||||
|
||||
%py2_install_egg() %{expand:\\\
|
||||
mkdir -p %{buildroot}%{python2_sitelib}
|
||||
easy_install-%{python2_version} -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python2_version}.egg %{?*}
|
||||
}
|
||||
|
||||
%py2_install_wheel() %{expand:\\\
|
||||
pip%{python2_version} install -I dist/%{1} --root %{buildroot} --strip-file-prefix %{buildroot} --no-deps
|
||||
}
|
||||
%__python3 /usr/bin/python3
|
||||
%python3_sitelib %(%{__python3} -Ic "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
|
||||
%python3_sitearch %(%{__python3} -Ic "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")
|
||||
%python3_version %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3])")
|
||||
%python3_version_nodots %(%{__python3} -Ic "import sys; sys.stdout.write(sys.version[:3].replace('.',''))")
|
||||
%python3_platform %(%{__python3} -Ic "import sysconfig; print(sysconfig.get_platform())")
|
||||
%py3dir %{_builddir}/python3-%{name}-%{version}-%{release}
|
||||
|
||||
%py3_shbang_opts -s
|
||||
|
||||
# Use the slashes after expand so that the command starts on the same line as
|
||||
# the macro
|
||||
%py3_build() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python3} %{py_setup} %{?py_setup_args} build --executable="%{__python3} %{py3_shbang_opts}" %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py3_build_egg() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python3} %{py_setup} %{?py_setup_args} bdist_egg %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py3_build_wheel() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python3} %{py_setup} %{?py_setup_args} bdist_wheel %{?*}
|
||||
sleep 1
|
||||
}
|
||||
|
||||
%py3_install() %{expand:\\\
|
||||
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}"\\\
|
||||
%{__python3} %{py_setup} %{?py_setup_args} install -O1 --skip-build --root %{buildroot} %{?*}
|
||||
}
|
||||
|
||||
%py3_install_egg() %{expand:\\\
|
||||
mkdir -p %{buildroot}%{python3_sitelib}
|
||||
easy_install-%{python3_version} -m --prefix %{buildroot}%{_prefix} -Z dist/*-py%{python3_version}.egg %{?*}
|
||||
}
|
||||
|
||||
%py3_install_wheel() %{expand:\\\
|
||||
pip%{python3_version} install -I dist/%{1} --root %{buildroot} --no-deps
|
||||
}
|
||||
# python3_pkgversion specifies the version of Python 3 in the distro. It can be
|
||||
# a specific version (e.g. 34 in Fedora EPEL7)
|
||||
%python3_pkgversion 3
|
||||
|
||||
# Set to /bin/true to avoid %ifdefs and %{? in specfiles
|
||||
%__python3_other /bin/true
|
||||
%py3_other_build /bin/true
|
||||
%py3_other_install /bin/true
|
||||
|
||||
|
||||
|
||||
# === Macros for Build/Requires tags using Python dist tags ===
|
||||
# - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
||||
# - These macros need to be in macros.python-srpm, because BuildRequires tags
|
||||
# get rendered as runtime requires into the metadata of SRPMs.
|
||||
|
||||
# Converts Python dist name to a canonical format
|
||||
%py_dist_name() %{lua:\
|
||||
name = rpm.expand("%{?1:%{1}}");\
|
||||
canonical = string.gsub(string.lower(name), "[^%w%.]+", "-");\
|
||||
print(canonical);\
|
||||
}
|
||||
|
||||
# Creates Python 2 dist tag(s) after converting names to canonical format
|
||||
# Needs to first put all arguments into a list, because invoking a different
|
||||
# macro (%py_dist_name) overwrites them
|
||||
%py2_dist() %{lua:\
|
||||
args = {}\
|
||||
arg = 1\
|
||||
while (true) do\
|
||||
name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\
|
||||
if (name == nil or name == '') then\
|
||||
break\
|
||||
end\
|
||||
args[arg] = name\
|
||||
arg = arg + 1\
|
||||
end\
|
||||
for arg, name in ipairs(args) do\
|
||||
canonical = rpm.expand("%py_dist_name " .. name);\
|
||||
print("python2dist(" .. canonical .. ") ");\
|
||||
end\
|
||||
}
|
||||
|
||||
# Creates Python 3 dist tag(s) after converting names to canonical format
|
||||
# Needs to first put all arguments into a list, because invoking a different
|
||||
# macro (%py_dist_name) overwrites them
|
||||
%py3_dist() %{lua:\
|
||||
args = {}\
|
||||
arg = 1\
|
||||
while (true) do\
|
||||
name = rpm.expand("%{?" .. arg .. ":%{" .. arg .. "}}");\
|
||||
if (name == nil or name == '') then\
|
||||
break\
|
||||
end\
|
||||
args[arg] = name\
|
||||
arg = arg + 1\
|
||||
end\
|
||||
for arg, name in ipairs(args) do\
|
||||
canonical = rpm.expand("%py_dist_name " .. name);\
|
||||
print("python3dist(" .. canonical .. ") ");\
|
||||
end\
|
||||
}
|
||||
|
||||
# Macro to replace overly complicated references to PyPI source files.
|
||||
# Expands to the pythonhosted URL for a package
|
||||
# Accepts zero to three arguments:
|
||||
# 1: The PyPI project name, defaulting to %srcname if it is defined, then
|
||||
# %pypi_name if it is defined, then just %name.
|
||||
# 2: The PYPI version, defaulting to %version.
|
||||
# 3: The file extension, defaulting to "tar.gz". (A period will be added
|
||||
# automatically.)
|
||||
# Requires %__pypi_url and %__pypi_default_extension to be defined.
|
||||
%__pypi_url https://files.pythonhosted.org/packages/source/
|
||||
%__pypi_default_extension tar.gz
|
||||
|
||||
%pypi_source() %{lua:
|
||||
local src = rpm.expand('%1')
|
||||
local ver = rpm.expand('%2')
|
||||
local ext = rpm.expand('%3')
|
||||
local url = rpm.expand('%__pypi_url')
|
||||
\
|
||||
-- If no first argument, try %srcname, then %pypi_name, then %name
|
||||
-- Note that rpm leaves macros unchanged if they are not defined.
|
||||
if src == '%1' then
|
||||
src = rpm.expand('%srcname')
|
||||
end
|
||||
if src == '%srcname' then
|
||||
src = rpm.expand('%pypi_name')
|
||||
end
|
||||
if src == '%pypi_name' then
|
||||
src = rpm.expand('%name')
|
||||
end
|
||||
\
|
||||
-- If no second argument, use %version
|
||||
if ver == '%2' then
|
||||
ver = rpm.expand('%version')
|
||||
end
|
||||
\
|
||||
-- If no third argument, use the preset default extension
|
||||
if ext == '%3' then
|
||||
ext = rpm.expand('%__pypi_default_extension')
|
||||
end
|
||||
\
|
||||
local first = string.sub(src, 1, 1)
|
||||
\
|
||||
print(url .. first .. '/' .. src .. '/' .. src .. '-' .. ver .. '.' .. ext)
|
||||
}
|
||||
|
||||
# New python macros
|
||||
%__python /usr/bin/python
|
||||
%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])")
|
||||
@ -1,2 +0,0 @@
|
||||
*cc1_options:
|
||||
+ %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}}
|
||||
@ -1,2 +0,0 @@
|
||||
*self_spec:
|
||||
+ %{!static:%{!shared:%{!r:-pie}}}
|
||||
@ -1,2 +0,0 @@
|
||||
*cc1_options:
|
||||
+ %{!r:%{!D__KERNEL__:%{!pie:%{!fpic:%{!fPIC:%{!fpie:%{!fPIE:%{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE:%{!shared:%{!static:%{!nostdlib:%{!nostartfiles:-fPIE}}}}}}}}}}}}}}}
|
||||
@ -1,2 +0,0 @@
|
||||
*self_spec:
|
||||
+ %{!D__KERNEL__:%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!static:%{!r:%{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}}
|
||||
@ -1,2 +0,0 @@
|
||||
*cc1_options:
|
||||
+ %{!D__KERNEL__:%{!nostdlib:%{!nodefaultlibs:%{!fno-stack-protector:%{!fstack-protector-all:-fstack-protector-strong}}}}}
|
||||
20
rpmrc
20
rpmrc
@ -1,20 +0,0 @@
|
||||
include: /usr/lib/rpm/rpmrc
|
||||
|
||||
optflags: i686 %{__global_compiler_flags} -m32 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
|
||||
optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
optflags: ia64 %{__global_compiler_flags}
|
||||
optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
|
||||
optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
optflags: riscv64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
|
||||
|
||||
buildarchtranslate: athlon: i686
|
||||
buildarchtranslate: geode: i686
|
||||
buildarchtranslate: pentium4: i686
|
||||
buildarchtranslate: pentium3: i686
|
||||
buildarchtranslate: i686: i686
|
||||
buildarchtranslate: i586: i586
|
||||
|
||||
buildarchtranslate: armv7l: armv5tel
|
||||
buildarchtranslate: armv7hl: armv7hl
|
||||
buildarchtranslate: armv7hnl: armv7hl
|
||||
Loading…
x
Reference in New Issue
Block a user