Upgrade to g211215. Split out tensorflow.

Upgrade to 2021-12-15 release of photoprism
Use the science/libtensorflow1 port instead of building tensorflow each time
Upgrade to node 17
Require go >= 1.17.5
This commit is contained in:
Paul Armstrong
2021-12-27 05:37:37 +00:00
parent bc1e123ab2
commit 881de78023
3 changed files with 90 additions and 147 deletions

View File

@@ -5,19 +5,21 @@ DISTVERSION= g211215
CATEGORIES= www
MAINTAINER= huoju@devep.net
COMMENT= Personal Photo Management powered by Go and Google TensorFlow
COMMENT= Personal Photo Management Web Service
LICENSE= AGPLv3
RUN_DEPENDS= ffmpeg:multimedia/ffmpeg \
exiftool:graphics/p5-Image-ExifTool
LIB_DEPENDS= libtensorflow.so.1:science/libtensorflow1
EXTRACT_DEPENDS= ${RUN_DEPENDS} \
bash:shells/bash \
bazel:devel/bazel029 \
git:devel/git \
gmake:devel/gmake \
go:lang/go \
npm:www/npm-node14 \
go>=1.17.5:lang/go \
npm:www/npm-node17 \
wget:ftp/wget
USES= gmake python:3.6+,build
@@ -32,82 +34,18 @@ PHOTOPRISM_DATA_DIR= /var/db/photoprism
SUB_LIST+= PHOTOPRISM_DATA_DIR=${PHOTOPRISM_DATA_DIR}
SUB_FILES+= pkg-install pkg-message
FLAVORS= default notf
notf_PKGNAMESUFFIX= -notf
notf_PLIST= pkg-plist-notf
TF_VERSION = 1.15.2
OPTIONS_SINGLE= CPUFEATURE
OPTIONS_SINGLE_CPUFEATURE= NONE AVX AVX2
OPTIONS_DEFAULT = AVX
CPUFEATURE_DESC= Enable AVX CPU extensions for Tensorflow
NONE_VARS= BAZEL_COPT=""
AVX_VARS= BAZEL_COPT="--copt=-march=core-avx-i --host_copt=-march=core-avx-i"
AVX2_VARS= BAZEL_COPT="--copt=-march=core-avx2 --host_copt=-march=core-avx2"
TF_ENV= TF_DOWNLOAD_CLANG=0 TF_NEED_MPI=0 TF_SET_ANDROID_WORKSPACE=0 CC_OPT_FLAGS="-march=native -Wno-sign-compare"
OPTIONS_DEFINE= TF_NEED_OPENCL_SYCL TF_NEED_ROCM TF_NEED_CUDA
TF_NEED_OPENCL_SYCL_DESC= OpenCL SYCL
TF_NEED_OPENCL_SYCL_VARS= TF_ENV+="TF_NEED_OPENCL_SYCL=1"
TF_NEED_OPENCL_SYCL_VARS_OFF= TF_ENV+="TF_NEED_OPENCL_SYCL=0"
TF_NEED_ROCM_DESC= ROCm
TF_NEED_ROCM_VARS= TF_ENV+="TF_NEED_ROCM=1"
TF_NEED_ROCM_VARS_OFF= TF_ENV+="TF_NEED_ROCM=0"
TF_NEED_CUDA_DESC= CUDA
TF_NEED_CUDA_VARS= TF_ENV+="TF_NEED_CUDA=1"
TF_NEED_CUDA_VARS_OFF= TF_ENV+="TF_NEED_CUDA=0"
.include <bsd.port.options.mk>
.if ${OPSYS} == FreeBSD && ${OSVERSION} > 1100000 && ${OSVERSION} < 1200000
EXTRA_PATCHES= ${PATCHDIR}/extra-patch-docker_tensorflow_tensorflow-1.15.2_tensorflow_core_protobuf_autotuning.proto
.endif
.if ${OPSYS} == FreeBSD && ${OSVERSION} > 1200000 && ${OSVERSION} < 1300000
EXTRA_PATCHES= ${PATCHDIR}/extra-patch-docker_tensorflow_tensorflow-1.15.2_third_party_repo.bzl
.endif
post-extract:
@${REINPLACE_CMD} -e 's|sha1sum|shasum|g' ${WRKSRC}/scripts/download-facenet.sh
@${REINPLACE_CMD} -e 's|sha1sum|shasum|g' ${WRKSRC}/scripts/download-nasnet.sh
@${REINPLACE_CMD} -e 's|sha1sum|shasum|g' ${WRKSRC}/scripts/download-nsfw.sh
.if ${FLAVOR:U} != notf
cd ${WRKSRC}/docker/tensorflow && gmake download
.endif
pre-build:
.if ${FLAVOR:U} != notf
@${REINPLACE_CMD} -e "s|\$$PYTHON_BIN_PATH|$(PYTHON_CMD)|" ${WRKSRC}/docker/tensorflow/tensorflow-$(TF_VERSION)/configure
@${REINPLACE_CMD} -e 's|0\.26\.1|0\.29\.0|g' ${WRKSRC}/docker/tensorflow/tensorflow-$(TF_VERSION)/configure.py
@${REINPLACE_CMD} -e "s|'--batch'|\'--batch\', \'--output_user_root=\"${WRKDIR}/.bazel\"\'|" ${WRKSRC}/docker/tensorflow/tensorflow-$(TF_VERSION)/configure.py
cd ${WRKSRC}/docker/tensorflow/tensorflow-${TF_VERSION} && PYTHON_BIN_PATH="$(PYTHON_CMD)" PYTHON_LIB_PATH="$(PYTHON_CMD)/site-packages" TF_ENABLE_XLA="False" ${TF_ENV} ./configure
cd ${WRKSRC}/docker/tensorflow/tensorflow-${TF_VERSION} && bazel --output_user_root="${WRKDIR}/.bazel" build --config=opt //tensorflow:libtensorflow.so ${BAZEL_COPT}
cd ${WRKSRC}/docker/tensorflow/tensorflow-${TF_VERSION} && ./create_archive.sh freebsd-cpu ${TF_VERSION}
cd ${WRKSRC}/docker/tensorflow/tensorflow-${TF_VERSION} && bazel --output_user_root="${WRKDIR}/.bazel" shutdown
@${REINPLACE_CMD} -e 's| go build -v ./...| CGO_CFLAGS="-I${WRKSRC}/docker/tensorflow/tensorflow-$(TF_VERSION)/tmp/include" CGO_LDFLAGS="-L${WRKSRC}/docker/tensorflow/tensorflow-$(TF_VERSION)/tmp/lib" go build -v ./cmd/... ./internal/... ./pkg/...|g' ${WRKSRC}/Makefile
@${REINPLACE_CMD} -e 's| scripts/build.sh debug| CGO_CFLAGS="-I${WRKSRC}/docker/tensorflow/tensorflow-$(TF_VERSION)/tmp/include" CGO_LDFLAGS="-L${WRKSRC}/docker/tensorflow/tensorflow-$(TF_VERSION)/tmp/lib" scripts/build.sh debug|g' ${WRKSRC}/Makefile
.else
@${REINPLACE_CMD} -e 's| go build -v ./...| CGO_LDFLAGS="-L/usr/local/lib" go build -v ./cmd/... ./internal/... ./pkg/...|g' ${WRKSRC}/Makefile
@${REINPLACE_CMD} -e 's| scripts/build.sh debug| CGO_LDFLAGS="-L/usr/local/lib" scripts/build.sh debug|g' ${WRKSRC}/Makefile
.endif
@${REINPLACE_CMD} -e 's|PHOTOPRISM_VERSION=.*|PHOTOPRISM_VERSION=${GH_TAGNAME}|' ${WRKSRC}/scripts/build.sh
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/photoprism ${STAGEDIR}${PREFIX}/bin
.if ${FLAVOR:U} != notf
${INSTALL_LIB} ${WRKSRC}/docker/tensorflow/tensorflow-$(TF_VERSION)/tmp/lib/libtensorflow.so ${STAGEDIR}${PREFIX}/lib/libtensorflow.so.1.15.2
${INSTALL_LIB} ${WRKSRC}/docker/tensorflow/tensorflow-$(TF_VERSION)/tmp/lib/libtensorflow_framework.so ${STAGEDIR}${PREFIX}/lib/libtensorflow_framework.so.1.15.2
${LN} -fs libtensorflow_framework.so.1.15.2 ${STAGEDIR}${PREFIX}/lib/libtensorflow_framework.so.1
${LN} -fs libtensorflow.so.1.15.2 ${STAGEDIR}${PREFIX}/lib/libtensorflow.so.1
${LN} -fs libtensorflow_framework.so.1.15.2 ${STAGEDIR}${PREFIX}/lib/libtensorflow_framework.so
${LN} -fs libtensorflow.so.1.15.2 ${STAGEDIR}${PREFIX}/lib/libtensorflow.so
.endif
${MKDIR} ${STAGEDIR}${PHOTOPRISM_DATA_DIR}
${CP} -r ${WRKSRC}/assets ${STAGEDIR}${PHOTOPRISM_DATA_DIR}/assets

View File

@@ -1,6 +1,16 @@
# The photoprism port for FreeBSD
The port will compile and install [libtensorflow](https://www.tensorflow.org/install/lang_c) 1.15.2 and build [photoprism](https://github.com/photoprism/photoprism) from source on FreeBSD.
The port will compile and install
[photoprism](https://github.com/photoprism/photoprism) from source on FreeBSD.
## Dependencies
This depends on libtensorflow1, which is in progress:
* [Bug](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260694)
* [Git repo](https://github.com/psa/libtensorflow1-freebsd-port)
Until it is build by ports, it's recommended to clone the repo and build a
private copy using poudriere.
## If you need pre-built binaries you can use this repo
@@ -20,10 +30,10 @@ make && make install
If you are using poudriere to build the port, you will need to set the
following in `poudriere.conf`:
* `ALLOW_NETWORKING_PACKAGES="photoprism"` as the `dep-js`
target calls `npm audit fix`.
* `ALLOW_NETWORKING_PACKAGES="photoprism"` as the `dep-js` target downloads
node packages.
* `TMPFS_LIMIT` or `MFSSIZE` should be at least `6` as the build is very large.
* `MAX_MEMORY=8` or more is required for bazel
* `MAX_MEMORY=16` or more is required for node
## Add entries to rc.conf

145
pkg-plist
View File

@@ -1,20 +1,60 @@
bin/photoprism
lib/libtensorflow.so.1.15.2
lib/libtensorflow.so.1
lib/libtensorflow.so
lib/libtensorflow_framework.so.1.15.2
lib/libtensorflow_framework.so.1
lib/libtensorflow_framework.so
@dir /var/db/photoprism
@dir /var/db/photoprism/assets
@dir /var/db/photoprism/assets/examples
@dir /var/db/photoprism/assets/examples/.photoprism
@dir /var/db/photoprism/assets/facenet
@dir /var/db/photoprism/assets/locales
@dir /var/db/photoprism/assets/locales/cs
@dir /var/db/photoprism/assets/locales/de
@dir /var/db/photoprism/assets/locales/en
@dir /var/db/photoprism/assets/locales/es
@dir /var/db/photoprism/assets/locales/fr
@dir /var/db/photoprism/assets/locales/he
@dir /var/db/photoprism/assets/locales/hi
@dir /var/db/photoprism/assets/locales/hu
@dir /var/db/photoprism/assets/locales/id
@dir /var/db/photoprism/assets/locales/it
@dir /var/db/photoprism/assets/locales/ja_JP
@dir /var/db/photoprism/assets/locales/ku
@dir /var/db/photoprism/assets/locales/nb
@dir /var/db/photoprism/assets/locales/nl
@dir /var/db/photoprism/assets/locales/pl
@dir /var/db/photoprism/assets/locales/pt
@dir /var/db/photoprism/assets/locales/pt_BR
@dir /var/db/photoprism/assets/locales/ru
@dir /var/db/photoprism/assets/locales/zh
@dir /var/db/photoprism/assets/locales/zh_TW
@dir /var/db/photoprism/assets/nasnet
@dir /var/db/photoprism/assets/nasnet/variables
@dir /var/db/photoprism/assets/nsfw
@dir /var/db/photoprism/assets/nsfw/variables
@dir /var/db/photoprism/assets/profiles
@dir /var/db/photoprism/assets/static
@dir /var/db/photoprism/assets/static/brands
@dir /var/db/photoprism/assets/static/build
@dir /var/db/photoprism/assets/static/build/fonts
@dir /var/db/photoprism/assets/static/build/img
@dir /var/db/photoprism/assets/static/font
@dir /var/db/photoprism/assets/static/font/Open Sans Bold
@dir /var/db/photoprism/assets/static/font/Open Sans Italic
@dir /var/db/photoprism/assets/static/font/Open Sans Regular
@dir /var/db/photoprism/assets/static/font/Open Sans Semibold
@dir /var/db/photoprism/assets/static/font/src
@dir /var/db/photoprism/assets/static/geo
@dir /var/db/photoprism/assets/static/icons
@dir /var/db/photoprism/assets/static/icons/app
@dir /var/db/photoprism/assets/static/icons/bold
@dir /var/db/photoprism/assets/static/icons/crisp
@dir /var/db/photoprism/assets/static/icons/logo
@dir /var/db/photoprism/assets/static/icons/mint
@dir /var/db/photoprism/assets/static/img
@dir /var/db/photoprism/assets/static/plugins
@dir /var/db/photoprism/assets/static/plugins/mapbox-gl-rtl-text
@dir /var/db/photoprism/assets/static/plugins/mapbox-gl-rtl-text/v0.2.3
@dir /var/db/photoprism/assets/templates
/var/db/photoprism/assets/examples/.photoprism/example.jpg
/var/db/photoprism/assets/examples/.ppignore
/var/db/photoprism/assets/examples/6720px_white.jpg
/var/db/photoprism/assets/examples/IMG_4120 (1).JPG
/var/db/photoprism/assets/examples/IMG_4120 copy.JPG
/var/db/photoprism/assets/examples/IMG_4120.AAE
/var/db/photoprism/assets/examples/IMG_4120.JPG
/var/db/photoprism/assets/examples/IMG_E4120.JPG
/var/db/photoprism/assets/examples/Random.docx
/var/db/photoprism/assets/examples/Screenshot 2019-05-21 at 10.45.52.png
/var/db/photoprism/assets/examples/airport_grey
/var/db/photoprism/assets/examples/beach_colorfilter.jpg
/var/db/photoprism/assets/examples/beach_sand.jpg
@@ -56,6 +96,11 @@ lib/libtensorflow_framework.so
/var/db/photoprism/assets/examples/fish_anthias_magenta.jpg
/var/db/photoprism/assets/examples/giraffe_green_brown.jpg
/var/db/photoprism/assets/examples/gopher-video.mp4
/var/db/photoprism/assets/examples/IMG_4120 (1).JPG
/var/db/photoprism/assets/examples/IMG_4120 copy.JPG
/var/db/photoprism/assets/examples/IMG_4120.AAE
/var/db/photoprism/assets/examples/IMG_4120.JPG
/var/db/photoprism/assets/examples/IMG_E4120.JPG
/var/db/photoprism/assets/examples/instrument_gold.jpg
/var/db/photoprism/assets/examples/iphone_7.heic
/var/db/photoprism/assets/examples/iphone_7.json
@@ -71,8 +116,10 @@ lib/libtensorflow_framework.so
/var/db/photoprism/assets/examples/pineapple_white.jpg
/var/db/photoprism/assets/examples/preloader.gif
/var/db/photoprism/assets/examples/purple.tiff
/var/db/photoprism/assets/examples/Random.docx
/var/db/photoprism/assets/examples/robot_magenta.jpg
/var/db/photoprism/assets/examples/rope_blue_cyan.jpg
/var/db/photoprism/assets/examples/Screenshot 2019-05-21 at 10.45.52.png
/var/db/photoprism/assets/examples/sharks_blue.jpg
/var/db/photoprism/assets/examples/snake_lime_brown.jpg
/var/db/photoprism/assets/examples/table_white.jpg
@@ -89,7 +136,7 @@ lib/libtensorflow_framework.so
/var/db/photoprism/assets/examples/zebra_green_brown.jpg
/var/db/photoprism/assets/facenet/saved_model.pb
/var/db/photoprism/assets/facenet/version.txt
/var/db/photoprism/assets/locales/README.md
/var/db/photoprism/assets/LICENSE
/var/db/photoprism/assets/locales/cs/default.mo
/var/db/photoprism/assets/locales/cs/default.po
/var/db/photoprism/assets/locales/de/default.mo
@@ -121,16 +168,17 @@ lib/libtensorflow_framework.so
/var/db/photoprism/assets/locales/nl/default.po
/var/db/photoprism/assets/locales/pl/default.mo
/var/db/photoprism/assets/locales/pl/default.po
/var/db/photoprism/assets/locales/pt/default.mo
/var/db/photoprism/assets/locales/pt/default.po
/var/db/photoprism/assets/locales/pt_BR/default.mo
/var/db/photoprism/assets/locales/pt_BR/default.po
/var/db/photoprism/assets/locales/pt/default.mo
/var/db/photoprism/assets/locales/pt/default.po
/var/db/photoprism/assets/locales/README.md
/var/db/photoprism/assets/locales/ru/default.mo
/var/db/photoprism/assets/locales/ru/default.po
/var/db/photoprism/assets/locales/zh/default.mo
/var/db/photoprism/assets/locales/zh/default.po
/var/db/photoprism/assets/locales/zh_TW/default.mo
/var/db/photoprism/assets/locales/zh_TW/default.po
/var/db/photoprism/assets/locales/zh/default.mo
/var/db/photoprism/assets/locales/zh/default.po
/var/db/photoprism/assets/nasnet/labels.txt
/var/db/photoprism/assets/nasnet/saved_model.pb
/var/db/photoprism/assets/nasnet/variables/variables.data-00000-of-00001
@@ -604,6 +652,8 @@ lib/libtensorflow_framework.so
/var/db/photoprism/assets/static/build/share.js
/var/db/photoprism/assets/static/build/share.js.LICENSE.txt
/var/db/photoprism/assets/static/build/sw.js
/var/db/photoprism/assets/static/font/icon.eot
/var/db/photoprism/assets/static/font/icon.woff
/var/db/photoprism/assets/static/font/Open Sans Bold/0-255.pbf
/var/db/photoprism/assets/static/font/Open Sans Bold/1024-1279.pbf
/var/db/photoprism/assets/static/font/Open Sans Bold/10240-10495.pbf
@@ -1628,8 +1678,6 @@ lib/libtensorflow_framework.so
/var/db/photoprism/assets/static/font/Open Sans Semibold/9472-9727.pbf
/var/db/photoprism/assets/static/font/Open Sans Semibold/9728-9983.pbf
/var/db/photoprism/assets/static/font/Open Sans Semibold/9984-10239.pbf
/var/db/photoprism/assets/static/font/icon.eot
/var/db/photoprism/assets/static/font/icon.woff
/var/db/photoprism/assets/static/font/src/mapboxgl-ctrl-zoom-in.svg
/var/db/photoprism/assets/static/font/src/mapboxgl-ctrl-zoom-out.svg
/var/db/photoprism/assets/static/geo/world.json
@@ -1827,57 +1875,4 @@ lib/libtensorflow_framework.so
/var/db/photoprism/assets/templates/minimal.tmpl
/var/db/photoprism/assets/templates/rainbow.tmpl
/var/db/photoprism/assets/templates/share.tmpl
@dir /var/db/photoprism/assets/examples/.photoprism
@dir /var/db/photoprism/assets/examples
@dir /var/db/photoprism/assets/facenet
@dir /var/db/photoprism/assets/locales/cs
@dir /var/db/photoprism/assets/locales/de
@dir /var/db/photoprism/assets/locales/en
@dir /var/db/photoprism/assets/locales/es
@dir /var/db/photoprism/assets/locales/fr
@dir /var/db/photoprism/assets/locales/he
@dir /var/db/photoprism/assets/locales/hi
@dir /var/db/photoprism/assets/locales/hu
@dir /var/db/photoprism/assets/locales/id
@dir /var/db/photoprism/assets/locales/it
@dir /var/db/photoprism/assets/locales/ja_JP
@dir /var/db/photoprism/assets/locales/ku
@dir /var/db/photoprism/assets/locales/nb
@dir /var/db/photoprism/assets/locales/nl
@dir /var/db/photoprism/assets/locales/pl
@dir /var/db/photoprism/assets/locales/pt
@dir /var/db/photoprism/assets/locales/pt_BR
@dir /var/db/photoprism/assets/locales/ru
@dir /var/db/photoprism/assets/locales/zh
@dir /var/db/photoprism/assets/locales/zh_TW
@dir /var/db/photoprism/assets/locales
@dir /var/db/photoprism/assets/nasnet/variables
@dir /var/db/photoprism/assets/nasnet
@dir /var/db/photoprism/assets/nsfw/variables
@dir /var/db/photoprism/assets/nsfw
@dir /var/db/photoprism/assets/profiles
@dir /var/db/photoprism/assets/static/brands
@dir /var/db/photoprism/assets/static/build/fonts
@dir /var/db/photoprism/assets/static/build/img
@dir /var/db/photoprism/assets/static/build
@dir /var/db/photoprism/assets/static/font/Open Sans Bold
@dir /var/db/photoprism/assets/static/font/Open Sans Italic
@dir /var/db/photoprism/assets/static/font/Open Sans Regular
@dir /var/db/photoprism/assets/static/font/Open Sans Semibold
@dir /var/db/photoprism/assets/static/font/src
@dir /var/db/photoprism/assets/static/font
@dir /var/db/photoprism/assets/static/geo
@dir /var/db/photoprism/assets/static/icons/app
@dir /var/db/photoprism/assets/static/icons/bold
@dir /var/db/photoprism/assets/static/icons/crisp
@dir /var/db/photoprism/assets/static/icons/logo
@dir /var/db/photoprism/assets/static/icons/mint
@dir /var/db/photoprism/assets/static/icons
@dir /var/db/photoprism/assets/static/img
@dir /var/db/photoprism/assets/static/plugins/mapbox-gl-rtl-text/v0.2.3
@dir /var/db/photoprism/assets/static/plugins/mapbox-gl-rtl-text
@dir /var/db/photoprism/assets/static/plugins
@dir /var/db/photoprism/assets/static
@dir /var/db/photoprism/assets/templates
@dir /var/db/photoprism/assets
@dir /var/db/photoprism
bin/photoprism