Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Jun 2018 10:08:11 +0000 (UTC)
From:      Alex Dupre <ale@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r472181 - in head/security/trezord: . files
Message-ID:  <201806111008.w5BA8B8H055587@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ale
Date: Mon Jun 11 10:08:10 2018
New Revision: 472181
URL: https://svnweb.freebsd.org/changeset/ports/472181

Log:
  Update to 2.0.14 release.
  
  Switch from deprecated C++ version to supported Go version.

Added:
  head/security/trezord/files/patch-freebsd   (contents, props changed)
Deleted:
  head/security/trezord/files/config.proto
  head/security/trezord/files/patch-CMakeLists.txt
  head/security/trezord/files/patch-src_core.hpp
  head/security/trezord/files/patch-src_main.cpp
  head/security/trezord/files/patch-src_wire.hpp
  head/security/trezord/files/usb.hpp
Modified:
  head/security/trezord/Makefile
  head/security/trezord/distinfo
  head/security/trezord/files/trezord.in
  head/security/trezord/pkg-descr

Modified: head/security/trezord/Makefile
==============================================================================
--- head/security/trezord/Makefile	Mon Jun 11 10:07:49 2018	(r472180)
+++ head/security/trezord/Makefile	Mon Jun 11 10:08:10 2018	(r472181)
@@ -2,10 +2,8 @@
 # $FreeBSD$
 
 PORTNAME=	trezord
-PORTVERSION=	1.2.1
-PORTREVISION=	2
+PORTVERSION=	2.0.14
 CATEGORIES=	security
-MASTER_SITES=	LOCAL/ale
 
 MAINTAINER=	ale@FreeBSD.org
 COMMENT=	TREZOR Communication Daemon aka TREZOR Bridge
@@ -13,30 +11,16 @@ COMMENT=	TREZOR Communication Daemon aka TREZOR Bridge
 LICENSE=	LGPL3
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BUILD_DEPENDS=	protoc:devel/protobuf \
-		boost-libs>=0:devel/boost-libs
-LIB_DEPENDS=	libcurl.so:ftp/curl \
-		libjsoncpp.so:devel/jsoncpp \
-		libmicrohttpd.so:www/libmicrohttpd
-
-USES=		cmake compiler:c++11-lang pkgconfig
-
+USES=		go
 USE_RC_SUBR=	${PORTNAME}
+USE_GITHUB=	yes
+GH_ACCOUNT=	trezor
+GH_PROJECT=	${PORTNAME}-go
+GH_TAGNAME=	v${PORTVERSION}
+GO_PKGNAME=	github.com/${GH_ACCOUNT}/${GH_PROJECT}
 
-CMAKE_ARGS+=	-DJSONCPP_INCLUDE_DIR:STRING="${LOCALBASE}/include/jsoncpp" \
-		-DJSONCPP_LIBRARY:STRING="-L${LOCALBASE}/lib -ljsoncpp"
+PATCH_STRIP=	-p1
 
-PLIST_FILES=	sbin/${PORTNAME}
-
-post-extract:
-	${CP} ${FILESDIR}/usb.hpp ${WRKSRC}/src/
-	${CP} ${FILESDIR}/config.proto ${WRKSRC}/src/config/
-
-pre-build:
-	cd ${WRKSRC}/src/config && ${LOCALBASE}/bin/protoc \
-		-I${LOCALBASE}/include -I. --cpp_out=. config.proto
-
-do-install:
-	${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}/${PREFIX}/sbin/
+PLIST_FILES=	bin/${GH_PROJECT}
 
 .include <bsd.port.mk>

Modified: head/security/trezord/distinfo
==============================================================================
--- head/security/trezord/distinfo	Mon Jun 11 10:07:49 2018	(r472180)
+++ head/security/trezord/distinfo	Mon Jun 11 10:08:10 2018	(r472181)
@@ -1,3 +1,3 @@
-TIMESTAMP = 1514538815
-SHA256 (trezord-1.2.1.tar.gz) = aad7426ffd765977b6013d2efe675748027dd61b83dfc3a9ad28e4331fbc0d53
-SIZE (trezord-1.2.1.tar.gz) = 465139
+TIMESTAMP = 1528707476
+SHA256 (trezor-trezord-go-2.0.14-v2.0.14_GH0.tar.gz) = a28001afe130a717e5366fdb5ec16e10ca44d6bdd366694f844efda830a08f68
+SIZE (trezor-trezord-go-2.0.14-v2.0.14_GH0.tar.gz) = 859521

Added: head/security/trezord/files/patch-freebsd
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/security/trezord/files/patch-freebsd	Mon Jun 11 10:08:10 2018	(r472181)
@@ -0,0 +1,242 @@
+diff --git a/trezord.go b/trezord.go
+index e1b7261..75b14bb 100644
+--- a/trezord.go
++++ b/trezord.go
+@@ -6,6 +6,7 @@ import (
+ 	"io"
+ 	"log"
+ 	"os"
++	"runtime"
+ 	"strconv"
+ 
+ 	"github.com/trezor/trezord-go/memorywriter"
+@@ -82,7 +83,11 @@ func main() {
+ 		if err != nil {
+ 			stderrLogger.Fatalf("hidapi: %s", err)
+ 		}
+-		bus = append(bus, w, h)
++		if runtime.GOOS != "freebsd" {
++			bus = append(bus, w, h)
++		} else {
++			bus = append(bus, w)
++		}
+ 	}
+ 
+ 	longMemoryWriter.Println(fmt.Sprintf("UDP port count - %d", len(ports)))
+diff --git a/usb/webusb.go b/usb/webusb.go
+index ee9c8d3..017fbf2 100644
+--- a/usb/webusb.go
++++ b/usb/webusb.go
+@@ -3,6 +3,7 @@ package usb
+ import (
+ 	"encoding/hex"
+ 	"fmt"
++	"runtime"
+ 	"strings"
+ 	"sync"
+ 	"sync/atomic"
+@@ -188,7 +189,7 @@ func (b *WebUSB) match(dev usbhid.Device) bool {
+ 	}
+ 	return (c.BNumInterfaces > webIfaceNum &&
+ 		c.Interface[webIfaceNum].Num_altsetting > webAltSetting &&
+-		c.Interface[webIfaceNum].Altsetting[webAltSetting].BInterfaceClass == usbhid.CLASS_VENDOR_SPEC)
++		(c.Interface[webIfaceNum].Altsetting[webAltSetting].BInterfaceClass == usbhid.CLASS_VENDOR_SPEC || runtime.GOOS == "freebsd"))
+ }
+ 
+ func (b *WebUSB) matchVidPid(vid uint16, pid uint16) bool {
+@@ -198,13 +199,19 @@ func (b *WebUSB) matchVidPid(vid uint16, pid uint16) bool {
+ }
+ 
+ func (b *WebUSB) identify(dev usbhid.Device) string {
+-	var ports [8]byte
+-	p, err := usbhid.Get_Port_Numbers(dev, ports[:])
+-	if err != nil {
+-		b.mw.Println(fmt.Sprintf("webusb - identify - error getting port numbers %s", err.Error()))
+-		return ""
++	if runtime.GOOS != "freebsd" {
++		var ports [8]byte
++		p, err := usbhid.Get_Port_Numbers(dev, ports[:])
++		if err != nil {
++			b.mw.Println(fmt.Sprintf("webusb - identify - error getting port numbers %s", err.Error()))
++			return ""
++		}
++		return webusbPrefix + hex.EncodeToString(p)
++	} else {
++		bn := usbhid.Get_Bus_Number(dev)
++		da := usbhid.Get_Device_Address(dev)
++		return fmt.Sprintf("%s%02x%02x", webusbPrefix, bn, da)
+ 	}
+-	return webusbPrefix + hex.EncodeToString(p)
+ }
+ 
+ type WUD struct {
+@@ -251,6 +258,12 @@ func (d *WUD) finishReadQueue() {
+ }
+ 
+ func (d *WUD) readWrite(buf []byte, endpoint uint8) (int, error) {
++	var timeout uint
++	if runtime.GOOS != "freebsd" {
++		timeout = usbTimeout
++	} else {
++		timeout = 0
++	}
+ 	d.mw.Println("webusb - rw - start")
+ 	for {
+ 		d.mw.Println("webusb - rw - checking closed")
+@@ -263,7 +276,7 @@ func (d *WUD) readWrite(buf []byte, endpoint uint8) (int, error) {
+ 		d.mw.Println("webusb - rw - lock transfer mutex")
+ 		d.transferMutex.Lock()
+ 		d.mw.Println("webusb - rw - actual interrupt transport")
+-		p, err := usbhid.Interrupt_Transfer(d.dev, endpoint, buf, usbTimeout)
++		p, err := usbhid.Interrupt_Transfer(d.dev, endpoint, buf, timeout)
+ 		d.transferMutex.Unlock()
+ 		d.mw.Println("webusb - rw - single transfer done")
+ 
+diff --git a/vendor/github.com/trezor/usbhid/hid.go b/vendor/github.com/trezor/usbhid/hid.go
+index 114c1fe..4052529 100644
+--- a/vendor/github.com/trezor/usbhid/hid.go
++++ b/vendor/github.com/trezor/usbhid/hid.go
+@@ -6,7 +6,7 @@
+ 
+ // Package hid provides an interface for USB HID devices.
+ 
+-// +build linux,cgo darwin,!ios,cgo windows,cgo
++// +build linux,cgo freebsd,cgo darwin,!ios,cgo windows,cgo
+ 
+ package usbhid
+ 
+@@ -15,6 +15,8 @@ package usbhid
+ 
+ #cgo linux CFLAGS: -DDEFAULT_VISIBILITY="" -DOS_LINUX -D_GNU_SOURCE -DPOLL_NFDS_TYPE=int
+ #cgo linux,!android LDFLAGS: -lrt
++#cgo freebsd CFLAGS: -DOS_FREEBSD
++#cgo freebsd LDFLAGS: -lusb
+ #cgo darwin CFLAGS: -DOS_DARWIN -DDEFAULT_VISIBILITY="" -DPOLL_NFDS_TYPE="unsigned int"
+ #cgo darwin LDFLAGS: -framework CoreFoundation -framework IOKit -lobjc
+ #cgo windows CFLAGS: -DOS_WINDOWS -DDEFAULT_VISIBILITY="" -DPOLL_NFDS_TYPE="unsigned int"
+@@ -25,6 +27,8 @@ package usbhid
+ 	#include <sys/poll.h>
+ 
+ 	#include "os/threads_posix.c"
++#elif OS_FREEBSD
++	#include <stdlib.h>
+ #elif OS_DARWIN
+ 	#include <pthread.h>
+ 	#include <sys/poll.h>
+@@ -38,17 +42,21 @@ package usbhid
+ 	#include <oledlg.h>
+ #endif
+ 
+-#include "libusbi.h"
+-#include "libusb.h"
+-#include "version.h"
+-#include "version_nano.h"
+-#include "core.c"
+-#include "descriptor.c"
+-#include "hotplug.h"
+-#include "hotplug.c"
+-#include "io.c"
+-#include "strerror.c"
+-#include "sync.c"
++#ifndef OS_FREEBSD
++	#include "libusbi.h"
++	#include "libusb.h"
++	#include "version.h"
++	#include "version_nano.h"
++	#include "core.c"
++	#include "descriptor.c"
++	#include "hotplug.h"
++	#include "hotplug.c"
++	#include "io.c"
++	#include "strerror.c"
++	#include "sync.c"
++#else
++	#include <libusb.h>
++#endif
+ 
+ #ifdef OS_LINUX
+ 	#include "os/poll_posix.h"
+@@ -74,6 +82,8 @@ package usbhid
+ 
+ #ifdef OS_LINUX
+ 	#include "linux/hid.c"
++#elif OS_FREEBSD
++	#include "linux/hid.c"
+ #elif OS_DARWIN
+ 	#include "mac/hid.c"
+ #elif OS_WINDOWS
+diff --git a/vendor/github.com/trezor/usbhid/libusb.go b/vendor/github.com/trezor/usbhid/libusb.go
+index 13a2a66..b443102 100644
+--- a/vendor/github.com/trezor/usbhid/libusb.go
++++ b/vendor/github.com/trezor/usbhid/libusb.go
+@@ -12,9 +12,15 @@ Copyright (c) 2017 Jason T. Harris
+ package usbhid
+ 
+ /*
+-// +build linux,cgo darwin,!ios,cgo windows,cgo
++// +build linux,cgo freebsd,cgo darwin,!ios,cgo windows,cgo
+ 
++#cgo freebsd LDFLAGS: -lusb
++
++#ifndef __FreeBSD__
+ #include "./c/libusb/libusb.h"
++#else
++#include <libusb.h>
++#endif
+ 
+ // When a C struct ends with a zero-sized field, but the struct itself is not zero-sized,
+ // Go code can no longer refer to the zero-sized field. Any such references will have to be rewritten.
+@@ -921,9 +927,11 @@ func Get_Port_Numbers(dev Device, ports []byte) ([]byte, error) {
+ 	return ports[:rc], nil
+ }
+ 
++/*
+ func Get_Parent(dev Device) Device {
+ 	return C.libusb_get_parent(dev)
+ }
++*/
+ 
+ func Get_Device_Address(dev Device) uint8 {
+ 	return uint8(C.libusb_get_device_address(dev))
+@@ -1066,10 +1074,12 @@ func Set_Auto_Detach_Kernel_Driver(hdl Device_Handle, enable bool) error {
+ //-----------------------------------------------------------------------------
+ // Miscellaneous
+ 
++/*
+ func Has_Capability(capability uint32) bool {
+ 	rc := int(C.libusb_has_capability((C.uint32_t)(capability)))
+ 	return rc != 0
+ }
++*/
+ 
+ func Error_Name(code int) string {
+ 	return C.GoString(C.libusb_error_name(C.int(code)))
+@@ -1084,6 +1094,7 @@ func CPU_To_LE16(x uint16) uint16 {
+ 	return uint16(C.libusb_cpu_to_le16((C.uint16_t)(x)))
+ }
+ 
++/*
+ func Setlocale(locale string) error {
+ 	cstr := C.CString(locale)
+ 	rc := int(C.libusb_setlocale(cstr))
+@@ -1092,6 +1103,7 @@ func Setlocale(locale string) error {
+ 	}
+ 	return nil
+ }
++*/
+ 
+ func Strerror(errcode int) string {
+ 	return C.GoString(C.libusb_strerror(int32(errcode)))
+diff --git a/vendor/github.com/trezor/usbhid/wchar.go b/vendor/github.com/trezor/usbhid/wchar.go
+index 16941d1..e955fdd 100644
+--- a/vendor/github.com/trezor/usbhid/wchar.go
++++ b/vendor/github.com/trezor/usbhid/wchar.go
+@@ -7,7 +7,7 @@
+ // https://github.com/orofarne/gowchar/blob/master/LICENSE
+ 
+ // +build !ios
+-// +build linux darwin windows
++// +build linux freebsd darwin windows
+ 
+ package usbhid
+ 

Modified: head/security/trezord/files/trezord.in
==============================================================================
--- head/security/trezord/files/trezord.in	Mon Jun 11 10:07:49 2018	(r472180)
+++ head/security/trezord/files/trezord.in	Mon Jun 11 10:08:10 2018	(r472181)
@@ -21,6 +21,21 @@ load_rc_config $name
 
 : ${trezord_enable:="NO"}
 
-command=%%PREFIX%%/sbin/${name}
+command="%%PREFIX%%/bin/trezord-go"
+command_args="-l /var/log/trezord.log"
+daemon_command="/usr/sbin/daemon"
+pidfile="/var/run/trezord.pid"
+start_cmd="${name}_start"
+
+trezord_start()
+{
+    if [ -z "$rc_fast" -a -n "$rc_pid" ]; then
+        echo 1>&2 "${name} already running? (pid=$rc_pid)."
+        return 1
+    fi
+    echo "Starting ${name}."
+    /usr/sbin/daemon -p $pidfile ${command} ${command_args}
+    _run_rc_postcmd
+}
 
 run_rc_command "$1"

Modified: head/security/trezord/pkg-descr
==============================================================================
--- head/security/trezord/pkg-descr	Mon Jun 11 10:07:49 2018	(r472180)
+++ head/security/trezord/pkg-descr	Mon Jun 11 10:08:10 2018	(r472181)
@@ -1,4 +1,4 @@
 trezord (short for TREZOR Daemon), or TREZOR Bridge, is a small piece of
 software, used for websites, to talk with TREZOR devices.
 
-WWW: https://github.com/trezor/trezord
+WWW: https://github.com/trezor/trezord-go



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201806111008.w5BA8B8H055587>