Tue May 14 22:38:58 2024 UTC (33d)
coyim: make some progress on build on NetBSD

Dies with
# github.com/coyim/coyim
/usr/pkg/go121/pkg/tool/netbsd_amd64/link: running gcc failed: exit status 4
ld: /usr/lib/libm.so.0: warning: warning: reference to compatibility cabs()
ld: /usr/lib/libm.so.0: warning: warning: reference to compatibility cabsf()
ld: /tmp/go-link-3199807246/go.o: warning: relocation in read-only section `.gopclntab'
ld: BFD (NetBSD Binutils nb1) 2.39 assertion fail /usr/src/external/gpl3/binutils/lib/libbfd/../../dist/bfd/reloc.c:8560
/tmp/go-link-3199807246/000000.o:(.rsrc+0x100): dangerous relocation: gcc: internal compiler error: Segmentation fault signal terminated program ld
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://www.NetBSD.org/support/send-pr.html> for instructions.


(wiz)
diff -r1.70 -r1.71 pkgsrc/chat/coyim/Makefile
diff -r1.6 -r1.7 pkgsrc/chat/coyim/distinfo
diff -r0 -r1.1 pkgsrc/chat/coyim/patches/patch-.._github.com_awnumar_memcall@v0.1.2_memcall__netbsd.go
diff -r0 -r1.1 pkgsrc/chat/coyim/patches/patch-.._github.com_awnumar_memcall@v0.1.2_memcall__unix.go
diff -r0 -r1.1 pkgsrc/chat/coyim/patches/patch-go.mod

cvs diff -r1.70 -r1.71 pkgsrc/chat/coyim/Makefile (expand / switch to unified diff)

--- pkgsrc/chat/coyim/Makefile 2024/04/07 07:33:38 1.70
+++ pkgsrc/chat/coyim/Makefile 2024/05/14 22:38:57 1.71
@@ -1,46 +1,47 @@ @@ -1,46 +1,47 @@
1# $NetBSD: Makefile,v 1.70 2024/04/07 07:33:38 wiz Exp $ 1# $NetBSD: Makefile,v 1.71 2024/05/14 22:38:57 wiz Exp $
2 2
3DISTNAME= coyim-0.4.1 3DISTNAME= coyim-0.4.1
4MASTER_SITES= ${MASTER_SITE_GITHUB:=coyim/} 4MASTER_SITES= ${MASTER_SITE_GITHUB:=coyim/}
5PKGREVISION= 10 5PKGREVISION= 10
6CATEGORIES= chat 6CATEGORIES= chat
7GITHUB_TAG= v${PKGVERSION_NOREV} 7GITHUB_TAG= v${PKGVERSION_NOREV}
8EXTRACT_USING= bsdtar 8EXTRACT_USING= bsdtar
9 9
10MAINTAINER= fox@NetBSD.org 10MAINTAINER= fox@NetBSD.org
11HOMEPAGE= https://coy.im/ 11HOMEPAGE= https://coy.im/
12COMMENT= Safe and secure by default chat client 12COMMENT= Safe and secure by default chat client
13LICENSE= gnu-gpl-v3 13LICENSE= gnu-gpl-v3
14 14
15USE_TOOLS+= pkg-config gmake 15USE_TOOLS+= pkg-config gmake
16 16
 17# for patching
 18EXTRACT_ONLY= ${DEFAULT_DISTFILES} github.com_awnumar_memcall_@v_v0.1.2.zip
 19
17GO_DIST_BASE= ${PKGNAME_NOREV} 20GO_DIST_BASE= ${PKGNAME_NOREV}
18GO_SRCPATH= github.com/coyim/coyim 21GO_SRCPATH= github.com/coyim/coyim
19GO_BUILD_PATTERN= ${GO_SRCPATH} 22GO_BUILD_PATTERN= ${GO_SRCPATH}
20 23
21MAKE_ENV+= CGO_LDFLAGS_ALLOW=".*" 24MAKE_ENV+= CGO_LDFLAGS_ALLOW=".*"
22MAKE_ENV+= CGO_CFLAGS_ALLOW=".*" 25MAKE_ENV+= CGO_CFLAGS_ALLOW=".*"
23MAKE_ENV+= CGO_CXXFLAGS_ALLOW=".*" 26MAKE_ENV+= CGO_CXXFLAGS_ALLOW=".*"
24MAKE_ENV+= CGO_CPPFLAGS_ALLOW=".*" 27MAKE_ENV+= CGO_CPPFLAGS_ALLOW=".*"
25 28
26CHECK_PORTABILITY_SKIP+= build/mac-bundle/coyim-launcher.sh 
27 
28COYIM_ICON= coyim.png 29COYIM_ICON= coyim.png
29COYIM_ICON_SRC= ${WRKSRC}/build/osx/mac-bundle/coyim.iconset/icon_32x32@2x.png 30COYIM_ICON_SRC= ${WRKSRC}/build/osx/mac-bundle/coyim.iconset/icon_32x32@2x.png
30 31
31INSTALLATION_DIRS+= share/applications share/pixmaps 32INSTALLATION_DIRS+= share/applications share/pixmaps
32 33
33CHECK_PORTABILITY_SKIP= build/osx/mac-bundle/coyim-launcher.sh 34CHECK_PORTABILITY_SKIP+= build/osx/mac-bundle/coyim-launcher.sh
34 35
35CHECK_RELRO_SKIP= bin/coyim 36CHECK_RELRO_SKIP= bin/coyim
36 37
37post-extract: 38post-extract:
38 ${CP} ${FILESDIR}/go.* ${WRKSRC} 39 ${CP} ${FILESDIR}/go.* ${WRKSRC}
39 ${RM} -rf ${WRKSRC}/vendor 40 ${RM} -rf ${WRKSRC}/vendor
40 41
41do-install: 42do-install:
42 ${INSTALL_PROGRAM} ${WRKDIR}/.gopath/bin/coyim ${DESTDIR}${PREFIX}/bin 43 ${INSTALL_PROGRAM} ${WRKDIR}/.gopath/bin/coyim ${DESTDIR}${PREFIX}/bin
43 ${INSTALL_DATA} ${COYIM_ICON_SRC} ${DESTDIR}${PREFIX}/share/pixmaps/${COYIM_ICON} 44 ${INSTALL_DATA} ${COYIM_ICON_SRC} ${DESTDIR}${PREFIX}/share/pixmaps/${COYIM_ICON}
44 45
45.include "go-modules.mk" 46.include "go-modules.mk"
46 47

cvs diff -r1.6 -r1.7 pkgsrc/chat/coyim/distinfo (expand / switch to unified diff)

--- pkgsrc/chat/coyim/distinfo 2023/10/20 13:59:38 1.6
+++ pkgsrc/chat/coyim/distinfo 2024/05/14 22:38:57 1.7
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1$NetBSD: distinfo,v 1.6 2023/10/20 13:59:38 bsiegert Exp $ 1$NetBSD: distinfo,v 1.7 2024/05/14 22:38:57 wiz Exp $
2 2
3BLAKE2s (coyim-0.4.1.tar.gz) = 7e8b7f2dc280756407745d68bdf76436cb2d801dafcf3222ac45af1b802cc0b7 3BLAKE2s (coyim-0.4.1.tar.gz) = 7e8b7f2dc280756407745d68bdf76436cb2d801dafcf3222ac45af1b802cc0b7
4SHA512 (coyim-0.4.1.tar.gz) = 14243c92fb9bcbd9cc30c42a21bdeba040e84e3d069e91e482b78297f6648985a166fcbfc2967d24d485b5ac6b4747c1652b3fdb1a1a206edcaaad165862240c 4SHA512 (coyim-0.4.1.tar.gz) = 14243c92fb9bcbd9cc30c42a21bdeba040e84e3d069e91e482b78297f6648985a166fcbfc2967d24d485b5ac6b4747c1652b3fdb1a1a206edcaaad165862240c
5Size (coyim-0.4.1.tar.gz) = 7906878 bytes 5Size (coyim-0.4.1.tar.gz) = 7906878 bytes
6BLAKE2s (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.mod) = 8a5bb11d17c165c94515f1a9fb319192041b2259ce8830d74a940d0cf068b96a 6BLAKE2s (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.mod) = 8a5bb11d17c165c94515f1a9fb319192041b2259ce8830d74a940d0cf068b96a
7SHA512 (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.mod) = 1a6b7b62bc703892d9c1d2a0aa6908a91a49fc7848d1e84517cbc7e01c391689489fad71a91addc9e6bca7ab3fa0f400bda9e43db7b46a2d56cbde6f796fc7e6 7SHA512 (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.mod) = 1a6b7b62bc703892d9c1d2a0aa6908a91a49fc7848d1e84517cbc7e01c391689489fad71a91addc9e6bca7ab3fa0f400bda9e43db7b46a2d56cbde6f796fc7e6
8Size (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.mod) = 39 bytes 8Size (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.mod) = 39 bytes
9BLAKE2s (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.zip) = a18ba9411e89dcbea047fa4b310f66e817f5871acfd5450230d96bd8d4a7161d 9BLAKE2s (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.zip) = a18ba9411e89dcbea047fa4b310f66e817f5871acfd5450230d96bd8d4a7161d
10SHA512 (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.zip) = 67538973f307a2303174a2e599881884cd2958d5fc0d89937fac85fbdf8304b49fe0cbab5962e32b7de8a2b2beeace71eef257b30cb774aaec2a809c1ad4b921 10SHA512 (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.zip) = 67538973f307a2303174a2e599881884cd2958d5fc0d89937fac85fbdf8304b49fe0cbab5962e32b7de8a2b2beeace71eef257b30cb774aaec2a809c1ad4b921
11Size (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.zip) = 4852 bytes 11Size (github.com__the_creeper_go-notify_@v_v0.0.0-20160203001056-b5cd14745a5c.zip) = 4852 bytes
12BLAKE2s (github.com_awnumar_memcall_@v_v0.1.2.mod) = 0736a0451417f2c426a445a277ead31a742a6897d8e2b43d1177f856526a454b 12BLAKE2s (github.com_awnumar_memcall_@v_v0.1.2.mod) = 0736a0451417f2c426a445a277ead31a742a6897d8e2b43d1177f856526a454b
13SHA512 (github.com_awnumar_memcall_@v_v0.1.2.mod) = d3afd09f8aa199812a6c7237565ad9b29566f3547c8750c0c751acf97273c30e38011073d2b020de7ae8e042856d48946cd6157a265044ea8b6d6167c81db31a 13SHA512 (github.com_awnumar_memcall_@v_v0.1.2.mod) = d3afd09f8aa199812a6c7237565ad9b29566f3547c8750c0c751acf97273c30e38011073d2b020de7ae8e042856d48946cd6157a265044ea8b6d6167c81db31a
14Size (github.com_awnumar_memcall_@v_v0.1.2.mod) = 104 bytes 14Size (github.com_awnumar_memcall_@v_v0.1.2.mod) = 104 bytes
@@ -275,13 +275,16 @@ SHA512 (gopkg.in_yaml.v3_@v_v3.0.0-20200 @@ -275,13 +275,16 @@ SHA512 (gopkg.in_yaml.v3_@v_v3.0.0-20200
275Size (gopkg.in_yaml.v3_@v_v3.0.0-20200313102051-9f266ea9e77c.mod) = 95 bytes 275Size (gopkg.in_yaml.v3_@v_v3.0.0-20200313102051-9f266ea9e77c.mod) = 95 bytes
276BLAKE2s (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.mod) = 17da54ba1894b4653d4c1ab1ae6e9fe03928a96c69cdc8db6b6ea9e34d673991 276BLAKE2s (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.mod) = 17da54ba1894b4653d4c1ab1ae6e9fe03928a96c69cdc8db6b6ea9e34d673991
277SHA512 (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.mod) = 307ca9123efc577ca04828996ee9d8edbb51794ccb4b8d9f169ba689e7276aa5f6ae106a04b22b7fab853ffacfebcbf74468b64eaefd57445864c1fbc77fad9d 277SHA512 (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.mod) = 307ca9123efc577ca04828996ee9d8edbb51794ccb4b8d9f169ba689e7276aa5f6ae106a04b22b7fab853ffacfebcbf74468b64eaefd57445864c1fbc77fad9d
278Size (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.mod) = 95 bytes 278Size (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.mod) = 95 bytes
279BLAKE2s (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.zip) = 04d74632486e9040cbbd56b8326afb1971f28972ea65f9aa5be2a5f9692ad77f 279BLAKE2s (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.zip) = 04d74632486e9040cbbd56b8326afb1971f28972ea65f9aa5be2a5f9692ad77f
280SHA512 (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.zip) = f9c0400f1f5590d7185ae3fdac7adf1787a5f5198e52ebd02841b7df5113c5e34de6a66fa01b2f5735be4b21190dffb46e9d8b084ad5c00ebd99599a39ff73db 280SHA512 (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.zip) = f9c0400f1f5590d7185ae3fdac7adf1787a5f5198e52ebd02841b7df5113c5e34de6a66fa01b2f5735be4b21190dffb46e9d8b084ad5c00ebd99599a39ff73db
281Size (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.zip) = 105245 bytes 281Size (gopkg.in_yaml.v3_@v_v3.0.0-20210107192922-496545a6307b.zip) = 105245 bytes
282BLAKE2s (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.mod) = e05ad6b2f9fd946987d8eaa4242f362ac780501f329c613823246f7d743357d4 282BLAKE2s (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.mod) = e05ad6b2f9fd946987d8eaa4242f362ac780501f329c613823246f7d743357d4
283SHA512 (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.mod) = d21a325b837cb099226a68404f6976318a7f0b8af68c023b1eb85436bfc9dd9c877c9ffba87d0f27d5e9aac606121688c069989a0c2f3ba6d2895baa0759d022 283SHA512 (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.mod) = d21a325b837cb099226a68404f6976318a7f0b8af68c023b1eb85436bfc9dd9c877c9ffba87d0f27d5e9aac606121688c069989a0c2f3ba6d2895baa0759d022
284Size (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.mod) = 222 bytes 284Size (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.mod) = 222 bytes
285BLAKE2s (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.zip) = d68ee5b66378bc4d516c7105f2658d1ced52fbab4885af975a7aca20bcdd509d 285BLAKE2s (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.zip) = d68ee5b66378bc4d516c7105f2658d1ced52fbab4885af975a7aca20bcdd509d
286SHA512 (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.zip) = b1f9d9cc4feef03562cbb6ec01cc55b7d02de1c3b6d68953bbd58a2c94d94f0708bf5e94389acaeba37a08354f49b46e4c548e7ca15553fa0dc8ae41cec020e0 286SHA512 (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.zip) = b1f9d9cc4feef03562cbb6ec01cc55b7d02de1c3b6d68953bbd58a2c94d94f0708bf5e94389acaeba37a08354f49b46e4c548e7ca15553fa0dc8ae41cec020e0
287Size (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.zip) = 74256 bytes 287Size (howett.net_plist_@v_v0.0.0-20200419221736-3b63eb3a43b5.zip) = 74256 bytes
 288SHA1 (patch-.._github.com_awnumar_memcall@v0.1.2_memcall__netbsd.go) = 428d993ad0860193cca0170eda45d1d0635decf1
 289SHA1 (patch-.._github.com_awnumar_memcall@v0.1.2_memcall__unix.go) = cc42e87d15701b7853c1cbfb5cee11bf85b31393
 290SHA1 (patch-go.mod) = 975b53d6eefd01eeaeba3a3fbc558a5be2611859

File Added: pkgsrc/chat/coyim/patches/patch-.._github.com_awnumar_memcall@v0.1.2_memcall__netbsd.go
$NetBSD: patch-.._github.com_awnumar_memcall@v0.1.2_memcall__netbsd.go,v 1.1 2024/05/14 22:38:57 wiz Exp $

Add NetBSD support.
https://github.com/awnumar/memcall/pull/10

--- ../github.com/awnumar/memcall@v0.1.2/memcall_netbsd.go.orig	2024-05-14 22:02:31.351934223 +0000
+++ ../github.com/awnumar/memcall@v0.1.2/memcall_netbsd.go
@@ -0,0 +1,94 @@
+//go:build netbsd
+// +build netbsd
+
+package memcall
+
+import (
+	"errors"
+	"fmt"
+
+	"golang.org/x/sys/unix"
+)
+
+// Lock is a wrapper for mlock(2), with extra precautions.
+func Lock(b []byte) error {
+	// Call mlock.
+	if err := unix.Mlock(b); err != nil {
+		return fmt.Errorf("<memcall> could not acquire lock on %p, limit reached? [Err: %s]", _getStartPtr(b), err)
+	}
+
+	return nil
+}
+
+// Unlock is a wrapper for munlock(2).
+func Unlock(b []byte) error {
+	if err := unix.Munlock(b); err != nil {
+		return fmt.Errorf("<memcall> could not free lock on %p [Err: %s]", _getStartPtr(b), err)
+	}
+
+	return nil
+}
+
+// Alloc allocates a byte slice of length n and returns it.
+func Alloc(n int) ([]byte, error) {
+	// Allocate the memory.
+	b, err := unix.Mmap(-1, 0, n, unix.PROT_READ|unix.PROT_WRITE, unix.MAP_PRIVATE|unix.MAP_ANON)
+	if err != nil {
+		return nil, fmt.Errorf("<memcall> could not allocate [Err: %s]", err)
+	}
+
+	// Wipe it just in case there is some remnant data.
+	wipe(b)
+
+	// Return the allocated memory.
+	return b, nil
+}
+
+// Free deallocates the byte slice specified.
+func Free(b []byte) error {
+	// Make the memory region readable and writable.
+	if err := Protect(b, ReadWrite()); err != nil {
+		return err
+	}
+
+	// Wipe the memory region in case of remnant data.
+	wipe(b)
+
+	// Free the memory back to the kernel.
+	if err := unix.Munmap(b); err != nil {
+		return fmt.Errorf("<memcall> could not deallocate %p [Err: %s]", _getStartPtr(b), err)
+	}
+
+	return nil
+}
+
+// Protect modifies the protection state for a specified byte slice.
+func Protect(b []byte, mpf MemoryProtectionFlag) error {
+	var prot int
+	if mpf.flag == ReadWrite().flag {
+		prot = unix.PROT_READ | unix.PROT_WRITE
+	} else if mpf.flag == ReadOnly().flag {
+		prot = unix.PROT_READ
+	} else if mpf.flag == NoAccess().flag {
+		prot = unix.PROT_NONE
+	} else {
+		return errors.New(ErrInvalidFlag)
+	}
+
+	// Change the protection value of the byte slice.
+	if err := unix.Mprotect(b, prot); err != nil {
+		return fmt.Errorf("<memcall> could not set %d on %p [Err: %s]", prot, _getStartPtr(b), err)
+	}
+
+	return nil
+}
+
+// DisableCoreDumps disables core dumps on Unix systems.
+func DisableCoreDumps() error {
+	// Disable core dumps.
+	if err := unix.Setrlimit(unix.RLIMIT_CORE, &unix.Rlimit{Cur: 0, Max: 0}); err != nil {
+		return fmt.Errorf("<memcall> could not set rlimit [Err: %s]", err)
+	}
+
+	return nil
+}

File Added: pkgsrc/chat/coyim/patches/patch-.._github.com_awnumar_memcall@v0.1.2_memcall__unix.go
$NetBSD: patch-.._github.com_awnumar_memcall@v0.1.2_memcall__unix.go,v 1.1 2024/05/14 22:38:57 wiz Exp $

Add NetBSD support.
https://github.com/awnumar/memcall/pull/10

--- ../github.com/awnumar/memcall@v0.1.2/memcall_unix.go.orig	1979-11-29 23:00:00.000000000 +0000
+++ ../github.com/awnumar/memcall@v0.1.2/memcall_unix.go
@@ -1,4 +1,4 @@
-// +build !windows,!darwin,!openbsd,!freebsd
+// +build !windows,!darwin,!openbsd,!freebsd,!netbsd
 
 package memcall
 

File Added: pkgsrc/chat/coyim/patches/patch-go.mod
$NetBSD: patch-go.mod,v 1.1 2024/05/14 22:38:57 wiz Exp $

Use patched copy that supports NetBSD.

--- go.mod.orig	2024-05-14 22:00:14.425839316 +0000
+++ go.mod
@@ -39,3 +39,5 @@ require (
 	golang.org/x/sys v0.0.0-20200523222454-059865788121 // indirect
 	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
 )
+
+replace github.com/awnumar/memcall => ../github.com/awnumar/memcall@v0.1.2