From 29aa7117f42f758bc537e03e4bedf66ced0accfa Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 4 Sep 2023 07:55:57 +0200 Subject: glibc: add package (#39695) --- var/spack/repos/builtin/packages/glibc/package.py | 140 ++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 var/spack/repos/builtin/packages/glibc/package.py (limited to 'var/spack/repos/builtin/packages/glibc/package.py') diff --git a/var/spack/repos/builtin/packages/glibc/package.py b/var/spack/repos/builtin/packages/glibc/package.py new file mode 100644 index 0000000000..b0566f0427 --- /dev/null +++ b/var/spack/repos/builtin/packages/glibc/package.py @@ -0,0 +1,140 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import os + +from spack.package import * +from spack.util.elf import delete_rpath + + +class Glibc(AutotoolsPackage, GNUMirrorPackage): + """The GNU C Library provides many of the low-level components used + directly by programs written in the C or C++ languages.""" + + homepage = "https://www.gnu.org/software/libc/" + gnu_mirror_path = "libc/glibc-2.33.tar.gz" + git = "https://sourceware.org/git/glibc.git" + + maintainers("haampie") + + build_directory = "build" + + version("master", branch="master") + version("2.38", sha256="16e51e0455e288f03380b436e41d5927c60945abd86d0c9852b84be57dd6ed5e") + version("2.37", sha256="e3a790c2f84eed5c5d569ed6172c253c607dd3962135437da413aa39aa4fd352") + version("2.36", sha256="02efa6ffbbaf3e10e88f16818a862608d04b0ef838c66f6025ae120530792c9c") + version("2.35", sha256="3e8e0c6195da8dfbd31d77c56fb8d99576fb855fafd47a9e0a895e51fd5942d4") + version("2.34", sha256="255b7632746b5fdd478cb7b36bebd1ec1f92c2b552ee364c940f48eb38d07f62") + version("2.33", sha256="ad7dbed6b0cde9ddc90e84856da7e2c1f976a5e791cdee947d8dbb0392fc76cf") + version("2.32", sha256="f52e5bdc6607cb692c0f7134b75b3ba34b5121628a1750c03e3c9aa0b9d9e65a") + version("2.31", sha256="cb2d64fb808affff30d8a99a85de9d2aa67dc2cbac4ae99af4500d6cfea2bda7") + version("2.30", sha256="decb0a29f1410735bed0e8e7247361da2bbf0dcfef7ac15bf26e7f910cb964c0") + version("2.29", sha256="2fc8c555fd0e5dab5b91e7dd0422865c1885be89ff080b2c1357041afbbc717f") + version("2.28", sha256="f318d6e3f1f4ed0b74d2832ac4f491d0fb928e451c9eda594cbf1c3bee7af47c") + version("2.27", sha256="881ca905e6b5eec724de7948f14d66a07d97bdee8013e1b2a7d021ff5d540522") + version("2.26", sha256="dcc2482b00fdb1c316f385f8180e182bbd37c065dc7d8281a4339d2834ef1be7") + version("2.25", sha256="ad984bac07844ecc222039d43bd5f1f1e1571590ea28045232ae3fa404cefc32") + version("2.24", sha256="7e01959a42d37739e40d8ce58f9c14750cc68bc8a8669889ed586f9f03b91fbe") + version("2.23", sha256="2bd08abb24811cda62e17e61e9972f091f02a697df550e2e44ddcfb2255269d2") + version("2.22", sha256="a62610c4084a0fd8cec58eee12ef9e61fdf809c31e7cecbbc28feb8719f08be5") + version("2.21", sha256="8d8f78058f2e9c7237700f76fe4e0ae500db31470290cd0b8a9739c0c8ce9738") + version("2.20", sha256="37e1de410d572a19b707b99786db9822bb4775e9d70517d88937ab12e6d6debc") + 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") + + # Fix for newer GCC, related to -fno-common + patch("locs.patch", when="@2.23:2.25") + patch("locs-2.22.patch", when="@:2.22") + + # _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 patch(self): + # Support gmake >= 4 + filter_file( + " 3.79* | 3.[89]*)", + " 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*)", + "configure", + string=True, + ) + + # Suport gcc >= 5 + filter_file( + "3.4* | 4.[0-9]* )", + "3.4* | 4.[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]*)", + "configure", + 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("linux-headers") + + with when("@master"): + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("libtool", type="build") + + def configure_args(self): + return [ + "--enable-kernel=4.4.1", + "--with-headers={}".format(self.spec["linux-headers"].prefix.include), + ] + + def build(self, spec, prefix): + # 1. build just ld.so + # 2. drop the rpath from ld.so -- otherwise it cannot be executed + # 3. do the rest of the build that may directly run ld.so + with working_dir(self.build_directory): + make("-C", "..", f"objdir={os.getcwd()}", "lib") + delete_rpath(join_path("elf", "ld.so")) + make() -- cgit v1.2.3-60-g2f50