%global pkgvers 0 %global scdate0 20230731 %global sctags0 glibc-2.38 %global scfilt0 tags/.*^{} %global source0 https://github.com/bminor/glibc.git %define sysarch linux-gnu %define targets aarch64;or1k;ppc64le;riscv32;riscv64 Name: cross-%{sysarch}-glibc Version: %(curl -s https://raw.githubusercontent.com/bminor/glibc/%{sctags0}/version.h | grep VERSION | cut -d'"' -f2) Release: %{scdate0}.%{pkgvers}%{?dist} Summary: The GNU C Library for cross targets. License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ URL: https://www.gnu.org/software/libc BuildRequires: git bison make perl-interpreter python3 %undefine __strip %global __strip /bin/true %define debug_package %{nil} %undefine _auto_set_build_flags %global __provides_exclude_from ^(%{_prefix}/.*-%{sysarch}/.*$) %global __requires_exclude_from ^(%{_prefix}/.*-%{sysarch}/.*$) %define cpulist %(echo "%{targets}" | sed "s|%{_arch}||g") %description The glibc package contains the standard C libraries for cross targets. %{lua: for target in string.gmatch(rpm.expand("%{cpulist}"), "[%w_-]+") do print("%package -n "..target.."-"..rpm.expand("%{sysarch}").."-glibc\n") print("Summary: The GNU C Library for "..target.." target\n") print("Provides: "..target.."-glibc\n") print("Provides: "..target.."-libc\n") print("BuildRequires: "..target.."-"..rpm.expand("%{sysarch}").."-gcc\n") print("BuildRequires: "..target.."-kernel-headers\n") print("%description -n "..target.."-"..rpm.expand("%{sysarch}").."-glibc\n") print("The GNU C Library for "..target.." target.\n") print("\n") end} %prep %setup -T -c -n %{name} git clone --depth 1 -n -b %{sctags0} %{source0} . git fetch --depth 1 origin %{sctags0} git reset --hard %{sctags0} git --no-pager log --format=fuller %autosetup -D -p 0 -T -c -n %{name} %build for target in $(echo "%{cpulist}" | sed 's|;| |g'); do echo "Building for [$target]" mkdir -p build-$target-%{sysarch} pushd build-$target-%{sysarch} cargs="" case $target in or1k) cargs="$cargs --disable-multi-arch" ;; esac ../configure \ --prefix=%{_prefix} --libdir=%{_libdir} \ --mandir=%{_mandir} --infodir=%{_infodir} \ --with-headers=%{_prefix}/$target-%{sysarch}/%{_includedir} \ --build=%{_target_platform} \ --host=$target-%{sysarch} \ --enable-kernel=2.6.32 \ --enable-multi-arch \ --enable-shared \ --enable-add-ons \ --enable-crypt \ --enable-tunables \ --disable-profile \ --disable-werror \ --with-tls \ --with-__thread \ --without-cvs \ --without-gd \ $cargs %make_build popd done %install for target in $(echo "%{cpulist}" | sed 's|;| |g'); do echo "Installing for [$target]" pushd build-$target-%{sysarch} %{__make} install install_root=%{buildroot}%{_prefix}/$target-%{sysarch} rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/var rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/sbin rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/%{_bindir} rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/%{_sbindir} rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/%{_datadir} rm -rf %{buildroot}%{_prefix}/$target-%{sysarch}/%{_sysconfdir} ln -sf lib64 %{buildroot}%{_prefix}/$target-%{sysarch}/%{_prefix}/lib popd done %{lua: for target in string.gmatch(rpm.expand("%{cpulist}"), "[%w_-]+") do print("%files -n "..target.."-"..rpm.expand("%{sysarch}").."-glibc\n") print("%doc MAINTAINERS NEWS README\n") print("%license COPYING* LICENSES\n") print("%dir "..rpm.expand("%{_prefix}").."/"..target.."-"..rpm.expand("%{sysarch}").."\n") print(rpm.expand("%{_prefix}").."/"..target.."-"..rpm.expand("%{sysarch}").."/*\n") print("\n") end} %changelog * Fri Aug 07 2020 Cristian Balint - git upstream releases