Fri Aug 13 17:25:06 2021 UTC ()
unifi: honor LDFLAGS

Fixes RELRO build.

While here, switch to a WRKSRC that avoids having to use '..' in paths,
and clean some pkglint.


(wiz)
diff -r1.25 -r1.26 pkgsrc/net/unifi/Makefile
diff -r1.15 -r1.16 pkgsrc/net/unifi/distinfo
diff -r0 -r1.1 pkgsrc/net/unifi/patches/patch-snappy-java-1.0.5.4_Makefile
diff -r0 -r1.1 pkgsrc/net/unifi/patches/patch-snappy-java-1.0.5.4_Makefile.common
diff -r1.1 -r0 pkgsrc/net/unifi/patches/patch-snappy-java_Makefile
diff -r1.1 -r0 pkgsrc/net/unifi/patches/patch-snappy-java_Makefile.common

cvs diff -r1.25 -r1.26 pkgsrc/net/unifi/Makefile (expand / switch to unified diff)

--- pkgsrc/net/unifi/Makefile 2021/08/13 14:45:53 1.25
+++ pkgsrc/net/unifi/Makefile 2021/08/13 17:25:06 1.26
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1# $NetBSD: Makefile,v 1.25 2021/08/13 14:45:53 abs Exp $ 1# $NetBSD: Makefile,v 1.26 2021/08/13 17:25:06 wiz Exp $
2 2
3# Update to 6.2 (wip) is on hold pending reports that the greater 3# Update to 6.2 (wip) is on hold pending reports that the greater
4# Unifi world thinks it is stable enough. -- gdt, 2021-06-01 4# Unifi world thinks it is stable enough. -- gdt, 2021-06-01
5DISTNAME= unifi-6.0.45 5DISTNAME= unifi-6.0.45
6CATEGORIES= net 6CATEGORIES= net
7MASTER_SITES= -http://dl.ubnt.com/unifi/${PKGVERSION_NOREV}/UniFi.unix.zip 7MASTER_SITES= -http://dl.ubnt.com/unifi/${PKGVERSION_NOREV}/UniFi.unix.zip
8EXTRACT_SUFX= .zip 8EXTRACT_SUFX= .zip
9 9
10# Updates must be tested to not only build but actually function under 10# Updates must be tested to not only build but actually function under
11# at least NetBSD 9/amd64 with actual UBNT hardware. 11# at least NetBSD 9/amd64 with actual UBNT hardware.
12MAINTAINER= gdt@NetBSD.org 12MAINTAINER= gdt@NetBSD.org
13HOMEPAGE= https://www.ubnt.com/download/unifi/ 13HOMEPAGE= https://www.ubnt.com/download/unifi/
14# The content that belongs in NEWS are often in a blog. 14# The content that belongs in NEWS are often in a blog.
@@ -42,78 +42,77 @@ DISTFILES+= ${SNAPPY}.tar.gz @@ -42,78 +42,77 @@ DISTFILES+= ${SNAPPY}.tar.gz
42EXTRACT_ONLY+= ${SNAPPY}.tar.gz 42EXTRACT_ONLY+= ${SNAPPY}.tar.gz
43 43
44CHECK_SHLIBS_SKIP= unifi/lib/native/* 44CHECK_SHLIBS_SKIP= unifi/lib/native/*
45INSTALLATION_DIRS= unifi 45INSTALLATION_DIRS= unifi
46 46
47# Emulated JDK doesn't work due to epoll issues. Also, would require 47# Emulated JDK doesn't work due to epoll issues. Also, would require
48# matching emulated native libraries, and we only compile actual 48# matching emulated native libraries, and we only compile actual
49# native libaries. 49# native libaries.
50# NetBSD openjdk11 fails to listen to https, so disable for now 50# NetBSD openjdk11 fails to listen to https, so disable for now
51PKG_JVMS_ACCEPTED= openjdk8 51PKG_JVMS_ACCEPTED= openjdk8
52PKGSRC_MAKE_ENV+= JAVA_HOME=${PKG_JAVA_HOME} 52PKGSRC_MAKE_ENV+= JAVA_HOME=${PKG_JAVA_HOME}
53USE_LANGUAGES= c c++ # for snappy JNI library 53USE_LANGUAGES= c c++ # for snappy JNI library
54USE_TOOLS+= gmake pax 54USE_TOOLS+= gmake pax
55WRKSRC= ${WRKDIR}/UniFi 55WRKSRC= ${WRKDIR}
56 56
57# Upstream documents 3.4.15, but 3.4.4 actually works. Avoid mongodb4 because it 57# Upstream documents 3.4.15, but 3.4.4 actually works. Avoid mongodb4 because it
58# has a problematic license. 58# has a problematic license.
59DEPENDS+= mongodb>=3.4.4:../../databases/mongodb3 59DEPENDS+= mongodb>=3.4.4:../../databases/mongodb3
60 60
61FILES_SUBST+= UNIFI_USER=${UNIFI_USER:Q} UNIFI_GROUP=${UNIFI_GROUP:Q} 61FILES_SUBST+= UNIFI_USER=${UNIFI_USER:Q} UNIFI_GROUP=${UNIFI_GROUP:Q}
62FILES_SUBST+= JAVA=${PKG_JAVA_HOME}/bin/java 62FILES_SUBST+= JAVA=${PKG_JAVA_HOME}/bin/java
63RCD_SCRIPTS= unifi 63RCD_SCRIPTS= unifi
64UNIFI_USER?= unifi 64UNIFI_USER?= unifi
65UNIFI_GROUP?= unifi 65UNIFI_GROUP?= unifi
66PKG_USERS_VARS= UNIFI_USER 66PKG_USERS_VARS= UNIFI_USER
67PKG_GROUPS_VARS= UNIFI_GROUP 67PKG_GROUPS_VARS= UNIFI_GROUP
68PKG_GROUPS= ${UNIFI_GROUP} 68PKG_GROUPS= ${UNIFI_GROUP}
69PKG_USERS= ${UNIFI_USER}:${UNIFI_GROUP} 69PKG_USERS= ${UNIFI_USER}:${UNIFI_GROUP}
70RELRO_SUPPORTED= no 
71 70
72.for d in data logs run work 71.for d in data logs run work
73OWN_DIRS_PERMS+= ${PREFIX}/unifi/${d} ${UNIFI_USER} ${UNIFI_GROUP} 0700 72OWN_DIRS_PERMS+= ${PREFIX}/unifi/${d} ${UNIFI_USER} ${UNIFI_GROUP} 0700
74.endfor 73.endfor
75 74
76.include "../../mk/bsd.prefs.mk" 75.include "../../mk/bsd.prefs.mk"
77 76
78post-extract: 77post-extract:
79# drop executable bit 78# drop executable bit
80 find ${WRKSRC} -type f -print0 | xargs -0 chmod -x 79 find ${WRKSRC}/UniFi -type f -print0 | xargs -0 chmod -x
81 mkdir ${WRKDIR}/${SNAPPY_JAVA}/target 80 mkdir ${WRKDIR}/${SNAPPY_JAVA}/target
82 ln -s ${WRKDIR}/${SNAPPY} ${WRKDIR}/${SNAPPY_JAVA}/target 81 ln -s ${WRKDIR}/${SNAPPY} ${WRKDIR}/${SNAPPY_JAVA}/target
83# drop platform specific binaries 82# drop platform specific binaries
84# as far as we know, these are for cloud access to your controller 83# as far as we know, these are for cloud access to your controller
85 ls -R ${WRKDIR}/UniFi/lib/native 84 ls -R ${WRKDIR}/UniFi/lib/native
86 rm -rf ${WRKDIR}/UniFi/lib/native/Windows 85 rm -rf ${WRKDIR}/UniFi/lib/native/Windows
87.if (${OPSYS} != "Linux") 86.if (${OPSYS} != "Linux")
88 rm -rf ${WRKDIR}/UniFi/lib/native/Linux 87 rm -rf ${WRKDIR}/UniFi/lib/native/Linux
89.else 88.else
90.if (${MACHINE_ARCH} != "aarch64") 89. if (${MACHINE_ARCH} != "aarch64")
91 rm -rf ${WRKDIR}/UniFi/lib/native/Linux/aarch64 90 rm -rf ${WRKDIR}/UniFi/lib/native/Linux/aarch64
92.endif 91. endif
93.if (${MACHINE_ARCH} != "armv7") 92. if (${MACHINE_ARCH} != "armv7")
94 rm -rf ${WRKDIR}/UniFi/lib/native/Linux/armv7 93 rm -rf ${WRKDIR}/UniFi/lib/native/Linux/armv7
95.endif 94. endif
96.if (${MACHINE_ARCH} != "x86_64") 95. if (${MACHINE_ARCH} != "x86_64")
97 rm -rf ${WRKDIR}/UniFi/lib/native/Linux/x86_64 96 rm -rf ${WRKDIR}/UniFi/lib/native/Linux/x86_64
98.endif 97. endif
99.endif 98.endif
100.if (${OPSYS} != "Darwin") 99.if (${OPSYS} != "Darwin")
101 rm -rf ${WRKDIR}/UniFi/lib/native/Mac 100 rm -rf ${WRKDIR}/UniFi/lib/native/Mac
102.else 101.else
103.if (${MACHINE_ARCH} != "x86_64") 102. if (${MACHINE_ARCH} != "x86_64")
104 rm -rf ${WRKDIR}/UniFi/lib/native/Mac/x86_64 103 rm -rf ${WRKDIR}/UniFi/lib/native/Mac/x86_64
105.endif 104. endif
106.endif 105.endif
107 106
108do-build: 107do-build:
109# bundled mongod is a linux binary; replace with symlink to native binary 108# bundled mongod is a linux binary; replace with symlink to native binary
110 rm -f ${WRKSRC}/bin/mongod 109 rm -f ${WRKSRC}/UniFi/bin/mongod
111 ln -s ${PREFIX}/bin/mongod ${WRKSRC}/bin/mongod 110 ln -s ${PREFIX}/bin/mongod ${WRKSRC}/UniFi/bin/mongod
112 cd ${WRKDIR}/${SNAPPY_JAVA} && ${BUILD_MAKE_CMD} native 111 cd ${WRKDIR}/${SNAPPY_JAVA} && ${BUILD_MAKE_CMD} native
113 112
114do-install: 113do-install:
115 cd ${WRKSRC} && pax -rw . ${DESTDIR}${PREFIX}/unifi 114 cd ${WRKSRC}/UniFi && pax -rw . ${DESTDIR}${PREFIX}/unifi
116 ${INSTALL_LIB} ${WRKDIR}/${SNAPPY_JAVA}/target/snappy-1.0.5-Default/libsnappyjava.so ${DESTDIR}${PREFIX}/unifi/lib 115 ${INSTALL_LIB} ${WRKDIR}/${SNAPPY_JAVA}/target/snappy-1.0.5-Default/libsnappyjava.so ${DESTDIR}${PREFIX}/unifi/lib
117 116
118.include "../../mk/java-vm.mk" 117.include "../../mk/java-vm.mk"
119.include "../../mk/bsd.pkg.mk" 118.include "../../mk/bsd.pkg.mk"

cvs diff -r1.15 -r1.16 pkgsrc/net/unifi/distinfo (expand / switch to unified diff)

--- pkgsrc/net/unifi/distinfo 2021/05/31 17:11:34 1.15
+++ pkgsrc/net/unifi/distinfo 2021/08/13 17:25:06 1.16
@@ -1,16 +1,16 @@ @@ -1,16 +1,16 @@
1$NetBSD: distinfo,v 1.15 2021/05/31 17:11:34 gdt Exp $ 1$NetBSD: distinfo,v 1.16 2021/08/13 17:25:06 wiz Exp $
2 2
3SHA1 (snappy-1.0.5.tar.gz) = 3a3df859cf33f78f8e945c3f67f28685f0f38bb1 3SHA1 (snappy-1.0.5.tar.gz) = 3a3df859cf33f78f8e945c3f67f28685f0f38bb1
4RMD160 (snappy-1.0.5.tar.gz) = c9dec9a8a2faac7bf85b79bcf82f8080713103aa 4RMD160 (snappy-1.0.5.tar.gz) = c9dec9a8a2faac7bf85b79bcf82f8080713103aa
5SHA512 (snappy-1.0.5.tar.gz) = 4f772673dd1bf482f13db0f09299b46d0ee47b7052c43e69c2c5361d352031152f3132c25faf86ffcf1bfbe0e68625d7eef8fa669be873b568adfc160a82f25b 5SHA512 (snappy-1.0.5.tar.gz) = 4f772673dd1bf482f13db0f09299b46d0ee47b7052c43e69c2c5361d352031152f3132c25faf86ffcf1bfbe0e68625d7eef8fa669be873b568adfc160a82f25b
6Size (snappy-1.0.5.tar.gz) = 1731382 bytes 6Size (snappy-1.0.5.tar.gz) = 1731382 bytes
7SHA1 (snappy-java-1.0.5.4.tar.gz) = 2a67400be7e5967ee28c87f32ea4776f26494f2c 7SHA1 (snappy-java-1.0.5.4.tar.gz) = 2a67400be7e5967ee28c87f32ea4776f26494f2c
8RMD160 (snappy-java-1.0.5.4.tar.gz) = 30d12e9717b012bf5b214deecf59f3d02c36996b 8RMD160 (snappy-java-1.0.5.4.tar.gz) = 30d12e9717b012bf5b214deecf59f3d02c36996b
9SHA512 (snappy-java-1.0.5.4.tar.gz) = 4fce5c0c0ce294ba789fd33dd8aeed92b6c58e004ac8e569ee1840fe4fbeb47b1f3edff75619aee0ebbda65476ec56b15a4aeead360d98dbc3d45d295ab028bd 9SHA512 (snappy-java-1.0.5.4.tar.gz) = 4fce5c0c0ce294ba789fd33dd8aeed92b6c58e004ac8e569ee1840fe4fbeb47b1f3edff75619aee0ebbda65476ec56b15a4aeead360d98dbc3d45d295ab028bd
10Size (snappy-java-1.0.5.4.tar.gz) = 6041905 bytes 10Size (snappy-java-1.0.5.4.tar.gz) = 6041905 bytes
11SHA1 (unifi-6.0.45.zip) = 9ced99ee6d7749f3dcba37221eb298ea7e35ec32 11SHA1 (unifi-6.0.45.zip) = 9ced99ee6d7749f3dcba37221eb298ea7e35ec32
12RMD160 (unifi-6.0.45.zip) = e4164f50128391157389eda7e10a3b9c4e75b025 12RMD160 (unifi-6.0.45.zip) = e4164f50128391157389eda7e10a3b9c4e75b025
13SHA512 (unifi-6.0.45.zip) = 6b2aebf33b6e2114a2b274ce332e2bd88a30406e3a21bc66dc0eddee3ee27ee2e4d3948dea73ff85289cbc2ed0e4f2b646e095091c54120f718b5fb2f0b35943 13SHA512 (unifi-6.0.45.zip) = 6b2aebf33b6e2114a2b274ce332e2bd88a30406e3a21bc66dc0eddee3ee27ee2e4d3948dea73ff85289cbc2ed0e4f2b646e095091c54120f718b5fb2f0b35943
14Size (unifi-6.0.45.zip) = 147691229 bytes 14Size (unifi-6.0.45.zip) = 147691229 bytes
15SHA1 (patch-snappy-java_Makefile) = ce9e30d266787890e82675cfaa2603ae4709eaab 15SHA1 (patch-snappy-java-1.0.5.4_Makefile) = 86a4ab3075cef0ac6475dee253efa98a91915b12
16SHA1 (patch-snappy-java_Makefile.common) = ba9e39d1bc6e34e2fa4704831ba51feccfbb0638 16SHA1 (patch-snappy-java-1.0.5.4_Makefile.common) = d574d053351d2fcd55b7846f4de0fe3fa77e821e

File Added: pkgsrc/net/unifi/patches/patch-snappy-java-1.0.5.4_Makefile
$NetBSD: patch-snappy-java-1.0.5.4_Makefile,v 1.1 2021/08/13 17:25:06 wiz Exp $

It tries to download a distfile with curl. We manage this manually.

Honor LDFLAGS.

--- snappy-java-1.0.5.4/Makefile.orig	2014-07-04 05:20:00.000000000 +0000
+++ snappy-java-1.0.5.4/Makefile
@@ -20,9 +20,7 @@ $(SNAPPY_ARCHIVE):
 	@mkdir -p $(@D)
 	curl -o$@ http://snappy.googlecode.com/files/snappy-$(VERSION).tar.gz
 
-$(SNAPPY_UNPACKED): $(SNAPPY_ARCHIVE)
-	tar xvfz $< -C $(TARGET)	
-	touch $@
+$(SNAPPY_UNPACKED):
 
 jni-header: $(SRC)/org/xerial/snappy/SnappyNative.h
 
@@ -50,7 +48,7 @@ $(SNAPPY_OUT)/SnappyNative.o : $(SRC)/or
 
 
 $(SNAPPY_OUT)/$(LIBNAME): $(SNAPPY_OBJ)
-	$(CXX) $(CXXFLAGS) -o $@ $+ $(LINKFLAGS) 
+	$(CXX) $(CXXFLAGS) -o $@ $+ $(LINKFLAGS) $(LDFLAGS)
 	$(STRIP) $@
 
 clean-native: 

File Added: pkgsrc/net/unifi/patches/patch-snappy-java-1.0.5.4_Makefile.common
$NetBSD: patch-snappy-java-1.0.5.4_Makefile.common,v 1.1 2021/08/13 17:25:06 wiz Exp $

Don't produce a broken shared library.

--- snappy-java-1.0.5.4/Makefile.common.orig	2014-07-04 05:20:00.000000000 +0000
+++ snappy-java-1.0.5.4/Makefile.common
@@ -54,7 +54,7 @@ CROSS_PREFIX :=
 Default_CXX          := $(CROSS_PREFIX)g++
 Default_STRIP        := $(CROSS_PREFIX)strip
 Default_CXXFLAGS     := -I$(JAVA_HOME)/include -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden
-Default_LINKFLAGS    := -shared -static
+Default_LINKFLAGS    := -shared
 Default_LIBNAME      := libsnappyjava.so
 Default_SNAPPY_FLAGS := 
 

File Deleted: pkgsrc/net/unifi/patches/Attic/patch-snappy-java_Makefile

File Deleted: pkgsrc/net/unifi/patches/Attic/patch-snappy-java_Makefile.common