Index: textproc/scancode-toolkit/Makefile =================================================================== --- textproc/scancode-toolkit/Makefile +++ textproc/scancode-toolkit/Makefile @@ -0,0 +1,124 @@ +# $FreeBSD$ + +PORTNAME= scancode-toolkit +DISTVERSIONPREFIX= v +DISTVERSION= 2.9.2 +CATEGORIES= textproc python + +MAINTAINER= freebsd_ports@k-worx.org +COMMENT= Scans code for license, copyright, package and documented dependencies + +LICENSE= APACHE20 CC0-1.0 +LICENSE_COMB= multi +LICENSE_FILE_APACHE20= ${WRKSRC}/apache-2.0.LICENSE +LICENSE_FILE_CC0-1.0= ${WRKSRC}/cc0-1.0.LICENSE + +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}nltk>=3.2:textproc/py-nltk@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}url>=0.1.4:www/py-url@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}fingerprints>=0.5.4:textproc/py-fingerprints@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}patch>=1.15:devel/py-patch@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}bz2file>=0.98:archivers/py-bz2file@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}backports.os=0.1.1:devel/py-backports.os@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}future>=0.16.0:devel/py-future@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}text-unidecode>=1.0:converters/py-text-unidecode@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}bitarray>=0.8.1:devel/py-bitarray@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}intbitset>=2.3.0:devel/py-intbitset@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}boolean.py>=3.5:devel/py-boolean.py@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}license-expression>=0.9.7:textproc/py-license-expression@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyahocorasick>=1.1:textproc/py-pyahocorasick@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}yaml>=3.0:devel/py-yaml@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}beautifulsoup32>=3.2.0:www/py-beautifulsoup32@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}beautifulsoup>=4.3.0:www/py-beautifulsoup@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}html5lib>=0:www/py-html5lib@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}six>=0:devel/py-six@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pdfminer.six>=20170720:textproc/py-pdfminer.six@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pycryptodome>=3.4:security/py-pycryptodome@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}binaryornot>=0.4.0:devel/py-binaryornot@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}chardet>=3.0.0:textproc/py-chardet@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pygments>=2.0.1:textproc/py-pygments@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pefile>=1.2.10-13-2:devel/py-pefile@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pymaven-patch>=0.2.4:devel/py-pymaven-patch@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}requests>=2.7.0:www/py-requests@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}schematics-patched>=0:devel/py-schematics-patched@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}packageurl-python>=0.5.0:textproc/py-packageurl-python@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}click>=6.0.0:devel/py-click@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}colorama>=0.3.9:devel/py-colorama@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pluggy>=0.4.0:devel/py-pluggy@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}attrs>=17.0:devel/py-attrs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}typing>=3.6:devel/py-typing@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}Jinja2>=2.7.0:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}MarkupSafe>=0.23:textproc/py-MarkupSafe@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}simplejson>=0:devel/py-simplejson@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}spdx-tools>=0.5.4:misc/py-spdx-tools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}unicodecsv>=0:devel/py-unicodecsv@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}psutil>=5.0.0:sysutils/py-psutil@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}yg.lockfile>=2.0.1:devel/py-yg.lockfile@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}zclockfile>=1.0.0:devel/py-zclockfile@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}contextlib2>=0:devel/py-contextlib2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytz>=0:devel/py-pytz@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}tempora>=0:devel/py-tempora@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}jaraco.timing>=0:devel/py-jaraco.timing@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}lxml>=3.6.4:devel/py-lxml@${PY_FLAVOR} \ + ${PY_IPADDRESS} \ + ${LOCALBASE}/bin/7z:archivers/p7zip \ + ${LOCALBASE}/bin/file:sysutils/file \ + ${LOCALBASE}/lib/libarchive.so:archivers/libarchive + +USES= python:2.7 +USE_PYTHON= distutils autoplist noflavors +USE_GITHUB= yes +GH_ACCOUNT= nexB + +# The upstream package comes with precompiled binaries of libmagic, p7zip and +# libarchive. Those binaries are sorted in directories like bin/platform-32, +# bin/platform-64, etc. +# +# Packaging these binaries that are targetted for different platforms is a bit +# of waste thus we get rid of those files and create architecture specific +# directories for FreeBSD with symlinks from LOCALBASE (for file, libarchive and +# p7zip). +# +# The best way would be to set NO_ARCH by using a architecture neutral directory +# for FreeBSD (e.g. bin/freebsd but that would require a lot of tampering in +# upstream's codebase. + +# Check for 32-bit architectures otherwise assume we have an 64-bit architecture +.for _a in arm armeb armv6 i386 mips mipsel mipsn32 powerpc +ARCHDIR_${_a}= freebsd-32 +.endfor +ARCHDIR= ${ARCHDIR_${ARCH}:Ufreebsd-64} + +PRUNEDIRS= notices linux-32 linux-64 mac-64 win-32 win-64 README.md + +post-extract: +# Prune unneeded directories and binaries that are targetted for other architectures +.for d in ${PRUNEDIRS} + @${RM} -r ${WRKSRC}/src/extractcode/bin/$d \ + ${WRKSRC}/src/typecode/bin/$d \ + ${WRKSRC}/src/typecode/data/magic/$d +.endfor + +# Create FreeBSD architecture specific directories (either freebsd-32 or freebsd-64) + @${MKDIR} ${WRKSRC}/src/extractcode/bin/${ARCHDIR}/bin \ + ${WRKSRC}/src/extractcode/bin/${ARCHDIR}/lib \ + ${WRKSRC}/src/typecode/bin/${ARCHDIR}/lib + +# Create placeholder files to prevent skipping of empty directories during install +# Note: magic.mgc will be replaced in the post-install target + @${ECHO} DUMMY > ${WRKSRC}/src/extractcode/bin/${ARCHDIR}/bin/7z + @${ECHO} DUMMY > ${WRKSRC}/src/extractcode/bin/${ARCHDIR}/bin/7z.so + @${ECHO} DUMMY > ${WRKSRC}/src/extractcode/bin/${ARCHDIR}/lib/libarchive.so + @${ECHO} DUMMY > ${WRKSRC}/src/typecode/bin/${ARCHDIR}/lib/libmagic.so + +post-patch: + @${FIND} ${WRKSRC} -name "*.orig" -or -name "*.bak" -delete + +post-install: +# Create the symlinks for libmagic, p7zip and zlib by overwriting the placeholders + @${RLN} ${LOCALBASE}/bin/7z ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/extractcode/bin/${ARCHDIR}/bin/7z + @${RLN} ${LOCALBASE}/libexec/p7zip/7z.so ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/extractcode/bin/${ARCHDIR}/bin/7z.so + @${RLN} ${LOCALBASE}/lib/libarchive.so ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/extractcode/bin/${ARCHDIR}/lib/libarchive.so + @${RLN} ${LOCALBASE}/lib/libmagic.so ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/typecode/bin/${ARCHDIR}/lib/libmagic.so + @${RLN} ${LOCALBASE}/share/file/magic.mgc ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/typecode/data/magic/noarch/magic.mgc + +.include Index: textproc/scancode-toolkit/distinfo =================================================================== --- textproc/scancode-toolkit/distinfo +++ textproc/scancode-toolkit/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1530172103 +SHA256 (nexB-scancode-toolkit-v2.9.2_GH0.tar.gz) = d2f7e320961666c024ac520707157bec8f1c17cfe9234589d72c152b5ae0c5da +SIZE (nexB-scancode-toolkit-v2.9.2_GH0.tar.gz) = 143799927 Index: textproc/scancode-toolkit/files/patch-setup.py =================================================================== --- textproc/scancode-toolkit/files/patch-setup.py +++ textproc/scancode-toolkit/files/patch-setup.py @@ -0,0 +1,31 @@ +--- setup.py.orig 2018-05-08 13:54:52 UTC ++++ setup.py +@@ -125,8 +125,8 @@ setup( + # cluecode + # Some nltk version ranges are buggy + 'nltk >= 3.2, < 4.0', +- 'publicsuffix2', +- 'py2-ipaddress >= 2.0, <3.0', ++ #'publicsuffix2', ++ #'py2-ipaddress >= 2.0, <3.0', + 'url >= 0.1.4', + 'fingerprints >= 0.5.4', + +@@ -163,7 +163,7 @@ setup( + 'pygments >= 2.0.1, <3.0.0', + + # packagedcode +- 'pefile == 1.2.10-132', ++ 'pefile >= 1.2.10-132', + 'pymaven-patch >= 0.2.4', + 'requests >= 2.7.0, < 3.0.0', + 'schematics_patched', +@@ -173,7 +173,7 @@ setup( + 'click >= 6.0.0, < 7.0.0', + 'colorama >= 0.3.9', + 'pluggy >= 0.4.0, < 1.0', +- 'attrs >=17.0, < 18.0', ++ 'attrs >=17.0', + 'typing >=3.6, < 3.7', + + # scancode outputs Index: textproc/scancode-toolkit/files/patch-src_commoncode_system.py =================================================================== --- textproc/scancode-toolkit/files/patch-src_commoncode_system.py +++ textproc/scancode-toolkit/files/patch-src_commoncode_system.py @@ -0,0 +1,30 @@ +--- src/commoncode/system.py.orig 2018-05-08 13:54:52 UTC ++++ src/commoncode/system.py +@@ -46,6 +46,8 @@ def os_arch(): + os = 'win' + elif 'darwin' in sys_platform: + os = 'mac' ++ elif 'freebsd' in sys_platform: ++ os = 'freebsd' + else: + raise Exception('Unsupported OS/platform %r' % sys_platform) + return os, arch +@@ -84,7 +86,8 @@ current_os, current_arch = os_arch() + on_windows = current_os == 'win' + on_mac = current_os == 'mac' + on_linux = current_os == 'linux' +-on_posix = not on_windows and (on_mac or on_linux) ++on_freebsd = current_os == 'freebsd' ++on_posix = not on_windows and (on_mac or on_linux or on_freebsd) + + current_os_arch = '%(current_os)s-%(current_arch)s' % locals() + noarch = 'noarch' +@@ -97,7 +100,7 @@ if on_windows: + lib_ext = '.dll' + if on_mac: + lib_ext = '.dylib' +-if on_linux: ++if on_linux or on_freebsd: + lib_ext = '.so' + + # Index: textproc/scancode-toolkit/pkg-descr =================================================================== --- textproc/scancode-toolkit/pkg-descr +++ textproc/scancode-toolkit/pkg-descr @@ -0,0 +1,5 @@ +ScanCode scans code and detects licenses, copyrights, package manifests, +dependencies and more. It can be also used to discover and inventory open source +and third-party packages used in your code. + +WWW: https://github.com/nexB/scancode-toolkit