From 447e3f0245a20dcab9d5127ea0bae3b11d0f4464 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Mon, 11 Dec 2023 13:36:10 -0500 Subject: [PATCH] bz2 fix absolute symlinks (#4365) * for some reason these symlinks are created absolute, fix that * restore the makefile to make the dylib on darwin * it was failing due to bzip2 being a dep for brewkit --- .../bzip2/Makefile-libbz2_dylib | 44 ++++++++++ projects/sourceware.org/bzip2/package.yml | 84 ++++++++++++------- 2 files changed, 100 insertions(+), 28 deletions(-) create mode 100644 projects/sourceware.org/bzip2/Makefile-libbz2_dylib diff --git a/projects/sourceware.org/bzip2/Makefile-libbz2_dylib b/projects/sourceware.org/bzip2/Makefile-libbz2_dylib new file mode 100644 index 00000000..13d08d9b --- /dev/null +++ b/projects/sourceware.org/bzip2/Makefile-libbz2_dylib @@ -0,0 +1,44 @@ +# This Makefile builds a shared version of the library, +# libbz2.dylib for MacOSX x86 (10.13.4 or higher), +# It is a custom Makefile. Use at own risk. +# Run in your MacOS terminal with the following command: +# make -f Makefile-libbz2_dylib + +PKG_VERSION?=1.0.8 +PREFIX?=/usr/local + +# SHELL=/bin/sh +# CC=gcc +BIGFILES=-D_FILE_OFFSET_BITS=64 +CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) + +OBJS= blocksort.o \ + huffman.o \ + crctable.o \ + randtable.o \ + compress.o \ + decompress.o \ + bzlib.o + +all: $(OBJS) + $(CC) -shared -Wl,-install_name -Wl,libbz2.dylib -o libbz2.${PKG_VERSION}.dylib $(OBJS) + cp libbz2.${PKG_VERSION}.dylib ${PREFIX}/lib/ + ln -s libbz2.${PKG_VERSION}.dylib ${PREFIX}/lib/libbz2.dylib + +clean: + rm -f libbz2.dylib libbz2.${PKG_VERSION}.dylib + +blocksort.o: blocksort.c + $(CC) $(CFLAGS) -c blocksort.c +huffman.o: huffman.c + $(CC) $(CFLAGS) -c huffman.c +crctable.o: crctable.c + $(CC) $(CFLAGS) -c crctable.c +randtable.o: randtable.c + $(CC) $(CFLAGS) -c randtable.c +compress.o: compress.c + $(CC) $(CFLAGS) -c compress.c +decompress.o: decompress.c + $(CC) $(CFLAGS) -c decompress.c +bzlib.o: bzlib.c + $(CC) $(CFLAGS) -c bzlib.c diff --git a/projects/sourceware.org/bzip2/package.yml b/projects/sourceware.org/bzip2/package.yml index 58fd32a4..56416c06 100644 --- a/projects/sourceware.org/bzip2/package.yml +++ b/projects/sourceware.org/bzip2/package.yml @@ -9,48 +9,76 @@ versions: provides: - bin/bunzip2 - bin/bzcat + - bin/bzcmp - bin/bzdiff - bin/bzgrep + - bin/bzegrep + - bin/bzfgrep - bin/bzip2 - bin/bzip2recover - bin/bzmore + - bin/bzless build: - script: | - make \ - --environment-overrides \ - --jobs {{ hw.concurrency }} \ - install + script: + - make --environment-overrides + - make --environment-overrides install - case {{ hw.platform }} in - linux) - make \ - --file Makefile-libbz2_so \ - --environment-overrides \ - --jobs {{ hw.concurrency }} + # fix absolute symlinks + - run: | + for x in *; do + if [ -L $x ]; then + y="$(readlink $x)" + rm $x + ln -s $(basename "$y") $x + fi + done + working-directory: '{{prefix}}/bin' - mv libbz2.*.1.* {{ prefix }}/lib - cd {{ prefix }}/lib - test -e libbz2.so || ln -s libbz2.so.{{ version }} libbz2.so - test -e libbz2.so.{{ version.major }} || ln -s libbz2.so.{{ version }} libbz2.so.{{ version.major }} - ;; - darwin) - cd {{ prefix }}/lib - test -e libbz2.dylib - test -e libbz2.{{version}}.dylib - test -e libbz2.{{version.major}}.dylib - ;; - esac + - if: linux + run: | + make \ + --file Makefile-libbz2_so \ + --environment-overrides \ + --jobs {{ hw.concurrency }} + + mv libbz2.*.1.* {{ prefix }}/lib + cd {{ prefix }}/lib + test -e libbz2.so || ln -s libbz2.so.{{ version }} libbz2.so + test -e libbz2.so.{{ version.major }} || ln -s libbz2.so.{{ version }} libbz2.so.{{ version.major }} + + - if: darwin + run: | + # necessary until brewkit v1 + if [ -n "$(ls {{ prefix }}/lib/*.dylib)" ]; then + rm {{ prefix }}/lib/*.dylib + fi + + make \ + --file props/Makefile-libbz2_dylib \ + --environment-overrides \ + --jobs {{ hw.concurrency }} + + cd {{ prefix }}/lib + test -e libbz2.dylib + test -e libbz2.{{version}}.dylib + ln -s libbz2.{{version}}.dylib libbz2.{{version.major}}.dylib env: - CFLAGS: -fPIC # so deps link without relocation issues on linux/aarch64 PREFIX: ${{ prefix }} darwin: PKG_VERSION: ${{ version }} test: - script: | - OUT=$(echo "$INPUT" | bzip2 | bunzip2) - test "$OUT" = "$INPUT" + script: + - | + OUT=$(echo "$INPUT" | bzip2 | bunzip2) + test "$OUT" = "$INPUT" + # test symlinks are functional + # sadly bzegrep has no `--help` + - | + echo "$INPUT" > file + bzip2 file + bzegrep test-string file.bz2 env: - INPUT: tea.xyz + INPUT: tea.xyz.test-string