My second approach is using the rc tarball in pkgsrc. I had to patch out the verify call. pkgsrc already works around PaX issues mostly, via paxctl on things that do jit, after build and before use, and by
--- libguile/loader.c.orig 2018-01-08 16:21:04.790894906 +0000 +++ libguile/loader.c @@ -484,7 +484,7 @@ map_file_contents (int fd, size_t len, i char *data; #ifdef HAVE_SYS_MMAN_H - data = mmap (NULL, len, PROT_READ, MAP_PRIVATE, fd, 0); + data = mmap (NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); if (data == MAP_FAILED) SCM_SYSERROR; *is_read_only = 1; because (something like, am fuzzy) mprotect (at least ours) can only reduce not add permissions. I still don't understand why this isn't a more widespread issue. With the rc tarball, the build almost works, and now stops at: Making all in guile-readline gmake[2]: Entering directory '/tmp/work/lang/guile30/work/guile-3.0.9rc1/guile-readline' /usr/pkg/bin/gmake all-am gmake[3]: Entering directory '/tmp/work/lang/guile30/work/guile-3.0.9rc1/guile-readline' gmake[3]: *** No rule to make target 'ice-9/readline.scm', needed by 'ice-9/readline.go'. Stop. gmake[3]: Leaving directory '/tmp/work/lang/guile30/work/guile-3.0.9rc1/guile-readline' gmake[2]: *** [Makefile:1984: all] Error 2 gmake[2]: Leaving directory '/tmp/work/lang/guile30/work/guile-3.0.9rc1/guile-readline' gmake[1]: *** [Makefile:2152: all-recursive] Error 1 gmake[1]: Leaving directory '/tmp/work/lang/guile30/work/guile-3.0.9rc1' gmake: *** [Makefile:2038: all] Error 2 *** Error code 2 with or without -j2. I see ice-9/readline.scm in git but not in the rc tarball.