summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/glibc/package.py
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2023-09-11 19:45:53 +0200
committerGitHub <noreply@github.com>2023-09-11 10:45:53 -0700
commita0bd53148be23b598052b7851ca83ce35c3d7cfc (patch)
treee1165b568093dc1adaff4683b15156e2a10cc28b /var/spack/repos/builtin/packages/glibc/package.py
parent3302b176fd60c4a8e09726f70667af1f3172d5b7 (diff)
downloadspack-a0bd53148be23b598052b7851ca83ce35c3d7cfc.tar.gz
spack-a0bd53148be23b598052b7851ca83ce35c3d7cfc.tar.bz2
spack-a0bd53148be23b598052b7851ca83ce35c3d7cfc.tar.xz
spack-a0bd53148be23b598052b7851ca83ce35c3d7cfc.zip
glibc: fix deps, drop pre 2.17 (#39806)
* glibc: add missing deps, drop < 2.17 Building glibc 2.17 requires linking libgcc_{s,eh}.a, which themselves depend on whatever glibc the current gcc uses for its runtime libraries. Newer gcc depends on gnu extensions of libdl it seems, so that means you simply cannot build old glibc with gcc-using-new-glibc. The relevant fix in glibc is this commit: commit 95f5a9a866695da4e038aa4e6ccbbfd5d9cf63b7 Author: Joseph Myers <joseph@codesourcery.com> Date: Tue Jul 3 19:14:59 2012 +0000 Avoid use of libgcc_s and libgcc_eh when building glibc. See also references to that commit in the glibc mailing list. * update the gmake bound * add --without-selinux
Diffstat (limited to 'var/spack/repos/builtin/packages/glibc/package.py')
-rw-r--r--var/spack/repos/builtin/packages/glibc/package.py61
1 files changed, 22 insertions, 39 deletions
diff --git a/var/spack/repos/builtin/packages/glibc/package.py b/var/spack/repos/builtin/packages/glibc/package.py
index b0566f0427..38c568c9e4 100644
--- a/var/spack/repos/builtin/packages/glibc/package.py
+++ b/var/spack/repos/builtin/packages/glibc/package.py
@@ -44,17 +44,11 @@ class Glibc(AutotoolsPackage, GNUMirrorPackage):
version("2.19", sha256="18ad6db70724699d264add80b1f813630d0141cf3a3558b4e1a7c15f6beac796")
version("2.18", sha256="c8e727b5feef883184241a4767725ec280c0288794bc5cd4432497370db47734")
version("2.17", sha256="a3b2086d5414e602b4b3d5a8792213feb3be664ffc1efe783a829818d3fca37a")
- version("2.16.0", sha256="a75be51658cc1cfb6324ec6dbdbed416526c44c14814823129f0fcc74c279f6e")
- version("2.15", sha256="da6b95d14b722539c2ec02e7ae1221318dba3d27f19c098a882ffa71bb429c20")
- version("2.14.1", sha256="f80c40897df49c463a6d5a45f734acbfe1bf42ef209a92a5c217aeb383631bdb")
- version("2.13", sha256="bd90d6119bcc2898befd6e1bbb2cb1ed3bb1c2997d5eaa6fdbca4ee16191a906")
- version("2.12.2", sha256="6b7392a7b339a3f2db6e4bc8d5418cf29116d9e7e36b313e845cb65e449c5346")
- version("2.11.3", sha256="ddc3210f4029991f5142fda7f269f9bfb197917e5d9445ba2d90d31f74cc2765")
- version("2.10.1", sha256="cd9743db33389e7b4eb2942a4f365d12fc015f115113b230152280c43ccc7e3f")
- version("2.9", sha256="e0210dec2a4ca0a03d8ee26e2a4ebccc915d99f4cdb1489ff0f9f4ce7bda3e30")
- version("2.8", sha256="a5b91339355a7bbafc5f44b524556f7f25de83dd56f2c00ef9240dabd6865663")
- version("2.7", sha256="f5ef515cb70f8d4cfcee0b3aac05b73def60d897bdb7a71f4356782febfe415a")
- version("2.6.1", sha256="6be7639ccad715d25eef560ce9d1637ef206fb9a162714f6ab8167fc0d971cae")
+
+ # Spack commit 29aa7117f42f758bc537e03e4bedf66ced0accfa has older versions
+ # of glibc, but they are removed, because glibc < 2.17 links against
+ # libgcc_s and libgcc_eh, see glibc commit "Avoid use of libgcc_s and
+ # libgcc_eh when building glibc." 95f5a9a866695da4e038aa4e6ccbbfd5d9cf63b7
# Fix for newer GCC, related to -fno-common
patch("locs.patch", when="@2.23:2.25")
@@ -63,21 +57,9 @@ class Glibc(AutotoolsPackage, GNUMirrorPackage):
# _obstack_compat symbol is not initialized
patch("39b1f61.patch", when="@:2.17")
- # docs: install fails with "unknown command hsep / vsep"
- patch("texi.patch", when="@2.16.0")
-
- # rpc/types.h include issue, should be from local version, not system.
- patch("fb21f89.patch", when="@:2.16")
-
- # Use init_array (modified commit 4a531bb to unconditionally define
- # NO_CTORS_DTORS_SECTIONS)
- patch("4a531bb.patch", when="@:2.12")
-
- # make: mixed implicit and static pattern rules (trivial issue in docs)
- patch("32cf406.patch", when="@:2.10")
-
- # linker flag output regex
- patch("7c8a673.patch", when="@:2.9")
+ def setup_build_environment(self, env):
+ if self.spec.satisfies("@:2.21"):
+ env.append_flags("LDFLAGS", "-no-pie")
def patch(self):
# Support gmake >= 4
@@ -88,15 +70,13 @@ class Glibc(AutotoolsPackage, GNUMirrorPackage):
string=True,
)
- # Suport gcc >= 5
+ # Support gcc >= 10
filter_file(
- "3.4* | 4.[0-9]* )",
- "3.4* | 4.[0-9]* | [5-9].* | [1-9][0-9]*)",
+ "4.[3-9].* | 4.[1-9][0-9].* | [5-9].* )",
+ "4.[3-9].* | 4.[1-9][0-9].* | [5-9].* | [1-9][0-9]*)",
"configure",
string=True,
)
-
- # Support gcc >= 10
filter_file(
"4.[4-9].* | 4.[1-9][0-9].* | [5-9].* )",
"4.[4-9].* | 4.[1-9][0-9].* | [5-9].* | [1-9][0-9]*)",
@@ -104,18 +84,20 @@ class Glibc(AutotoolsPackage, GNUMirrorPackage):
string=True,
)
- # Support binutils
- filter_file(
- "2.1[3-9]*)",
- "2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*)",
- "configure",
- string=True,
- )
-
depends_on("bison", type="build")
depends_on("texinfo", type="build")
depends_on("gettext", type="build")
depends_on("perl", type="build")
+ depends_on("gawk", type="build")
+ depends_on("sed", type="build")
+ depends_on("gmake", type="build")
+
+ # See 2d7ed98add14f75041499ac189696c9bd3d757fe
+ depends_on("gmake@:4.3", type="build", when="@:2.36")
+
+ # From 2.29: generates locale/C-translit.h
+ # before that it's a test dependency.
+ depends_on("python@3.4:", type="build", when="@2.29:")
depends_on("linux-headers")
@@ -128,6 +110,7 @@ class Glibc(AutotoolsPackage, GNUMirrorPackage):
return [
"--enable-kernel=4.4.1",
"--with-headers={}".format(self.spec["linux-headers"].prefix.include),
+ "--without-selinux",
]
def build(self, spec, prefix):