From 3d062fbd47fd22fae3a4bbdbcb46376b8150a6f4 Mon Sep 17 00:00:00 2001 From: Jacob Heider Date: Tue, 17 Jan 2023 21:37:33 -0500 Subject: [PATCH] Adds glibc package Adds the glibc package definition. This commit introduces the package configuration for glibc, including build instructions, dependencies, and test suite. It aims to provide a functional and well-tested build environment for the GNU C Library. --- projects/gnu.org/glibc/package.yml | 114 +++++++++++++++++++++++++++++ projects/gnu.org/glibc/test.c | 8 ++ 2 files changed, 122 insertions(+) create mode 100644 projects/gnu.org/glibc/package.yml create mode 100644 projects/gnu.org/glibc/test.c diff --git a/projects/gnu.org/glibc/package.yml b/projects/gnu.org/glibc/package.yml new file mode 100644 index 0000000000..8141fa9323 --- /dev/null +++ b/projects/gnu.org/glibc/package.yml @@ -0,0 +1,114 @@ +distributable: + url: https://ftp.gnu.org/gnu/glibc/glibc-{{ version.raw }}.tar.gz + strip-components: 1 + +versions: + url: https://ftp.gnu.org/gnu/glibc/ + match: /glibc-[0-9]+(\.[0-9]+)+\.tar\.gz/ + strip: + - /^glibc-/ + - /\.tar\.gz$/ + +platforms: linux + +build: + dependencies: + gnu.org/make: '>=3.79' + gnu.org/gawk: '>=3' + gnu.org/gcc: '*' + gnu.org/gettext: '*' + gnu.org/texinfo: '*' + gnu.org/bison: '*' + perl.org: '*' + python.org: ^3.13 + working-directory: build + script: + - ../configure $ARGS + - make all + - make install + + - run: for s in $SCRIPTS; do sed -i 's|{{prefix}}|"$(cd "$(dirname "$0")/.." \&\& pwd)"|' $s; done + working-directory: ${{prefix}}/bin + + - run: ln -s ../lib/glibc/ld-{{ version.marketing }}.so ld.so + working-directory: ${{prefix}}/bin + test: make test + env: + SCRIPTS: + - catchsegv + - ldd + - mtrace + - sotruss + - tzselect + - xtrace + ARGS: + - --prefix={{ prefix }} + - --libdir={{ prefix }}/lib/glibc + - --disable-debug + - --disable-dependency-tracking + - --disable-silent-rules + - --disable-werror + - --enable-obsolete-rpc + - --without-gd + - --without-selinux + - --enable-kernel=2.6.0 + - --with-binutils={{deps.gnu.org/binutils.prefix}}/bin + - --disable-multi-arch + CFLAGS: -O2 -fPIC + CXXFLAGS: -O2 -fPIC + LDFLAGS: -pie + +test: + dependencies: + gnu.org/gcc: '*' + env: + linux/x86-64: + ARCH: x86_64 + linux/aarch64: + ARCH: aarch64 + script: + - gcc -o test1 test.c -fPIC -pie + - ./test1 + + - gcc + -nostdinc + -nostdlib + -I{{deps.gnu.org/gcc.prefix}}/lib/gcc/$ARCH-unknown-linux-gnu/{{deps.gnu.org/gcc.version}}/include + -Wl,--rpath="{{prefix}}/lib/glibc" + -Wl,--dynamic-linker={{prefix}}/lib/glibc/ld-{{version.marketing}}.so + -std=c11 + -o test2 + -v + $CFLAGS + {{prefix}}/lib/glibc/crti.o + {{prefix}}/lib/glibc/crt1.o + {{prefix}}/lib/glibc/crtn.o + test.c + -fPIC + -pie + - test "$(./test2)" = "gnu_get_libc_version() = {{version.marketing}}" + +provides: + - bin/catchsegv + - bin/gencat + - bin/getconf + - bin/getent + - bin/iconv + - bin/ldd + - bin/locale + - bin/localedef + - bin/makedb + - bin/mtrace + - bin/pcprofiledump + - bin/pldd + - bin/sotruss + - bin/sprof + - bin/tzselect + - bin/xtrace + - sbin/iconvconfig + - sbin/ldconfig + - sbin/nscd + - sbin/sln + - sbin/zdump + - sbin/zic + diff --git a/projects/gnu.org/glibc/test.c b/projects/gnu.org/glibc/test.c new file mode 100644 index 0000000000..61136fe9a5 --- /dev/null +++ b/projects/gnu.org/glibc/test.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include + +int main(int argc, char **argv) { + /* Basic library version check. */ + printf("gnu_get_libc_version() = %s\n", gnu_get_libc_version()); +} \ No newline at end of file