mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-24 18:58:08 -07:00
dev-lang/ada-bootstrap: new package, add 0_p2021
Split dev-lang/gnat-gpl into dev-lang/ada-bootstrap. This ebuild was initially a clone of dev-lang/gnat-gpl-2021-r5 then had some cleanups done, toolchain.eclass use removed, and simplified what it configures/builds/installs. As I mentioned in799693623d, there were two jobs left -- this fixes the first one: splitting dev-lang/gnat-gpl into its own package which doesn't collide with sys-devel/gcc:10 and also does the least possible work, not with lots of USE, etc.) Some inspiration taken from sys-devel/bpf-toolchain. Considered using the *-toolchain name again but given the purpose of this is *not* just to avoid crossdev use but instead to bootstrap from a binary for Ada, it didn't feel appropriate. (Planned to do this anyway but the issue mentioned in9732ef3475pushed me to get on with it now.) Later versions of ada-bootstrap will be our own binaries for both newer GCC as a base (although this is mostly a nice-to-have and to keep things building rather than it being essential, AFAIK) as well as more importantly musl and other arch support. For that future work, see https://bugs.gentoo.org/940471#c1 for a suggestion from Luke A. Guest. That will be tracked in bug #940472. Bug: https://bugs.gentoo.org/547358 Bug: https://bugs.gentoo.org/919667 Bug: https://bugs.gentoo.org/940472 Closes: https://bugs.gentoo.org/940471 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
5
dev-lang/ada-bootstrap/Manifest
Normal file
5
dev-lang/ada-bootstrap/Manifest
Normal file
@@ -0,0 +1,5 @@
|
||||
DIST gcc-10-2021-20210519-19A74-src.tar.gz 109157702 BLAKE2B 8ec307e4fde35c8726bc7b9702717329695bad928d5222a7bb691cce47500de31a60bcfcbb925129a57cb81d3d7ea92e60599aa7383d5358e63cc087b0482550 SHA512 2e2cc0ec9a3a82816a5d399d2db261c356e106b82a44efd54a1ac882b96549ab8de79c69858127c4397de6e9e9463ce6fb9994fc2e426e7d3d2f98d5efa2edb6
|
||||
DIST gcc-interface-10-2021-20210519-19A75-src.tar.gz 359085 BLAKE2B 75f941a7635f2880cc0192acb49d8e7f567baca7530fb981be14dc6cb1bf46fda0e3c043c8703cdbeeb242b548894e0bc6787adfff0f27198354d150e6e36386 SHA512 0251a93d20c59cc4705963438880fe265e2e0bb94a35b7ddaaf03e9efae60e044e585a2204d0773a46f17b3b774e4d0c73adf852f5d06ba17373d26ed580ca8d
|
||||
DIST gnat-2021-20210519-19A70-src.tar.gz 8765762 BLAKE2B ef48f54c6109566e37bfa5dee9262305d0529b3dfd333ee28bc4e66f4709a0673f673d742bc04deb15dc145404f7618d350dbdf3f2a7ab37c861e57d011946fa SHA512 3cb79be024fdd9b738d99ffc8e224d32bb382b5da2d02b97b2061a5ea58456f33d4564c92e224af2713ce15fd5481edd715e5b9a52abc74fdc142f27e103c201
|
||||
DIST gnat-gpl-2014-x86-linux-bin.tar.gz 233049287 BLAKE2B 2e8bab113f6a319533ec12fdf71c481f72aee227c22bd0cc42a53bd727b323caba1e7b6298053db8b4d3016236b31649b0b255f4ebcbb81a08a69f29f78f13fc SHA512 ac7f53fb4bd71b0e8fbd62abc45de76f7f8f2f405b80e9b60b4b65a6cef6ee98e3b06848e4b752af3c8268237e5a0529cf6145ebc5b33cd6e5cf4928d85f5be2
|
||||
DIST gnat-gpl-2014-x86_64-linux-bin.tar.gz 236253400 BLAKE2B c1db70db9442ba24688b8e323d5a02e2e9707ba1f02835ea551038d0a09aafede93a224091e5186f2f2a9d0f96144027af2184ee05ca1c19cc997a6cf3902df7 SHA512 5e40a251baac3d0ace78352956ca21a7d294d902d344a9ed7a8d376e900468c283721ebfb773adfedbf4d623ace02536505c0147815a0c1908933ad611ea085e
|
||||
183
dev-lang/ada-bootstrap/ada-bootstrap-0_p2021.ebuild
Normal file
183
dev-lang/ada-bootstrap/ada-bootstrap-0_p2021.ebuild
Normal file
@@ -0,0 +1,183 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
MYP=gcc-10-${PV##*_p}-20210519-19A74-src
|
||||
GNATDIR=gnat-${PV##*_p}-20210519-19A70-src
|
||||
INTFDIR=gcc-interface-10-${PV##*_p}-20210519-19A75-src
|
||||
BTSTRP_X86=gnat-gpl-2014-x86-linux-bin
|
||||
BTSTRP_AMD64=gnat-gpl-2014-x86_64-linux-bin
|
||||
BASE_URI=https://community.download.adacore.com/v1
|
||||
|
||||
inherit flag-o-matic toolchain-funcs
|
||||
|
||||
DESCRIPTION="GNAT Ada Compiler - GPL version"
|
||||
HOMEPAGE="http://libre.adacore.com/"
|
||||
SRC_URI="
|
||||
${BASE_URI}/005d2b2eff627177986d2517eb31e1959bec6f3a?filename=${GNATDIR}.tar.gz
|
||||
-> ${GNATDIR}.tar.gz
|
||||
${BASE_URI}/44cd393be0b468cc253bf2cf9cf7804c993e7b5b?filename=${MYP}.tar.gz
|
||||
-> ${MYP}.tar.gz
|
||||
${BASE_URI}/8ace7d06e469d36d726cc8badb0ed78411e727f3?filename=${INTFDIR}.tar.gz
|
||||
-> ${INTFDIR}.tar.gz
|
||||
amd64? (
|
||||
${BASE_URI}/6eb6eef6bb897e4c743a519bfebe0b1d6fc409c6?filename=${BTSTRP_AMD64}.tar.gz&rand=1193
|
||||
-> ${BTSTRP_AMD64}.tar.gz
|
||||
)
|
||||
x86? (
|
||||
${BASE_URI}/c5e9e6fdff5cb77ed90cf8c62536653e27c0bed6?filename=${BTSTRP_X86}.tar.gz&rand=436
|
||||
-> ${BTSTRP_X86}.tar.gz
|
||||
)
|
||||
"
|
||||
S="${WORKDIR}"/${MYP}
|
||||
|
||||
LICENSE="GPL-2 GPL-3"
|
||||
SLOT="0" # TODO: slot based on GCC version used
|
||||
KEYWORDS="-* ~amd64 ~x86"
|
||||
RESTRICT="test"
|
||||
|
||||
BDEPEND="sys-devel/binutils"
|
||||
|
||||
pkg_pretend() {
|
||||
if tc-is-clang; then
|
||||
die "${P} does not build with clang. It is bootstrapped."
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
local bundledchost
|
||||
case ${ARCH} in
|
||||
amd64)
|
||||
BTSTRP=${BTSTRP_AMD64}
|
||||
bundledchost="x86_64"
|
||||
;;
|
||||
x86)
|
||||
BTSTRP=${BTSTRP_X86}
|
||||
bundledchost="i686"
|
||||
;;
|
||||
*)
|
||||
die "Unknown \${ARCH}=${ARCH}!"
|
||||
;;
|
||||
esac
|
||||
|
||||
local cleanup
|
||||
for cleanup in as ld ; do
|
||||
rm "${WORKDIR}"/${BTSTRP}/libexec/gcc/${bundledchost}-pc-linux-gnu/4.7.4/${cleanup} || die
|
||||
|
||||
ln -s "${BROOT}"/usr/bin/${CHOST}-${cleanup} \
|
||||
"${WORKDIR}"/${BTSTRP}/libexec/gcc/${bundledchost}-pc-linux-gnu/4.7.4/${cleanup} || die
|
||||
done
|
||||
|
||||
export GCC="${WORKDIR}"/${BTSTRP}/bin/gcc
|
||||
|
||||
gnatbase=$(basename ${GCC})
|
||||
gnatpath=$(dirname ${GCC})
|
||||
GNATMAKE=${gnatbase/gcc/gnatmake}
|
||||
if [[ ${gnatpath} != "." ]] ; then
|
||||
GNATMAKE="${gnatpath}/${GNATMAKE}"
|
||||
fi
|
||||
|
||||
export CC=${GCC}
|
||||
export CXX="${gnatbase/gcc/g++}"
|
||||
export GNATBIND="${gnatbase/gcc/gnatbind}"
|
||||
export GNATLINK="${gnatbase/gcc/gnatlink}"
|
||||
export GNATLS="${gnatbase/gcc/gnatls}"
|
||||
if [[ ${gnatpath} != "." ]] ; then
|
||||
CXX="${gnatpath}/${CXX}"
|
||||
GNATBIND="${gnatpath}/${GNATBIND}"
|
||||
GNATLINK="${gnatpath}/${GNATLINK}"
|
||||
GNATLS="${gnatpath}/${GNATLS}"
|
||||
fi
|
||||
|
||||
mkdir bin || die
|
||||
local tool
|
||||
for tool in gnat{make,bind,link,ls} ; do
|
||||
ln -s $(type -P ${tool^^}) bin/${tool} || die
|
||||
ln -s $(type -P ${tool^^}) bin/${bundledchost}-pc-linux-gnu-${tool} || die
|
||||
done
|
||||
ln -s $(type -P ${GCC}) bin/gcc || die
|
||||
ln -s $(type -P ${GCC}) bin/${bundledchost}-pc-linux-gnu-gcc || die
|
||||
ln -s $(type -P ${CXX}) bin/g++ || die
|
||||
ln -s $(type -P ${CXX}) bin/${bundledchost}-pc-linux-gnu-g++ || die
|
||||
|
||||
cd .. || die
|
||||
mv ${GNATDIR}/src/ada ${MYP}/gcc/ || die
|
||||
mv ${INTFDIR} ${MYP}/gcc/ada/gcc-interface || die
|
||||
eapply "${FILESDIR}"/${P}-gentoo.patch
|
||||
cd - || die
|
||||
|
||||
sed -i \
|
||||
-e 's:-fcf-protection":":' \
|
||||
libiberty/configure \
|
||||
lto-plugin/configure || die
|
||||
sed -i \
|
||||
-e 's:$(P) ::g' \
|
||||
gcc/ada/gcc-interface/Makefile.in \
|
||||
|| die "sed failed"
|
||||
default
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local adabdir=/usr/lib/${PN}
|
||||
local prefix=${EPREFIX}${adabdir}
|
||||
local -x PATH=${PWD}/bin:${PATH}
|
||||
|
||||
# This version is GCC 4.7.4 with a bolted-on newer GNAT; be very
|
||||
# conservative, we just want it to build for bootstrapping proper
|
||||
# sys-devel/gcc[ada]. We don't need it to be fast.
|
||||
strip-flags
|
||||
strip-unsupported-flags
|
||||
filter-lto
|
||||
append-flags -O2
|
||||
append-flags -fno-strict-aliasing
|
||||
|
||||
local conf=(
|
||||
--{doc,info,man}dir=/.skip # let the real gcc handle docs
|
||||
MAKEINFO=: #922230
|
||||
--prefix="${prefix}"
|
||||
--disable-bootstrap
|
||||
--disable-cc1
|
||||
--disable-cet
|
||||
--disable-gcov #843989
|
||||
--disable-gomp
|
||||
--disable-nls # filename collisions
|
||||
--disable-libcc1
|
||||
--disable-libquadmath
|
||||
--disable-libsanitizer
|
||||
--disable-libssp
|
||||
--disable-libvtv
|
||||
--disable-shared
|
||||
--disable-werror
|
||||
--enable-languages=ada
|
||||
--with-gcc-major-version-only
|
||||
--with-system-zlib
|
||||
--without-isl
|
||||
--without-zstd
|
||||
--disable-multilib
|
||||
)
|
||||
|
||||
# libstdc++ may misdetect sys/sdt.h on systemtap-enabled system and fail
|
||||
# (not passed in conf_gcc above given it is lost in sub-configure calls)
|
||||
local -x glibcxx_cv_sys_sdt_h=no
|
||||
|
||||
mkdir "${WORKDIR}"/build || die
|
||||
cd "${WORKDIR}"/build
|
||||
ECONF_SOURCE="${S}" econf "${conf[@]}"
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
emake -C "${WORKDIR}"/build MAKEINFO=: V=1
|
||||
}
|
||||
|
||||
src_install() {
|
||||
# -j1 to match bug #906155, other packages may be fragile too
|
||||
emake -C "${WORKDIR}"/build -j1 MAKEINFO=: V=1 DESTDIR="${D}" install
|
||||
|
||||
# Delete libdep.a, which has a colliding name and is useless for bpf,
|
||||
# which does not make use of cross-library dependencies: the libdep.a
|
||||
# for the native binutils will do.
|
||||
rm -f "${ED}"/${adabdir}/lib/bfd-plugins/libdep.a || die
|
||||
}
|
||||
|
||||
# TODO: pkg_postinst warning/log?
|
||||
@@ -0,0 +1,72 @@
|
||||
--- a/gcc-10-2021-20210519-19A74-src/gcc/ada/osint.adb 2017-03-10 21:58:02.600710156 +0100
|
||||
+++ b/gcc-10-2021-20210519-19A74-src/gcc/ada/osint.adb 2017-03-10 21:59:38.033983293 +0100
|
||||
@@ -2229,14 +2229,11 @@
|
||||
for J in Start_Of_Prefix .. Name_Len - Prog'Length + 1 loop
|
||||
if Name_Buffer (J .. J + Prog'Length - 1) = Prog then
|
||||
End_Of_Prefix := J - 1;
|
||||
+ Start_Of_Suffix := J + Prog'Length;
|
||||
exit;
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
- if End_Of_Prefix > 1 then
|
||||
- Start_Of_Suffix := End_Of_Prefix + Prog'Length + 1;
|
||||
- end if;
|
||||
-
|
||||
-- Create the new program name
|
||||
|
||||
return new String'
|
||||
--- a/gcc-10-2021-20210519-19A74-src/config/cet.m4 2022-01-01 11:18:09.663425422 +0100
|
||||
+++ b/gcc-10-2021-20210519-19A74-src/config/cet.m4 2022-01-01 11:18:14.809345911 +0100
|
||||
@@ -62,7 +62,6 @@
|
||||
i[[34567]]86-*-linux* | x86_64-*-linux*)
|
||||
may_have_cet=yes
|
||||
save_CFLAGS="$CFLAGS"
|
||||
- CFLAGS="$CFLAGS -fcf-protection"
|
||||
case "$enable_cet" in
|
||||
auto)
|
||||
# Check if target supports multi-byte NOPs
|
||||
--- a/gcc-10-2021-20210519-19A74-src/libiberty/configure 2024-03-02 19:45:34.658271627 +0100
|
||||
+++ b/gcc-10-2021-20210519-19A74-src/libiberty/configure 2024-03-02 19:54:48.013538533 +0100
|
||||
@@ -6709,6 +6709,9 @@
|
||||
if test "$cross_compiling" = yes; then :
|
||||
ac_cv_c_stack_direction=0
|
||||
else
|
||||
+ cat >>confdefs.h <<_ACEOF
|
||||
+extern void exit(int status);
|
||||
+_ACEOF
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
find_stack_direction ()
|
||||
@@ -7539,6 +7542,11 @@
|
||||
if test "$cross_compiling" = yes; then :
|
||||
ac_cv_func_strncmp_works=yes
|
||||
else
|
||||
+ cat >>confdefs.h <<_ACEOF
|
||||
+ extern long unsigned int strlen(const char *s);
|
||||
+ extern char *strcpy(char *dst, const char *src);
|
||||
+ extern int strncmp(const char *s1, const char *s2, long unsigned int n);
|
||||
+_ACEOF
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
--- a/gcc-10-2021-20210519-19A74-src/libsanitizer/configure 2024-03-02 20:41:56.810707374 +0100
|
||||
+++ b/gcc-10-2021-20210519-19A74-src/libsanitizer/configure 2024-03-02 20:43:00.189080219 +0100
|
||||
@@ -16073,6 +16073,7 @@
|
||||
sanitizer_supported=no
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <sys/syscall.h>
|
||||
+#include <unistd.h>
|
||||
int
|
||||
main ()
|
||||
--- a/gcc-10-2021-20210519-19A74-src/libgfortran/configure 2024-03-02 21:57:47.282939696 +0100
|
||||
+++ b/gcc-10-2021-20210519-19A74-src/libgfortran/configure 2024-03-02 21:58:34.702446345 +0100
|
||||
@@ -26391,6 +26391,7 @@
|
||||
#if HAVE_IEEEFP_H
|
||||
# include <ieeefp.h>
|
||||
#endif /* HAVE_IEEEFP_H */
|
||||
+extern void fpsetmask(int);
|
||||
int
|
||||
main ()
|
||||
{
|
||||
16
dev-lang/ada-bootstrap/files/gcc-configure-texinfo.patch
Normal file
16
dev-lang/ada-bootstrap/files/gcc-configure-texinfo.patch
Normal file
@@ -0,0 +1,16 @@
|
||||
Chances are quite good that the installed makeinfo is sufficient.
|
||||
So ignore false positives where the makeinfo installed is so new
|
||||
that it violates the cheesy version grep.
|
||||
|
||||
http://bugs.gentoo.org/198182
|
||||
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -3573,6 +3573,6 @@
|
||||
:
|
||||
else
|
||||
- MAKEINFO="$MISSING makeinfo"
|
||||
+ :
|
||||
fi
|
||||
;;
|
||||
|
||||
7
dev-lang/ada-bootstrap/metadata.xml
Normal file
7
dev-lang/ada-bootstrap/metadata.xml
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="project">
|
||||
<email>ada@gentoo.org</email>
|
||||
</maintainer>
|
||||
</pkgmetadata>
|
||||
Reference in New Issue
Block a user