diff --git a/internal/rosa/gnu.go b/internal/rosa/gnu.go index c609f68..1ee76b8 100644 --- a/internal/rosa/gnu.go +++ b/internal/rosa/gnu.go @@ -110,3 +110,32 @@ make DESTDIR=/work install pkg.TarGzip, ))) } + +// NewDiffutils returns a [pkg.Artifact] containing an installation of GNU diffutils. +func (t Toolchain) NewDiffutils() pkg.Artifact { + const ( + version = "3.12" + checksum = "9J5VAq5oA7eqwzS1Yvw-l3G5o-TccUrNQR3PvyB_lgdryOFAfxtvQfKfhdpquE44" + ) + return t.New("diffutils-"+version, []pkg.Artifact{ + t.NewMake(), + }, nil, nil, ` +cd /usr/src/diffutils +test_disable() { chmod +w "$2" && echo "$1" > "$2"; } + +test_disable '#!/bin/sh' gnulib-tests/test-c32ispunct.sh +test_disable 'int main(){return 0;}' gnulib-tests/test-c32ispunct.c + +cd "$(mktemp -d)" +/usr/src/diffutils/configure \ + --prefix=/system \ + --build="${ROSA_TRIPLE}" +make "-j$(nproc)" check +make DESTDIR=/work install +`, pkg.Path(AbsUsrSrc.Append("diffutils"), true, pkg.NewHTTPGetTar( + nil, + "https://ftp.gnu.org/gnu/diffutils/diffutils-"+version+".tar.gz", + mustDecode(checksum), + pkg.TarGzip, + ))) +} diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go index 4d2caf8..898c92c 100644 --- a/internal/rosa/llvm.go +++ b/internal/rosa/llvm.go @@ -127,6 +127,8 @@ func (t Toolchain) newLLVM(variant string, attr *llvmAttr) pkg.Artifact { extra := []pkg.Artifact{ t.NewLibffi(), t.NewPython(), + t.NewPerl(), + t.NewDiffutils(), t.NewKernelHeaders(), } if t == toolchainStage3 {