Page MenuHomeFreeBSD

net/zerotier: require json.hpp v3.2.0
ClosedPublic

Authored by dch on Aug 24 2018, 8:01 AM.

Details

Summary
  • fixes PR#230629 reported by jbeich@ for libc++ 7
  • correct combined LICENSEs to match source code
Test Plan
  • poudriere bulk -t OK across 10.4, 11.1, 11.2 amd64+i386, 12.0-a1 amd64
  • FAILs for 10.4 i386 with following stack trace

clang++ -O2 -pipe -flax-vector-conversions -fstack-protector -fno-strict-aliasing -O2 -pipe -flax-vector-conversions -fstack-protector -fno-strict-aliasing -Wall -fPIE -fvisibility=hidden -fstack-protector -pthread -DNDEBUG -DZT_BUILD_PLATFORM=7 -DZT_BUILD_ARCHITECTURE=1 -DZT_SOFTWARE_UPDATE_DEFAULT="\"disable\"" -fno-rtti -std=c++11 -O2 -pipe -flax-vector-conversions -fstack-protector -fno-strict-aliasing -Wall -fPIE -fvisibility=hidden -fstack-protector -pthread -DNDEBUG -DZT_BUILD_PLATFORM=7 -DZT_BUILD_ARCHITECTURE=1 -DZT_SOFTWARE_UPDATE_DEFAULT="\"disable\"" -Wall -Werror -g -pthread -DZT_TRACE -DZT_BUILD_PLATFORM=7 -DZT_BUILD_ARCHITECTURE=1 -DZT_SOFTWARE_UPDATE_DEFAULT="\"disable\"" -fno-rtti -std=c++11 -c -o one.o one.cpp
Stack dump:
0. Program arguments: /usr/bin/clang++ -cc1 -triple i386-unknown-freebsd10.4 -emit-obj -disable-free -disable-llvm-verifier -main-file-name OSUtils.cpp -mrelocation-model pic -pic-level 2 -pie-level 2 -mdisable-fp-elim -relaxed-aliasing -masm-verbose -mconstructor-aliases -target-cpu i486 -gdwarf-2 -coverage-file /tmp/usr/ports/net/zerotier/work/ZeroTierOne-1.2.10/osdep/OSUtils.o -resource-dir /usr/bin/../lib/clang/3.4.1 -D NDEBUG -D ZT_BUILD_PLATFORM=7 -D ZT_BUILD_ARCHITECTURE=1 -D ZT_SOFTWARE_UPDATE_DEFAULT="disable" -D NDEBUG -D ZT_BUILD_PLATFORM=7 -D ZT_BUILD_ARCHITECTURE=1 -D ZT_SOFTWARE_UPDATE_DEFAULT="disable" -D ZT_TRACE -D ZT_BUILD_PLATFORM=7 -D ZT_BUILD_ARCHITECTURE=1 -D ZT_SOFTWARE_UPDATE_DEFAULT="disable" -internal-isystem /usr/include/c++/v1 -O2 -Wall -Wall -Wall -Werror -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /tmp/usr/ports/net/zerotier/work/ZeroTierOne-1.2.10 -ferror-limit 19 -fmessage-length 0 -fvisibility hidden -pthread -stack-protector 1 -mstackrealign -fno-rtti -fobjc-runtime=gnustep -fcxx-exceptions -fexceptions -fdiagnostics-show-option -vectorize-loops -vectorize-slp -o osdep/OSUtils.o -x c++ osdep/OSUtils.cpp

  1. osdep/../ext/json/json.hpp:18807:52: current parser token 'value'
  2. osdep/../ext/json/json.hpp:18798:1: parsing namespace 'std'

clang++: error: unable to execute command: Segmentation fault (core dumped)
clang++: error: clang frontend command failed due to signal (use -v to see invocation)
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
Target: i386-unknown-freebsd10.4
Thread model: posix
clang++: note: diagnostic msg: PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace, preprocessed source, and associated run script.
clang++: note: diagnostic msg:

I'll report this issue upstream in zt project and update this as required

Diff Detail

Repository
rP FreeBSD ports repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

dch created this revision.Aug 24 2018, 8:01 AM
dch updated this revision to Diff 47227.Aug 24 2018, 8:34 AM
jrm added a comment.Aug 24 2018, 5:36 PM

Mark it broken for 10.4 i386?

dch updated this revision to Diff 47253.Aug 24 2018, 6:51 PM
mark BROKEN on 10_i386 only
dch added a comment.Aug 24 2018, 6:52 PM
In D16880#359836, @jrm wrote:

Mark it broken for 10.4 i386?

Macro mom_says_do_it:

This revision is now accepted and ready to land.Aug 24 2018, 6:58 PM
This revision was automatically updated to reflect the committed changes.

I don't like how FreeBSD 10.4 issue was handled. Clang 3.4 crashes (on amd64 here) but this port hardcodes CXX, so USES=compiler:c++14-lang cannot switch to devel/llvm60. This is a regression since rP436712.

head/net/zerotier/Makefile
12–13

FYI, GPLv3 can be changed to GPLv3+ as both LICENSE.txt and license headers in files have or (at your option) any later version. clause.

14–15

Change to LICENSE_FILE_GPLv3 or (since rP451432) the file will be used for every value in LICENSE. Maybe assign LICENSE_FILE_MIT and LICENSE_FILE_BSD3CLAUSE as there's no copy under /usr/ports/Templates/Licenses/ due to many styles.

16–17

Add -meabi=5 to CFLAGS when building that specific file. If you only have amd64 hardware poudriere can cross-compile e.g.,

$ pkg install qemu-user-static
$ poudriere jail -cj 112armv6 -x -a arm.armv6 -v releng/11.2 -m svn+https
$ poudriere bulk -tj 112armv6 net/zerotier
16–17

See above but use head branch for testing as armv7 appeared in FreeBSD 12.0 (or since rS324340).

17–18

Not a powerpc64-specific issue: Clang is missing because in-base GCC is too old to build it. GCC platforms also include mips* (of various ABIs), 32bit powerpc and sparc64. make targets -C/usr/src also shows riscv64 but there's almost (rP473324) no support in ports.

dch reopened this revision.Aug 24 2018, 8:54 PM

follow up with jbeich's comments

dch marked 2 inline comments as done.Aug 24 2018, 9:25 PM

this port hardcodes CXX, so USES=compiler:c++14-lang cannot switch to devel/llvm60. This is a regression since rP436712.

Thanks Jan!

I am pretty sure upstream will take a patch for addressing this in https://github.com/zerotier/ZeroTierOne/blob/dev/Makefile#L13-L17 and I'll retry this with USES= gmake compiler:c++14-lang.

dch updated this revision to Diff 47264.Aug 24 2018, 9:54 PM

incorporate feedback from jbeich@

  • handle LICENSE files correctly
  • remove upstream's hardcoded compiler dependency
  • ease port compiler dependencies to allow building on more platforms
  • unbreak 10.4 i386
dch added a comment.EditedAug 24 2018, 9:55 PM

I incorporated most of the feedback, ppc/arm/qemu-flavoured poudriere will need to wait til I'm back in the office. thanks for the suggestions!

jbeich added inline comments.Aug 24 2018, 10:21 PM
net/zerotier/Makefile
12 ↗(On Diff #47264)

Looking at build log/glue, BSD3CLAUSE and APACHE20 can be dropped as source files covered by those licenses (ext/libnatpmp/*, ext/miniupnpc/*, ext/tap-mac/*, ext/librethinkdbxx/*) are not built in this port.

14 ↗(On Diff #47264)

Better keep LICENSE.GPL-3. It doesn't make sense to use file that describes multiple licenses (but not their conditions) only for one license. And for MIT there's ready to use license file under WRKSRC i.e., ext/json/LICENSE.MIT.

net/zerotier/files/patch-Makefile
8 ↗(On Diff #47264)

If you expect patch churn it maybe easier to just override those e.g., MAKE_ARGS= CC="${CC}" CXX="${CXX}" in port's Makefile.

dch marked 3 inline comments as done.Sep 13 2018, 10:01 AM

@jbeich thanks for your compiler changes, as I'm not a C programmer I'm not really following the consequences of this. If you can suggest a web page or docs I can read up to understand better that would really be helpful for me.

The builds, at least, seem to work across 10.x and 11.x with these changes, I will hopefully have an armv6 and v7 jail cross-compiled tomorrow to check those out. The eabi change you suggested has been incorporated in a slightly different fashion via PR to upstream but it seems reasonable to me at least.

10_4_x64-default 2018-09-13_09h48m37s 2 2 0 0 0 0 stopped:done:
10_4_x86-default 2018-09-13_09h48m37s 2 2 0 0 0 0 stopped:done:
11_1_x64-default 2018-09-13_09h48m37s 2 2 0 0 0 0 stopped:done:
11_1_x86-default 2018-09-13_09h48m37s 2 2 0 0 0 0 stopped:done:
11_2_x64-default 2018-09-13_09h48m52s 2 2 0 0 0 0 stopped:done:
11_2_x86-default 2018-09-13_09h48m52s 2 2 0 0 0 0 stopped:done:
12a4_x64-default 2018-09-13_09h48m52s 2 2 0 0 0 0 stopped:done:

net/zerotier/Makefile
12 ↗(On Diff #47264)

Is that allowed? Just because we're not compiling it doesn't release the license conditions, it's on the source code, not only the build artefacts. IANAL.

net/zerotier/files/patch-Makefile
8 ↗(On Diff #47264)

upstream's very helpful in getting these merged, so long as these work across all our platforms I'll submit it upstream for the next official release.

dch marked 4 inline comments as done.Sep 13 2018, 10:21 AM
dch updated this revision to Diff 47987.

fix compiler nits & add arm support from PR#231335

dch added a comment.Sep 13 2018, 10:22 AM

BTW not clear for me, if after these changes, it would now compile on powerpc *shrug*

This revision is now accepted and ready to land.Sep 13 2018, 11:01 AM
This revision was automatically updated to reflect the committed changes.