diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7614568 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libffi-3.4.2.tar.gz diff --git a/.libffi.metadata b/.libffi.metadata new file mode 100644 index 0000000..93f1ee1 --- /dev/null +++ b/.libffi.metadata @@ -0,0 +1 @@ +460882cfdb52a2bd13fc08edc540b242ae421033 SOURCES/libffi-3.4.2.tar.gz diff --git a/SOURCES/ffi-multilib.h b/SOURCES/ffi-multilib.h new file mode 100644 index 0000000..50a6226 --- /dev/null +++ b/SOURCES/ffi-multilib.h @@ -0,0 +1,23 @@ +/* This file is here to prevent a file conflict on multiarch systems. */ +#ifdef ffi_wrapper_h +#error "Do not define ffi_wrapper_h!" +#endif +#define ffi_wrapper_h + +#if defined(__i386__) +#include "ffi-i386.h" +#elif defined(__powerpc64__) +#include "ffi-ppc64.h" +#elif defined(__powerpc__) +#include "ffi-ppc.h" +#elif defined(__s390x__) +#include "ffi-s390x.h" +#elif defined(__s390__) +#include "ffi-s390.h" +#elif defined(__x86_64__) +#include "ffi-x86_64.h" +#else +#error "The libffi-devel package is not usable with the architecture." +#endif + +#undef ffi_wrapper_h diff --git a/SOURCES/ffitarget-multilib.h b/SOURCES/ffitarget-multilib.h new file mode 100644 index 0000000..b2ed545 --- /dev/null +++ b/SOURCES/ffitarget-multilib.h @@ -0,0 +1,23 @@ +/* This file is here to prevent a file conflict on multiarch systems. */ +#ifdef ffitarget_wrapper_h +#error "Do not define ffitarget_wrapper_h!" +#endif +#define ffitarget_wrapper_h + +#if defined(__i386__) +#include "ffitarget-i386.h" +#elif defined(__powerpc64__) +#include "ffitarget-ppc64.h" +#elif defined(__powerpc__) +#include "ffitarget-ppc.h" +#elif defined(__s390x__) +#include "ffitarget-s390x.h" +#elif defined(__s390__) +#include "ffitarget-s390.h" +#elif defined(__x86_64__) +#include "ffitarget-x86_64.h" +#else +#error "The libffi-devel package is not usable with the architecture." +#endif + +#undef ffitarget_wrapper_h diff --git a/SPECS/libffi.spec b/SPECS/libffi.spec new file mode 100644 index 0000000..e5d7d24 --- /dev/null +++ b/SPECS/libffi.spec @@ -0,0 +1,313 @@ +%bcond_with bootstrap + +%global multilib_arches %{ix86} x86_64 + +Name: libffi +Version: 3.4.2 +Release: 7%{?dist} +Summary: A portable foreign function interface library +License: MIT +URL: http://sourceware.org/libffi + +Source0: https://github.com/libffi/libffi/releases/download/v3.4.2/libffi-3.4.2.tar.gz +Source1: ffi-multilib.h +Source2: ffitarget-multilib.h + +BuildRequires: make +BuildRequires: gcc +%if %{without bootstrap} +BuildRequires: gcc-c++ +BuildRequires: dejagnu +%endif + +%description +Compilers for high level languages generate code that follow certain +conventions. These conventions are necessary, in part, for separate +compilation to work. One such convention is the "calling convention". +The calling convention is a set of assumptions made by the compiler +about where function arguments will be found on entry to a function. A +calling convention also specifies where the return value for a function +is found. + +Some programs may not know at the time of compilation what arguments +are to be passed to a function. For instance, an interpreter may be +told at run-time about the number and types of arguments used to call a +given function. `Libffi' can be used in such programs to provide a +bridge from the interpreter program to compiled code. + +The `libffi' library provides a portable, high level programming +interface to various calling conventions. This allows a programmer to +call any function specified by a call interface description at run time. + +FFI stands for Foreign Function Interface. A foreign function +interface is the popular name for the interface that allows code +written in one language to call code written in another language. The +`libffi' library really only provides the lowest, machine dependent +layer of a fully featured foreign function interface. A layer must +exist above `libffi' that handles type conversions for values passed +between the two languages. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: pkgconfig + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%prep +%setup -q + +%build +# For now we disable the static templates to avoid ghc and +# gobject-introspection failures: +# https://gitlab.haskell.org/ghc/ghc/-/issues/20051 +# https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/283 +# We need to get these fixes into Fedora before we can reeanble them. +%configure --disable-static --disable-exec-static-tramp +%make_build + +%check +%if %{without bootstrap} +%make_build check +%endif + +%install +%make_install + +find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' +rm -f $RPM_BUILD_ROOT%{_infodir}/dir + +# Determine generic arch target name for multilib wrapper +basearch=%{_arch} +%ifarch %{ix86} +basearch=i386 +%endif + +mkdir -p $RPM_BUILD_ROOT%{_includedir} +%ifarch %{multilib_arches} +# Do header file switcheroo to avoid file conflicts on systems where you +# can have both a 32- and 64-bit version of the library, and they each need +# their own correct-but-different versions of the headers to be usable. +for i in ffi ffitarget; do + mv $RPM_BUILD_ROOT%{_includedir}/$i.h $RPM_BUILD_ROOT%{_includedir}/$i-${basearch}.h +done +install -m644 %{SOURCE1} $RPM_BUILD_ROOT%{_includedir}/ffi.h +install -m644 %{SOURCE2} $RPM_BUILD_ROOT%{_includedir}/ffitarget.h +%endif + +%ldconfig_scriptlets + +%files +%license LICENSE +%doc README.md +%{_libdir}/libffi.so.8 +%{_libdir}/libffi.so.8.1.0 + +%files devel +%{_libdir}/pkgconfig/*.pc +%{_includedir}/ffi*.h +%{_libdir}/*.so +%{_mandir}/man3/*.gz +%{_infodir}/libffi.info.* + +%changelog +* Thu Aug 26 2021 Carlos O'Donell - 3.4.2-7 +- Remove compat-libffi3.1 subpackage to complete SONAME transition. + Related: rhbz#1891914 + +* Wed Aug 18 2021 Carlos O'Donell - 3.4.2-6 +- Rebuilt for libffi 3.4.2 SONAME transition. Related: rhbz#1891914 + +* Mon Aug 09 2021 Mohan Boddu - 3.4.2-5 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Thu Jul 29 2021 Carlos O'Donell - 3.4.2-4 +- Drop pkgconf support for compat-libffi3.1. + +* Tue Jul 27 2021 Carlos O'Donell - 3.4.2-3 +- Add temporary compat-libffi3.1 for library transition. + +* Thu Jul 22 2021 Fedora Release Engineering - 3.4.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jun 28 2021 Carlos O'Donell - 3.4.2-1 +- Rebase to libffi 3.4.2. + +* Fri Apr 16 2021 Mohan Boddu - 3.1-29 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Jan 26 2021 Fedora Release Engineering - 3.1-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Dec 02 2020 Carlos O'Donell - 3.1-27 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Tue Jul 28 2020 Fedora Release Engineering - 3.1-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Apr 30 2020 DJ Delorie - 3.1-25 +- Add $LIBFFI_TMPDIR environment variable support (#1667620) + +* Wed Jan 29 2020 Fedora Release Engineering - 3.1-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 3.1-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Jul 9 2019 Florian Weimer - 3.1-22 +- Run test suite during build (#1727088) + +* Wed Jun 19 2019 Anthony Green - 3.1-21 +- Fix license tag + +* Wed Apr 24 2019 Björn Esser - 3.1-20 +- Remove hardcoded gzip suffix from GNU info pages + +* Fri Feb 01 2019 Fedora Release Engineering - 3.1-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sun Jul 22 2018 Peter Robinson 3.1-28 +- Fix FTBFS + +* Fri Jul 13 2018 Fedora Release Engineering - 3.1-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 3.1-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 3.1-15 +- Switch to %%ldconfig_scriptlets + +* Thu Aug 03 2017 Fedora Release Engineering - 3.1-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 3.1-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jul 5 2017 Jens Petersen - 3.1-12 +- protect install-info in the rpm scriptlets + https://fedoraproject.org/wiki/Packaging:Scriptlets#Texinfo + +* Tue Jun 20 2017 Anthony Green - 3.1-11 +- fix exec stack problem on aarch64 build + +* Fri Feb 10 2017 Fedora Release Engineering - 3.1-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 3.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 3.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Jan 15 2015 Peter Robinson 3.1-7 +- Add patch to fix issues on aarch64 (rhbz 1174037) + +* Sun Aug 17 2014 Fedora Release Engineering - 3.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Thu Jul 17 2014 Tom Callaway - 3.1-5 +- fix license handling + +* Sun Jun 29 2014 Anthony Green - 3.1-4 +- fix exec stack problem on 32-bit build + +* Thu Jun 12 2014 Dan Horák - 3.1-3 +- fix header path in pkgconfig file + +* Sat Jun 07 2014 Fedora Release Engineering - 3.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon May 19 2014 Anthony Green - 3.1-1 +- fix non-multiarch builds (arm). + +* Mon May 19 2014 Anthony Green - 3.1-0 +- update to 3.1. + +* Sat Aug 03 2013 Fedora Release Engineering - 3.0.13-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue May 28 2013 Tom Callaway - 3.0.13-4 +- fix typos in wrapper headers + +* Mon May 27 2013 Tom Callaway - 3.0.13-3 +- make header files multilib safe + +* Sat May 25 2013 Tom Callaway - 3.0.13-2 +- fix incorrect header pathing (and .pc file) + +* Wed Mar 20 2013 Anthony Green - 3.0.13-1 +- update to 3.0.13 + +* Thu Feb 14 2013 Fedora Release Engineering - 3.0.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Jan 14 2013 Dennis Gilmore - 3.0.11-1 +- update to 3.0.11 + +* Fri Nov 02 2012 Deepak Bhole - 3.0.10-4 +- Fixed source location + +* Fri Aug 10 2012 Dennis Gilmore - 3.0.10-3 +- drop back to 3.0.10, 3.0.11 was never pushed anywhere as the soname bump broke buildroots +- as 3.0.11 never went out no epoch needed. + +* Thu Jul 19 2012 Fedora Release Engineering - 3.0.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Apr 13 2012 Anthony Green - 3.0.11-1 +- Upgrade to 3.0.11. + +* Fri Jan 13 2012 Fedora Release Engineering - 3.0.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Aug 23 2011 Anthony Green - 3.0.10-1 +- Upgrade to 3.0.10. + +* Fri Mar 18 2011 Dan Horák - 3.0.9-3 +- added patch for being careful when defining relatively generic symbols + +* Mon Feb 07 2011 Fedora Release Engineering - 3.0.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Dec 29 2009 Anthony Green - 3.0.9-1 +- Upgrade + +* Fri Jul 24 2009 Fedora Release Engineering - 3.0.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 3.0.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Jul 08 2008 Anthony Green 3.0.5-1 +- Upgrade to 3.0.5 + +* Fri Feb 15 2008 Anthony Green 3.0.1-1 +- Upgrade to 3.0.1 + +* Fri Feb 15 2008 Anthony Green 2.99.9-1 +- Upgrade to 2.99.9 +- Require pkgconfig for the devel package. +- Update summary. + +* Fri Feb 15 2008 Anthony Green 2.99.8-1 +- Upgrade to 2.99.8 + +* Thu Feb 14 2008 Anthony Green 2.99.7-1 +- Upgrade to 2.99.7 + +* Thu Feb 14 2008 Anthony Green 2.99.6-1 +- Upgrade to 2.99.6 + +* Thu Feb 14 2008 Anthony Green 2.99.4-1 +- Upgrade to 2.99.4 + +* Thu Feb 14 2008 Anthony Green 2.99.3-1 +- Upgrade to 2.99.3 + +* Thu Feb 14 2008 Anthony Green 2.99.2-1 +- Created.