NetBSD uses an empty vendor string in a GNU target triplet, like `x86_64--netbsd' or `armv7--netbsdelf-eabihf'; it's been like this since the mid-'90s. (Before that, NetBSD omitted the vendor altogether, so if x86_64 existed then it might have been `x86_64-netbsd'.) This runs afoul of a rule in guile's validate-target in module/system/base/target.scm that requires all components to be nonempty, so pkgsrc's guile build has been carrying around a workaround -- just for guile, not for any other packages I know of -- for ages. Without the workaround in pkgsrc: > BOOTSTRAP(stage0) GUILEC ice-9/eval.go > Backtrace: > 7 (apply-smob/1 # # ?) > 6 (apply-smob/1 #) > 5 (apply-smob/0 #) > 4 (primitive-eval ((@ (ice-9 control) %) (begin (# #) ?))) > 3 (apply-smob/1 #) > 2 (apply-smob/1 #) > 1 (scm-error misc-error #f "~A ~S" ("invalid target" "?") #) > 0 (apply-smob/1 # # #f ?) > > ERROR: In procedure apply-smob/1: > invalid target "x86_64--netbsd" The attached patch relaxes validate-target so it accepts an empty vendor string (but still requires all other components to be nonempty as before). With the patch and without the workaround in pkgsrc, guile builds happily.