Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Sep 2021 22:12:48 GMT
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: a6c9a9718c02 - main - devel/tlsh: New port: Trend Micro Locality Sensitive Hash
Message-ID:  <202109032212.183MCmGT003267@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jkim:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a6c9a9718c02555996e0a63aae981f356e09d067

commit a6c9a9718c02555996e0a63aae981f356e09d067
Author:     Jung-uk Kim <jkim@FreeBSD.org>
AuthorDate: 2021-09-03 22:09:39 +0000
Commit:     Jung-uk Kim <jkim@FreeBSD.org>
CommitDate: 2021-09-03 22:12:26 +0000

    devel/tlsh: New port: Trend Micro Locality Sensitive Hash
    
    TLSH is a fuzzy matching program and library.  Given a file (min 50 bytes),
    TLSH generates a hash value which can be used for similarity comparisons.
    Similar files will have similar hash values which allows for the detection of
    similar objects by comparing their hash values.
    
    This port only includes the core C++ library.
    
    WWW: https://tlsh.org
    
    PR:             244381
---
 devel/Makefile                            |   1 +
 devel/tlsh/Makefile                       |  69 ++++++++
 devel/tlsh/distinfo                       |   3 +
 devel/tlsh/files/patch-Testing_test.sh    | 268 ++++++++++++++++++++++++++++++
 devel/tlsh/files/patch-src_CMakeLists.txt |  22 +++
 devel/tlsh/pkg-descr                      |   8 +
 devel/tlsh/pkg-plist                      |   8 +
 7 files changed, 379 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index a4f4cb3dc05e..dd4a073f2c39 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -7011,6 +7011,7 @@
     SUBDIR += tl-expected
     SUBDIR += tla
     SUBDIR += tllist
+    SUBDIR += tlsh
     SUBDIR += tlx
     SUBDIR += tmake
     SUBDIR += tnt
diff --git a/devel/tlsh/Makefile b/devel/tlsh/Makefile
new file mode 100644
index 000000000000..c13313da3a0b
--- /dev/null
+++ b/devel/tlsh/Makefile
@@ -0,0 +1,69 @@
+# Created by: John Hood <cgull@glup.org>
+
+PORTNAME=	tlsh
+DISTVERSION=	4.7.2
+CATEGORIES=	devel
+
+MAINTAINER=	cgull@glup.org
+COMMENT=	Trend Micro Locality Sensitive Hash library and utilities
+
+LICENSE=	APACHE20 BSD3CLAUSE
+LICENSE_COMB=	dual
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		cmake cpe
+USE_GITHUB=	yes
+GH_ACCOUNT=	trendmicro
+GH_TAGNAME=	d842e75
+CPE_VENDOR=	${GH_ACCOUNT}
+USE_LDCONFIG=	yes
+
+CMAKE_ARGS=	create_symlink \
+		tlsh \
+		tlsh_unittest
+CMAKE_ON=	TLSH_SHARED_LIBRARY
+
+PORTDOCS=	README.md TLSH_Introduction.pdf TLSH_CTC_final.pdf
+
+# XXX Testing/test.sh is too dumb to work with separated source and
+# build directories.
+TEST_TARGET=	test
+
+_TLSH_VERSION=	${PORTVERSION}
+_SHLIBVERMAJ=	${DISTVERSION:S/./ /g:[1]}
+PLIST_SUB=	SHLIBVER=${DISTVERSION} \
+		SHLIBVERMAJ=${_SHLIBVERMAJ} \
+		TLSH_VERSION=${_TLSH_VERSION}
+
+OPTIONS_DEFINE=	DOCS
+# The tlsh build always builds static libraries, and shared libraries
+# are optional.  The STATIC option is the reverse, and can't be used
+# with tlsh.
+# OPTIONS_DEFINE=	STATIC
+# OPTIONS_DEFAULT=
+# STATIC_CMAKE_BOOL_OFF=	TLSH_SHARED_LIBRARY
+
+post-build:
+	${RLN} ${WRKSRC}/bin/tlsh_unittest ${WRKSRC}/bin/tlsh
+
+# rely on cmake install for library itself, add docs and command after.
+# XXX tlsh's install only installs ${INCLUDEDIR}/tlsh.h, and skips version.h,
+# so we must install both in ${INCLUDEDIR}/tlsh/
+post-install:
+	${MKDIR} ${STAGEDIR}${PREFIX}/include/tlsh
+	${RM} ${STAGEDIR}${PREFIX}/include/tlsh.h
+	${INSTALL_PROGRAM} ${WRKSRC}/bin/tlsh ${STAGEDIR}${PREFIX}/bin/
+	${INSTALL_PROGRAM} ${WRKSRC}/bin/tlsh_unittest \
+	    ${STAGEDIR}${PREFIX}/bin/
+	${INSTALL_DATA} ${WRKSRC}/include/tlsh.h \
+	    ${STAGEDIR}${PREFIX}/include/tlsh/
+	${INSTALL_DATA} ${WRKSRC}/include/version.h \
+	    ${STAGEDIR}${PREFIX}/include/tlsh/
+
+post-install-DOCS-on:
+	${MKDIR} ${STAGEDIR}${DOCSDIR}
+.for i in ${PORTDOCS}
+	${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR}
+.endfor
+
+.include <bsd.port.mk>
diff --git a/devel/tlsh/distinfo b/devel/tlsh/distinfo
new file mode 100644
index 000000000000..af2a718ecaf4
--- /dev/null
+++ b/devel/tlsh/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1630608937
+SHA256 (trendmicro-tlsh-4.7.2-d842e75_GH0.tar.gz) = 2cdcc05cd20026839f8b0d6b42a40b5c83d99b4620ff3c1770218167ebc4937d
+SIZE (trendmicro-tlsh-4.7.2-d842e75_GH0.tar.gz) = 3345166
diff --git a/devel/tlsh/files/patch-Testing_test.sh b/devel/tlsh/files/patch-Testing_test.sh
new file mode 100644
index 000000000000..28b9e776c59b
--- /dev/null
+++ b/devel/tlsh/files/patch-Testing_test.sh
@@ -0,0 +1,268 @@
+--- Testing/test.sh.orig	2020-12-10 01:30:11 UTC
++++ Testing/test.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ ##################################
+ # set CREATE_EXP_FILE=1 if you want this script to create the Expected Results for the regression tests
+@@ -8,7 +8,7 @@ CREATE_EXP_FILE=0
+ echoerr() { echo "$@" 1>&2; }
+ 
+ BASEDIR=$(dirname $0)
+-pushd $BASEDIR > /dev/null
++cd $BASEDIR
+ 
+ LISTOPTION=1
+ JSONOPTION=1
+@@ -34,14 +34,12 @@ echo "TLSH_PROG=$TLSH_PROG"
+ if test ! -f $TLSH_PROG
+ then
+ 	echoerr "error: (127), you must compile $TLSH_PROG"
+-        popd > /dev/null
+ 	exit 127
+ fi
+ 
+ if test ! -f $SIMP_PROG
+ then
+ 	echoerr "error: (127), you must compile $SIMP_PROG"
+-        popd > /dev/null
+ 	exit 127
+ fi
+ 
+@@ -104,7 +102,6 @@ runit() {
+ 	if test ! -f $TMP/example_data.out
+ 	then
+ 		echoerr "error: (1), $TMP/example_data.out does not exist"
+-		popd > /dev/null
+ 		exit 1
+ 	fi
+ 	EXPECTED_OUT=exp/example_data.$HASH.$CHKSUM.$XLEN.out_EXP
+@@ -114,7 +111,6 @@ runit() {
+ 		if test $CREATE_EXP_FILE = 0
+ 		then
+ 			echoerr "error: (1), Expected Result file $EXPECTED_OUT does not exist"
+-			popd > /dev/null
+ 			exit 1
+ 		else
+ 			echo "cp $TMP/example_data.out $EXPECTED_OUT"
+@@ -126,7 +122,6 @@ runit() {
+ 		if test $CREATE_EXP_FILE = 0
+ 		then
+ 			echoerr "error: (1), Expected Result file $EXPECTED_ERR does not exist"
+-			popd > /dev/null
+ 			exit 1
+ 		else
+ 			echo "cp $TMP/example_data.err $EXPECTED_ERR"
+@@ -137,7 +132,6 @@ runit() {
+ 	if test ! $diffc = 0
+ 	then
+ 		echoerr "error: (1), diff $TMP/example_data.out $EXPECTED_OUT"
+-		popd > /dev/null
+ 		exit 1
+ 	fi
+ 
+@@ -145,7 +139,6 @@ runit() {
+ 	if test ! $diffc = 0
+ 	then
+ 		echoerr "error: (1), diff $TMP/example_data.err $EXPECTED_ERR"
+-		popd > /dev/null
+ 		exit 1
+ 	fi
+ 
+@@ -160,7 +153,6 @@ runit() {
+ 		if test ! $diffc = 0
+ 		then
+ 			echoerr "error: (1), diff $TMP/example_data.json_out $EXPECTED_OUT"
+-			popd > /dev/null
+ 			exit 1
+ 		fi
+ 		echo "passed"
+@@ -194,7 +186,6 @@ runit() {
+ 		if test $CREATE_EXP_FILE = 0
+ 		then
+ 			echoerr "error: (1), Expected Result file $EXPECTED_SCO does not exist"
+-			popd > /dev/null
+ 			exit 1
+ 		else
+ 			echo "cp $TMP/example_data.scores $EXPECTED_SCO"
+@@ -206,7 +197,6 @@ runit() {
+ 		if test $CREATE_EXP_FILE = 0
+ 		then
+ 			echoerr "error: (1), Expected Result file $EXPECTED_ERR does not exist"
+-			popd > /dev/null
+ 			exit 1
+ 		else
+ 			echo "cp $TMP/example_data.err2 $EXPECTED_ERR"
+@@ -218,14 +208,12 @@ runit() {
+ 	if test ! $diffc = 0
+ 	then
+ 		echoerr "error: (2), diff $TMP/example_data.scores $EXPECTED_SCO"
+-		popd > /dev/null
+ 		exit 2
+ 	fi
+ 	diffc=`diff --ignore-all-space $TMP/example_data.err2 $EXPECTED_ERR | wc -l`
+ 	if test ! $diffc = 0
+ 	then
+ 		echoerr "error: (2), diff $TMP/example_data.err2 $EXPECTED_ERR"
+-		popd > /dev/null
+ 		exit 2
+ 	fi
+ 
+@@ -260,7 +248,6 @@ runit() {
+ 			if test $CREATE_EXP_FILE = 0
+ 			then
+ 				echoerr "error: (3), Expected Result file $EXPECTED_SCO does not exist"
+-				popd > /dev/null
+ 				exit 1
+ 			else
+ 				echo "cp $TMP/example_data.scores.2 $EXPECTED_SCO"
+@@ -272,7 +259,6 @@ runit() {
+ 		if test ! $diffc = 0
+ 		then
+ 			echoerr "error: (3) diff $TMP/example_data.scores.2 $EXPECTED_SCO"
+-			popd > /dev/null
+ 			exit 3
+ 		fi
+ 
+@@ -304,7 +290,6 @@ runit() {
+ 		if test $CREATE_EXP_FILE = 0
+ 		then
+ 			echoerr "error: ($testnum), Expected Result file $EXPECTED_SCO does not exist"
+-			popd > /dev/null
+ 			exit 1
+ 		else
+ 			echo "cp $TMP/example_data.xref.scores $EXPECTED_SCO"
+@@ -315,7 +300,6 @@ runit() {
+ 	diff --ignore-all-space $TMP/example_data.xref.scores $EXPECTED_SCO > /dev/null 2>/dev/null
+ 	if [ $? -ne 0 ]; then
+ 		echoerr "error: ($testnum), diff $TMP/example_data.xref.scores $EXPECTED_SCO"
+-		popd > /dev/null
+ 		exit $testnum
+ 	fi
+ 
+@@ -334,7 +318,6 @@ runit() {
+ 		diff --ignore-all-space $TMP/example_data.xref.json_scores $EXPECTED_SCO > /dev/null 2>/dev/null
+ 		if [ $? -ne 0 ]; then
+ 			echoerr "error: ($testnum), diff $TMP/example_data.xref.json_scores $EXPECTED_SCO"
+-			popd > /dev/null
+ 			exit $testnum
+ 		fi
+ 		echo "passed"
+@@ -370,7 +353,6 @@ runit() {
+ 			if test $CREATE_EXP_FILE = 0
+ 			then
+ 				echoerr "error: ($testnum), Expected Result file $EXPECTED_SCO does not exist"
+-				popd > /dev/null
+ 				exit 1
+ 			else
+ 				echo "cp $TMP/example_data.scores.2.T-201 $EXPECTED_SCO"
+@@ -381,7 +363,6 @@ runit() {
+ 		diff --ignore-all-space $TMP/example_data.scores.2.T-201 $EXPECTED_SCO > /dev/null 2>/dev/null
+ 		if [ $? -ne 0 ]; then
+ 			echoerr "error: ($testnum) diff $TMP/example_data.scores.2.T-201 $EXPECTED_SCO"
+-			popd > /dev/null
+ 			exit $testnum
+ 		fi
+ 		echo "passed"
+@@ -398,7 +379,6 @@ runit
+ if test "$1" = "_go"
+ then
+ 	echo "passed all example data tests (for go implementation)"
+-	popd > /dev/null
+ 	exit 0
+ fi
+ runit "-xlen"
+@@ -428,7 +408,6 @@ then
+ 	if test $CREATE_EXP_FILE = 0
+ 	then
+ 		echoerr "error: ($testnum), Expected Result file $EXPECTED_TESTLEN does not exist"
+-		popd > /dev/null
+ 		exit 1
+ 	else
+ 		echo "cp $TMP/testlen.out $EXPECTED_TESTLEN"
+@@ -439,7 +418,6 @@ fi
+ diff --ignore-all-space $TMP/testlen.out $EXPECTED_TESTLEN > /dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+ 	echoerr "error: ($testnum) diff $TMP/testlen.out $EXPECTED_TESTLEN"
+-	popd > /dev/null
+ 	exit $testnum
+ fi
+ echo "passed"
+@@ -467,7 +445,6 @@ for file in small small2 ; do
+ 		if test $CREATE_EXP_FILE = 0
+ 		then
+ 			echoerr "error: ($testnum), Expected Result file $EXPECTED_TLSH does not exist"
+-			popd > /dev/null
+ 			exit 1
+ 		else
+ 			echo "cp $TMP/$file.tlsh $EXPECTED_TLSH"
+@@ -478,7 +455,6 @@ for file in small small2 ; do
+ 	diff --ignore-all-space $TMP/$file.tlsh $EXPECTED_TLSH
+ 	if [ $? -ne 0 ]; then
+ 		echoerr "error: ($testnum) $TMP/$file.tlsh $EXPECTED_TLSH"
+-		popd > /dev/null
+ 		exit $testnum
+ 	fi
+ done
+@@ -511,14 +487,12 @@ then
+ 	if test ! -f $EXPECTED_SCO
+ 	then
+ 		echoerr "error: ($testnum), Expected Result file $EXPECTED_SCO does not exist"
+-		popd > /dev/null
+ 		exit 1
+ 	fi
+ 
+ 	diff --ignore-all-space $TMP/example_data.scores.l2.T-201 $EXPECTED_SCO > /dev/null 2>/dev/null
+ 	if [ $? -ne 0 ]; then
+ 		echoerr "error: ($testnum) diff $TMP/example_data.scores.l2.T-201 $EXPECTED_SCO"
+-		popd > /dev/null
+ 		exit $testnum
+ 	fi
+ 
+@@ -533,7 +507,6 @@ then
+ 	diff --ignore-all-space $TMP/example_data.scores.l2csv.T-201 $EXPECTED_SCO > /dev/null 2>/dev/null
+ 	if [ $? -ne 0 ]; then
+ 		echoerr "error: ($testnum) diff $TMP/example_data.scores.l2csv.T-201 $EXPECTED_SCO"
+-		popd > /dev/null
+ 		exit $testnum
+ 	fi
+ 
+@@ -563,14 +536,12 @@ then
+ 	if test ! -f $EXPECTED_RES
+ 	then
+ 		echoerr "error: ($testnum), Expected Result file $EXPECTED_RES does not exist"
+-		popd > /dev/null
+ 		exit 1
+ 	fi
+ 
+ 	diff --ignore-all-space $TMP/example_data.Week3.split.tlsh $EXPECTED_RES > /dev/null 2>/dev/null
+ 	if [ $? -ne 0 ]; then
+ 		echoerr "error: ($testnum) diff $TMP/example_data.Week3.split.tlsh $EXPECTED_RES"
+-		popd > /dev/null
+ 		exit $testnum
+ 	fi
+ 
+@@ -598,7 +569,6 @@ then
+ 	if test $CREATE_EXP_FILE = 0
+ 	then
+ 		echoerr "error: ($testnum), Expected Result file $EXPECTED_STEST does not exist"
+-		popd > /dev/null
+ 		exit 1
+ 	else
+ 		echo "cp $TMP/simple_unittest.out $EXPECTED_STEST"
+@@ -609,13 +579,10 @@ fi
+ diff --ignore-all-space $TMP/simple_unittest.out $EXPECTED_STEST > /dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+ 	echoerr "error: ($testnum) diff $TMP/simple_unittest.out $EXPECTED_STEST"
+-        popd > /dev/null
+-	exit -1
++	exit 255
+ fi
+ 
+ echo "passed all example data tests"
+-
+-popd > /dev/null
+ 
+ echo
+ echo "If you have made changes to the Tlsh python module, build and install it, and run python_test.sh"
diff --git a/devel/tlsh/files/patch-src_CMakeLists.txt b/devel/tlsh/files/patch-src_CMakeLists.txt
new file mode 100644
index 000000000000..34566853bf5c
--- /dev/null
+++ b/devel/tlsh/files/patch-src_CMakeLists.txt
@@ -0,0 +1,22 @@
+--- src/CMakeLists.txt.orig	2020-02-16 00:07:55 UTC
++++ src/CMakeLists.txt
+@@ -65,16 +65,15 @@ set_target_properties(tlsh PROPERTIES OUTPUT_NAME tlsh
+ # it was causing problems when compiling / testing tools on Linux
+ ##########################
+ 
+-set(TLSH_SHARED_LIBRARY 0)
+-if(TLSH_SHARED_LIBRARY EQUAL 1)
++if(TLSH_SHARED_LIBRARY)
+     add_library(tlsh_shared SHARED ${TLSH_SRCS})
+     set_target_properties(tlsh_shared PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
+     set_target_properties(tlsh_shared PROPERTIES OUTPUT_NAME tlsh${BUILD_POSTFIX})
+     set_target_properties(tlsh_shared PROPERTIES VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
+-                                                 SOVERSION "0")
++                                                 SOVERSION "${VERSION_MAJOR}")
+ endif()
+ 
+-if(TLSH_SHARED_LIBRARY EQUAL 1)
++if(TLSH_SHARED_LIBRARY)
+     install(TARGETS tlsh tlsh_shared DESTINATION lib)
+ else()
+     install(TARGETS tlsh             DESTINATION lib)
diff --git a/devel/tlsh/pkg-descr b/devel/tlsh/pkg-descr
new file mode 100644
index 000000000000..11eb4782390c
--- /dev/null
+++ b/devel/tlsh/pkg-descr
@@ -0,0 +1,8 @@
+TLSH is a fuzzy matching program and library.  Given a file (min 50 bytes),
+TLSH generates a hash value which can be used for similarity comparisons.
+Similar files will have similar hash values which allows for the detection of
+similar objects by comparing their hash values.
+
+This port only includes the core C++ library.
+
+WWW: https://tlsh.org
diff --git a/devel/tlsh/pkg-plist b/devel/tlsh/pkg-plist
new file mode 100644
index 000000000000..05584abc4624
--- /dev/null
+++ b/devel/tlsh/pkg-plist
@@ -0,0 +1,8 @@
+bin/tlsh
+bin/tlsh_unittest
+include/tlsh/tlsh.h
+include/tlsh/version.h
+lib/libtlsh.a
+lib/libtlsh.so
+lib/libtlsh.so.%%SHLIBVERMAJ%%
+lib/libtlsh.so.%%SHLIBVER%%



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