On Sun, Jun 04, 2023 at 05:48:24PM +0000, Brian Callahan wrote: > Hi ports -- > > Attached is an update to devel/dwz. The main benefit for us is a modest > speedup. > > The full announcement with changes is here: > https://sourceware.org/pipermail/dwz/2022q4/001385.html > > Seems OK on my end on amd64. But since dwz is integral for debug > packages, looking for more eyeballs. > > OK? > > ~Brian
You fetch xxhash and turn it into a local include. Did you try adding the following as dependency instead? $ pkglocate include/xxhash.h xxhash-0.8.1p0:sysutils/xxhash:/usr/local/include/xxhash.h > Index: Makefile > =================================================================== > RCS file: /cvs/ports/devel/dwz/Makefile,v > retrieving revision 1.6 > diff -u -p -r1.6 Makefile > --- Makefile 11 Mar 2022 18:50:00 -0000 1.6 > +++ Makefile 29 Nov 2022 23:40:09 -0000 > @@ -1,5 +1,8 @@ > COMMENT = DWARF optimization and duplicate removal tool > -DISTNAME = dwz-0.14 > +PKGNAME = dwz-0.15 > +XXHASH_V = 0.8.1 > +DISTFILES = ${PKGNAME}.tar.gz:0 \ > + xxhash-${XXHASH_V}{xxhash}.h:1 > > CATEGORIES = devel > > @@ -11,7 +14,8 @@ PERMIT_PACKAGE = Yes > > WANTLIB += c elf > > -MASTER_SITES = https://sourceware.org/ftp/dwz/releases/ > +MASTER_SITES0 = https://sourceware.org/ftp/dwz/releases/ > +MASTER_SITES1 = > https://raw.githubusercontent.com/Cyan4973/xxHash/v${XXHASH_V}/ > > DEBUG_PACKAGES = ${BUILD_PACKAGES} > > @@ -25,5 +29,23 @@ WRKDIST = ${WRKDIR}/dwz > # XXX bootstrap: DEBUG_PACKAGES needs a dwz binary to work > > DWZ = ${WRKBUILD}/dwz > + > +EXTRACT_ONLY = ${PKGNAME}.tar.gz > + > +post-extract: > + cp ${DISTDIR}/xxhash-${XXHASH_V}.h ${WRKSRC}/xxhash.h > + > +.include <bsd.port.arch.mk> > +.if ${PROPERTIES:Mlp64} > +CFLAGS += -DNATIVE_POINTER_SIZE=8 > +.else > +CFLAGS += -DNATIVE_POINTER_SIZE=4 > +.endif > + > +.if ${PROPERTIES:Mle} > +CFLAGS += -DNATIVE_ENDIAN_VAL=ELFDATA2LSB > +.else > +CFLAGS += -DNATIVE_ENDIAN_VAL=ELFDATA2MSB > +.endif > > .include <bsd.port.mk> > Index: distinfo > =================================================================== > RCS file: /cvs/ports/devel/dwz/distinfo,v > retrieving revision 1.2 > diff -u -p -r1.2 distinfo > --- distinfo 8 Mar 2021 16:51:11 -0000 1.2 > +++ distinfo 29 Nov 2022 23:40:09 -0000 > @@ -1,2 +1,4 @@ > -SHA256 (dwz-0.14.tar.gz) = MwBuq4df8KB/E/yIWIPFvZUU2D7OqfGLxGtXMt3fDR8= > -SIZE (dwz-0.14.tar.gz) = 186623 > +SHA256 (dwz-0.15.tar.gz) = 7VnGEuIEFeaX+8RRH1J+91cAe8VvoalU5JrKHans+0Q= > +SHA256 (xxhash-0.8.1.h) = 1PK5G1R8eQYWSRhnIaazMWCfK/hZVIWiHqYxyC7D75M= > +SIZE (dwz-0.15.tar.gz) = 192777 > +SIZE (xxhash-0.8.1.h) = 209646 > Index: patches/patch-Makefile > =================================================================== > RCS file: /cvs/ports/devel/dwz/patches/patch-Makefile,v > retrieving revision 1.3 > diff -u -p -r1.3 patch-Makefile > --- patches/patch-Makefile 11 Mar 2022 18:50:00 -0000 1.3 > +++ patches/patch-Makefile 29 Nov 2022 23:40:09 -0000 > @@ -6,31 +6,76 @@ Convert to bsd make > Index: Makefile > --- Makefile.orig > +++ Makefile > -@@ -1,20 +1,16 @@ > +@@ -1,51 +1,21 @@ > -ifneq ($(srcdir),) > -VPATH = $(srcdir) > -else > -srcdir=$(shell pwd) > -endif > +- > -CFLAGS = -O2 -g > -DWZ_VERSION := $(shell cat $(srcdir)/VERSION) > --override CFLAGS += -Wall -W -D_FILE_OFFSET_BITS=64 \ > -- -DDWZ_VERSION='"$(DWZ_VERSION)"' $(shell cat $(srcdir)/COPYRIGHT_YEARS) > +-CFLAGS_VERSION = -DDWZ_VERSION='"$(DWZ_VERSION)"' > +-CFLAGS_COPYRIGHT = $(shell cat $(srcdir)/COPYRIGHT_YEARS) > +-CFLAGS_COMMON = -Wall -W -D_FILE_OFFSET_BITS=64 > +-XXH_PROG = "\#define XXH_INLINE_ALL 1\n\#include <xxhash.h>\n" > +-XXH_INLINE_ALL_WORKS = $(shell printf $(XXH_PROG) \ > +- | $(CC) -xc -c - -o /dev/null 2>/dev/null \ > +- && echo -n 1) > +-ifeq "$(XXH_INLINE_ALL_WORKS)" "1" > +- CFLAGS_COMMON += -DXXH_INLINE_ALL=1 > +-endif > +- > +-override CFLAGS += $(CFLAGS_COMMON) $(CFLAGS_VERSION) $(CFLAGS_COPYRIGHT) > +- > +srcdir = . > +CFLAGS ?= -O2 -g > +DWZ_VERSION != cat $(srcdir)/VERSION > +CFLAGS += -DDWZ_VERSION='"$(DWZ_VERSION)"' > +CFLAGS !+= cat $(srcdir)/COPYRIGHT_YEARS > ++CFLAGS += -D_FILE_OFFSET_BITS=64 > ++CFLAGS += -DXXH_INLINE_ALL=1 > prefix = /usr > exec_prefix = $(prefix) > bindir = $(exec_prefix)/bin > datarootdir = $(prefix)/share > mandir = $(datarootdir)/man > --OBJECTS = dwz.o hashtab.o sha1.o dwarfnames.o > -+OBJECTS = dwz.o hashtab.o sha1.o dwarfnames.o obstack.o > +-OBJECTS = args.o dwz.o hashtab.o pool.o sha1.o dwarfnames.o > ++OBJECTS = args.o dwz.o hashtab.o pool.o sha1.o dwarfnames.o obstack.o > + LIBS=-lelf > +-ifneq "$(XXH_INLINE_ALL_WORKS)" "1" > +-LIBS += -lxxhash > +-endif > dwz: $(OBJECTS) > -- $(CC) $(LDFLAGS) -o $@ $^ -lelf > -+ $(CC) $(LDFLAGS) -o $@ $(OBJECTS) -lelf > +- $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) > +-args.o: native.o > +-args.o: CFLAGS_FOR_SOURCE = \ > +- -DNATIVE_ENDIAN_VAL=$(NATIVE_ENDIAN_VAL) \ > +- -DNATIVE_POINTER_SIZE=$(NATIVE_POINTER_SIZE) > +-NATIVE_ENDIAN=$(shell readelf -h native.o \ > +- | grep Data \ > +- | sed 's/.*, //;s/ endian//') > +-NATIVE_ENDIAN_LITTLE=$(findstring $(NATIVE_ENDIAN),$(findstring > little,$(NATIVE_ENDIAN))) > +-NATIVE_ENDIAN_BIG=$(findstring $(NATIVE_ENDIAN),$(findstring > big,$(NATIVE_ENDIAN))) > +-NATIVE_ENDIAN_VAL=$(if $(NATIVE_ENDIAN_LITTLE),ELFDATA2LSB,$(if > $(NATIVE_ENDIAN_BIG),ELFDATA2MSB,ELFDATANONE)) > +-NATIVE_POINTER_SIZE=$(shell readelf -wi native.o \ > +- | grep "Pointer Size:" \ > +- | sed 's/.*: *//') > ++ $(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBS) > + %.o: %.c > +- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< $(CFLAGS_FOR_SOURCE) > ++ $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< > install: dwz > install -D dwz $(DESTDIR)$(bindir)/dwz > install -D -m 644 $(srcdir)/dwz.1 $(DESTDIR)$(mandir)/man1/dwz.1 > +@@ -53,10 +23,6 @@ clean: > + rm -f $(OBJECTS) *~ core* dwz $(TEST_EXECS) $(DWZ_TEST_OBJECTS) \ > + dwz.log dwz.sum native.c native.o > + rm -Rf testsuite-bin tmp.* > +-native.c: > +- echo "int main (void) { return 0; }" > $@ > +-native.o: native.c > +- $(CC) -o $@ $< -c -g > + > + PWD:=$(shell pwd -P) > + > Index: patches/patch-args_c > =================================================================== > RCS file: patches/patch-args_c > diff -N patches/patch-args_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-args_c 29 Nov 2022 23:40:09 -0000 > @@ -0,0 +1,32 @@ > +Correctly get processors online. > + > +Index: args.c > +--- args.c.orig > ++++ args.c > +@@ -25,14 +25,15 @@ > + #include <stdio.h> > + #include <string.h> > + #include <stdlib.h> > +-#include <error.h> > ++#include <unistd.h> > + #include <gelf.h> > +-#include <sys/sysinfo.h> > + > + #include "args.h" > + > + #include "util.h" > + > ++extern void error(int, int, const char *, ...); > ++ > + #if DEVEL > + int tracing; > + int ignore_size; > +@@ -735,7 +736,7 @@ parse_args (int argc, char *argv[], bool *hardlink, co > + > + if (max_forks == -1) > + { > +- long nprocs = get_nprocs (); > ++ long nprocs = sysconf(_SC_NPROCESSORS_ONLN); > + /* Be conservative on max forks: 4 procs may be actually be 4 SMT > + threads with only 2 cores. */ > + max_forks = nprocs / 2; > Index: patches/patch-dwz_c > =================================================================== > RCS file: /cvs/ports/devel/dwz/patches/patch-dwz_c,v > retrieving revision 1.3 > diff -u -p -r1.3 patch-dwz_c > --- patches/patch-dwz_c 11 Mar 2022 18:50:00 -0000 1.3 > +++ patches/patch-dwz_c 29 Nov 2022 23:40:09 -0000 > @@ -1,39 +1,46 @@ > Create error() function, Linux-ism. > Our libelf doesn't have some of these defines. > obstack is not a system header > +xxhash is not a system header > > Index: dwz.c > --- dwz.c.orig > +++ dwz.c > -@@ -20,11 +20,11 @@ > +@@ -20,13 +20,13 @@ > > #include <assert.h> > #include <errno.h> > -#include <error.h> > #include <fcntl.h> > - #include <getopt.h> > #include <setjmp.h> > #include <string.h> > -+#include <stdarg.h> > #include <stdbool.h> > #include <stddef.h> > #include <stdint.h> > -@@ -36,7 +36,7 @@ > - #include <sys/types.h> > ++#include <stdarg.h> > + #include <inttypes.h> > + #include <stdlib.h> > + #include <unistd.h> > +@@ -36,10 +36,10 @@ > #include <sys/times.h> > + #include <sys/wait.h> > > -#include <obstack.h> > +#include "obstack.h" > > #include <gelf.h> > +-#include <xxhash.h> > ++#include "xxhash.h" > + > #include "dwarf2.h" > -@@ -165,6 +165,29 @@ report_progress (void) > + #include "hashtab.h" > +@@ -216,6 +216,29 @@ report_progress (void) > /* Where to longjmp on OOM. */ > static jmp_buf oom_buf; > > +/* error () wrapper based on the Linux manual page at > + http://man7.org/linux/man-pages/man3/error.3.html. */ > -+static void > ++void > +error (int status, int errnum, const char *fmt, ...) > +{ > + va_list ap; > @@ -57,7 +64,7 @@ Index: dwz.c > /* Handle OOM situation. If handling more than one file, we might > just fail to handle some large file due to OOM, but could very well > handle other smaller files after it. */ > -@@ -13723,7 +13746,7 @@ fdopen_dso (int fd, const char *name) > +@@ -13675,7 +13698,7 @@ fdopen_dso (int fd, const char *name) > int i; > DSO *dso = NULL; > > @@ -66,7 +73,7 @@ Index: dwz.c > if (elf == NULL) > { > error (0, 0, "cannot open ELF file: %s", elf_errmsg (-1)); > -@@ -13761,7 +13784,7 @@ fdopen_dso (int fd, const char *name) > +@@ -13713,7 +13736,7 @@ fdopen_dso (int fd, const char *name) > goto error_out; > } > > @@ -75,7 +82,7 @@ Index: dwz.c > > memset (dso, 0, sizeof(DSO)); > dso->elf = elf; > -@@ -14258,7 +14281,7 @@ write_dso (DSO *dso, const char *file, struct stat > *st > +@@ -14210,7 +14233,7 @@ write_dso (DSO *dso, const char *file, struct stat > *st > free (shstrtab); > return 1; > } > @@ -84,7 +91,7 @@ Index: dwz.c > for (i = 0; i < ehdr.e_phnum; ++i) > { > GElf_Phdr *phdr, phdr_mem; > -@@ -14331,7 +14354,7 @@ write_dso (DSO *dso, const char *file, struct stat > *st > +@@ -14283,7 +14306,7 @@ write_dso (DSO *dso, const char *file, struct stat > *st > } > } > > @@ -93,7 +100,7 @@ Index: dwz.c > { > error (0, 0, "%s: elf_update failed", dso->filename); > unlink (file); > -@@ -15917,7 +15940,7 @@ optimize_multifile (unsigned int *die_count) > +@@ -15902,7 +15925,7 @@ optimize_multifile (unsigned int *die_count) > error (0, 0, "Could not create new ELF headers"); > goto fail; > } > @@ -102,7 +109,7 @@ Index: dwz.c > > sha1_init_ctx (&ctx); > for (i = 0; debug_sections[i].name; i++) > -@@ -16010,7 +16033,7 @@ optimize_multifile (unsigned int *die_count) > +@@ -15995,7 +16018,7 @@ optimize_multifile (unsigned int *die_count) > data->d_off = 0; > data->d_align = 1; >