aboutsummaryrefslogtreecommitdiff
path: root/multimedia/arcan
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2020-11-27 17:41:57 +0000
committerJan Beich <jbeich@FreeBSD.org>2020-11-27 17:41:57 +0000
commit07467d02fc981cc3fc4313694832bbf21f194520 (patch)
treedfa17366c5edd862958396c35521dd0e337ee5e9 /multimedia/arcan
parent1dfa2ad912ae2985b0931c6ee2c11a9e3715d454 (diff)
downloadports-07467d02fc981cc3fc4313694832bbf21f194520.tar.gz
ports-07467d02fc981cc3fc4313694832bbf21f194520.zip
multimedia/arcan: add new port
Arcan is a powerful development framework for creating virtually anything from user interfaces for specialized embedded applications all the way to full-blown standalone desktop environments. At its heart lies a robust and portable multimedia engine, with a well-tested and well-documented Lua scripting interface. The development emphasizes security, debuggability and performance -- guided by a principle of least surprise in terms of API design. WWW: https://arcan-fe.com/
Notes
Notes: svn path=/head/; revision=556446
Diffstat (limited to 'multimedia/arcan')
-rw-r--r--multimedia/arcan/Makefile98
-rw-r--r--multimedia/arcan/distinfo13
-rw-r--r--multimedia/arcan/files/patch-system-libuvc67
-rw-r--r--multimedia/arcan/pkg-descr10
-rw-r--r--multimedia/arcan/pkg-plist73
5 files changed, 261 insertions, 0 deletions
diff --git a/multimedia/arcan/Makefile b/multimedia/arcan/Makefile
new file mode 100644
index 000000000000..52b178ebb3e8
--- /dev/null
+++ b/multimedia/arcan/Makefile
@@ -0,0 +1,98 @@
+# $FreeBSD$
+
+PORTNAME= arcan
+DISTVERSION= 0.6.0
+CATEGORIES= multimedia
+
+PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
+PATCHFILES+= 7cf3d1066faf.patch:-p2 # https://github.com/letoram/arcan/pull/205
+PATCHFILES+= f40395b6755d.patch:-p2 # https://github.com/letoram/arcan/pull/205
+PATCHFILES+= b519eb023e20.patch:-p2 # https://github.com/letoram/arcan/pull/205
+PATCHFILES+= d6b52b1b3601.patch:-p2 # https://github.com/letoram/arcan/pull/205
+PATCHFILES+= d8a262d6d19a.patch:-p2 # https://github.com/letoram/arcan/pull/205
+
+MAINTAINER= jbeich@FreeBSD.org
+COMMENT= Display Server, Multimedia Framework, Game Engine
+
+LICENSE= BSD3CLAUSE GPLv2+ LGPL21
+LICENSE_COMB= multi
+LICENSE_FILE_BSD3CLAUSE=${WRKSRC:H}/data/distr/LICENSE.BSD
+LICENSE_FILE_GPLv2+ = ${WRKSRC:H}/data/distr/LICENSE.GPL
+LICENSE_FILE_LGPL21+ = ${WRKSRC:H}/data/distr/LICENSE.LGPL
+
+LIB_DEPENDS= libdrm.so:graphics/libdrm \
+ libfreetype.so:print/freetype2
+RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri
+
+USES= cmake gl iconv openal pkgconfig sqlite
+USE_GITHUB= yes
+USE_GL= egl gbm gl
+USE_LDCONFIG= yes
+GH_ACCOUNT= letoram
+WRKSRC_SUBDIR= src
+CMAKE_ON= HYBRID_HEADLESS
+CMAKE_ARGS= -DENGINE_BUILDTAG:STRING="${DISTVERSIONFULL}"
+LDFLAGS+= -Wl,--as-needed # bzip2, ffmpeg, librt, libutil, lzma, zlib
+
+OPTIONS_DEFINE= ESPEAK FFMPEG LUAJIT SDL TESSERACT UVC VLC VNC WAYLAND
+OPTIONS_DEFAULT=ESPEAK FFMPEG LUAJIT SDL TESSERACT UVC VLC VNC WAYLAND
+OPTIONS_EXCLUDE_aarch64= LUAJIT # bug 225342
+OPTIONS_EXCLUDE_powerpc64= LUAJIT
+OPTIONS_EXCLUDE_FreeBSD_11= VLC # no Qt5
+OPTIONS_SUB= yes
+
+ESPEAK_DESC= Text to speech via eSpeak
+ESPEAK_LIB_DEPENDS= libespeak.so:audio/espeak
+
+FFMPEG_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg
+
+LUAJIT_DESC= Use LuaJIT instead of standard Lua
+LUAJIT_LIB_DEPENDS= libluajit-5.1.so:lang/luajit
+LUAJIT_USES_OFF= lua:51
+LUAJIT_CMAKE_BOOL_OFF= DISABLE_JIT
+
+SDL_USES= sdl
+SDL_USE= SDL=sdl2
+SDL_CMAKE_BOOL= HYBRID_SDL
+
+TESSERACT_DESC= Optical Character Recognition via Tesseract
+TESSERACT_LIB_DEPENDS= libtesseract.so:graphics/tesseract
+
+VLC_DESC= Video decode via libvlc
+VLC_LIB_DEPENDS= libvlc.so:multimedia/vlc
+
+UVC_DESC= USB video cameras via libuvc
+UVC_LIB_DEPENDS= libuvc.so:multimedia/libuvc
+UVC_CMAKE_BOOL= FSRV_DECODE_UVC
+
+VNC_DESC= VNC client/server support
+VNC_LIB_DEPENDS= libvncserver.so:net/libvncserver
+
+WAYLAND_BUILD_DEPENDS= wayland-protocols>0:graphics/wayland-protocols
+WAYLAND_LIB_DEPENDS= libwayland-server.so:graphics/wayland \
+ libxcb-icccm.so:x11/xcb-util-wm \
+ libxkbcommon.so:x11/libxkbcommon
+WAYLAND_USES= xorg
+WAYLAND_USE= XORG=xcb
+WAYLAND_CMAKE_BOOL_OFF= DISABLE_WAYLAND
+
+post-patch-ESPEAK-off:
+ @${REINPLACE_CMD} -i.noespeak '/find.*Espeak/d' \
+ ${WRKSRC}/frameserver/decode/default/CMakeLists.txt
+
+post-patch-FFMPEG-off:
+ @${REINPLACE_CMD} -i.noffmpeg '/pkg.*FFMPEG/d' \
+ ${WRKSRC}/a12/CMakeLists.txt \
+ ${WRKSRC}/frameserver/decode/default/CMakeLists.txt \
+ ${WRKSRC}/frameserver/encode/default/CMakeLists.txt
+
+post-patch-TESSERACT-off:
+ @${REINPLACE_CMD} -i.notesseract '/pkg.*tesseract/d' \
+ ${WRKSRC}/frameserver/encode/default/CMakeLists.txt
+
+post-patch-VNC-off:
+ @${REINPLACE_CMD} -i.novnc '/pkg.*libvnc/d' \
+ ${WRKSRC}/frameserver/encode/default/CMakeLists.txt \
+ ${WRKSRC}/frameserver/remoting/default/CMakeLists.txt
+
+.include <bsd.port.mk>
diff --git a/multimedia/arcan/distinfo b/multimedia/arcan/distinfo
new file mode 100644
index 000000000000..8d76ed2f9d2b
--- /dev/null
+++ b/multimedia/arcan/distinfo
@@ -0,0 +1,13 @@
+TIMESTAMP = 1606252529
+SHA256 (letoram-arcan-0.6.0_GH0.tar.gz) = 7b7aeb0fa6b89b7e3779d2e078b626566bdfa86c756d7ea1cc4f84b9e60d16a0
+SIZE (letoram-arcan-0.6.0_GH0.tar.gz) = 11216362
+SHA256 (7cf3d1066faf.patch) = f6a03026c263bb0f5e98c094925f75c0300c960079b5b0e0740fcb0e804d548c
+SIZE (7cf3d1066faf.patch) = 1078
+SHA256 (f40395b6755d.patch) = b8e5d7ec724a0cec7045d50aaf2a673dbb23ecdaba233503b0de194bfcdb2ef5
+SIZE (f40395b6755d.patch) = 920
+SHA256 (b519eb023e20.patch) = ca8b0bd0adf98ada72be83ea20e797fc191c0f66e83bc7edeb95be327bd67ba7
+SIZE (b519eb023e20.patch) = 2333
+SHA256 (d6b52b1b3601.patch) = e6a54c79de294668ee64a4b13f366257bfcd7856510540fe5f59079f6296382e
+SIZE (d6b52b1b3601.patch) = 1270
+SHA256 (d8a262d6d19a.patch) = 82b04de15212726d33fab17c87600fa0c78e44ea28ee9da764d840ef8f0e1ebf
+SIZE (d8a262d6d19a.patch) = 804
diff --git a/multimedia/arcan/files/patch-system-libuvc b/multimedia/arcan/files/patch-system-libuvc
new file mode 100644
index 000000000000..90ba636f8cd9
--- /dev/null
+++ b/multimedia/arcan/files/patch-system-libuvc
@@ -0,0 +1,67 @@
+- Git cannot be used as poudriere disables network access during build
+- ExternalProject_Add fails to build with Ninja
+- https://github.com/letoram/arcan/commit/66efdebb236c requires newer libuvc, so guard
+
+--- frameserver/decode/default/CMakeLists.txt.orig 2020-11-27 15:29:00 UTC
++++ frameserver/decode/default/CMakeLists.txt
+@@ -52,31 +52,18 @@ if (LIBVLC_FOUND)
+ ${DECODE_DEFS}
+ )
+
+- pkg_check_modules(LIBUSB_1 REQUIRED libusb-1.0)
+ pkg_check_modules(FFMPEG REQUIRED libavcodec libavdevice libavfilter libavformat libavutil libswresample libswscale)
++ pkg_check_modules(LIBUVC libuvc)
+
+- ExternalProject_Add(libuvc
+- SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/frameserver/decode/libuvc"
+- BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libuvc_static"
+- UPDATE_COMMAND ""
+- GIT_REPOSITORY "${EXTERNAL_SRC_DIR}/git/libuvc"
+- ${EXTERNAL_DEFS}
+- ${CMAKE_EXTERNAL_DEFS}
+- -DBUILD_UVC_STATIC=ON
+- )
+-
+- set(DECODE_DEPS libuvc)
+ set(DECODE_INCLUDE_DIRS
+ ${DECODE_INCLUDE_DIRS}
+- ${LIBUSB_1_INCLUDE_DIRS}
+ ${FFMPEG_INCLUDE_DIRS}
+- ${CMAKE_CURRENT_BINARY_DIR}/libuvc_static/include
++ ${LIBUVC_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_BINARY_DIR}/../../../include)
+ set(DECODE_LIBS
+ ${FFMPEG_LINK_LIBRARIES}
+ ${DECODE_LIBS}
+- ${LIBUSB_1_LINK_LIBRARIES}
+- ${CMAKE_CURRENT_BINARY_DIR}/libuvc_static/libuvc.a
++ ${LIBUVC_LINK_LIBRARIES}
+ )
+ set(DECODE_SOURCES
+ ${DECODE_SOURCES}
+--- frameserver/decode/default/uvc_support.c.orig 2020-11-24 21:15:29 UTC
++++ frameserver/decode/default/uvc_support.c
+@@ -145,7 +145,9 @@ static void callback(uvc_frame_t* frame, void* tag)
+ * though at least the capture devices I have used this one had the
+ * YUYV frame format have the same output as NV12 /facepalm */
+ case UVC_FRAME_FORMAT_YUYV:
++#ifdef UVC_COLOR_FORMAT_NV12
+ case UVC_FRAME_FORMAT_NV12:
++#endif
+ run_swscale(frame, cont, 2, AV_PIX_FMT_NV12);
+ break;
+ case UVC_FRAME_FORMAT_UYVY:
+@@ -185,11 +187,13 @@ static int fmt_score(const uint8_t fourcc[static 4], i
+ .enumv = UVC_FRAME_FORMAT_GRAY8,
+ .score = 1
+ },
++#ifdef UVC_COLOR_FORMAT_NV12
+ {
+ .fourcc = {'N', 'V', '1', '2'},
+ .enumv = UVC_FRAME_FORMAT_NV12,
+ .score = 3
+ },
++#endif
+ /* this does not seem to have the 'right' fourcc? */
+ {
+ .fourcc = {0x7d, 0xeb, 0x36, 0xe4},
diff --git a/multimedia/arcan/pkg-descr b/multimedia/arcan/pkg-descr
new file mode 100644
index 000000000000..4d89ee2103be
--- /dev/null
+++ b/multimedia/arcan/pkg-descr
@@ -0,0 +1,10 @@
+Arcan is a powerful development framework for creating virtually anything from
+user interfaces for specialized embedded applications all the way to full-blown
+standalone desktop environments.
+
+At its heart lies a robust and portable multimedia engine, with a well-tested
+and well-documented Lua scripting interface. The development emphasizes
+security, debuggability and performance -- guided by a principle of least
+surprise in terms of API design.
+
+WWW: https://arcan-fe.com/
diff --git a/multimedia/arcan/pkg-plist b/multimedia/arcan/pkg-plist
new file mode 100644
index 000000000000..be0a9066ff6e
--- /dev/null
+++ b/multimedia/arcan/pkg-plist
@@ -0,0 +1,73 @@
+bin/afsrv_avfeed
+%%VLC%%bin/afsrv_decode
+%%FFMPEG%%bin/afsrv_encode
+bin/afsrv_game
+bin/afsrv_net
+bin/afsrv_remoting
+bin/afsrv_terminal
+bin/arcan
+bin/arcan-net
+%%WAYLAND%%bin/arcan-wayland
+bin/arcan_db
+bin/arcan_frameserver
+bin/arcan_headless
+%%SDL%%bin/arcan_sdl
+%%WAYLAND%%bin/arcan_xwm
+include/arcan/a12.h
+include/arcan/arcan_tui.h
+include/arcan/arcan_tui_bufferwnd.h
+include/arcan/arcan_tui_linewnd.h
+include/arcan/arcan_tui_listwnd.h
+include/arcan/arcan_tui_readline.h
+include/arcan/arcan_tuidefs.h
+include/arcan/arcan_tuisym.h
+include/arcan/shmif/arcan_shmif.h
+include/arcan/shmif/arcan_shmif_control.h
+include/arcan/shmif/arcan_shmif_defs.h
+include/arcan/shmif/arcan_shmif_event.h
+include/arcan/shmif/arcan_shmif_interop.h
+include/arcan/shmif/arcan_shmif_server.h
+include/arcan/shmif/arcan_shmif_sub.h
+lib/libarcan_a12.so
+lib/libarcan_a12.so.0.1
+lib/libarcan_shmif.a
+lib/libarcan_shmif.so
+lib/libarcan_shmif.so.0.13
+lib/libarcan_shmif_ext.so
+lib/libarcan_shmif_ext.so.0.13
+lib/libarcan_shmif_intext.so
+lib/libarcan_shmif_intext.so.0.13
+lib/libarcan_shmif_server.so
+lib/libarcan_shmif_server.so.0.13
+lib/libarcan_tui.so
+lib/libarcan_tui.so.0.13
+libdata/pkgconfig/arcan-shmif-ext.pc
+libdata/pkgconfig/arcan-shmif-srv.pc
+libdata/pkgconfig/arcan-shmif-tui.pc
+libdata/pkgconfig/arcan-shmif.pc
+%%WAYLAND%%man/man1/arcan-wayland.1.gz
+man/man1/arcan.1.gz
+man/man1/arcan_db.1.gz
+%%DATADIR%%/appl/console/console.lua
+%%DATADIR%%/appl/console/console_osdkbd.lua
+%%DATADIR%%/appl/console/cursor.png
+%%DATADIR%%/appl/console/wayland_client.lua
+%%DATADIR%%/appl/welcome/welcome.lua
+%%DATADIR%%/resources/fonts/default.ttf
+%%DATADIR%%/resources/images/icons/arcanicon.png
+%%DATADIR%%/resources/images/icons/arcanicon.svg
+%%DATADIR%%/scripts/builtin/debug.lua
+%%DATADIR%%/scripts/builtin/decorator.lua
+%%DATADIR%%/scripts/builtin/json.lua
+%%DATADIR%%/scripts/builtin/keyboard.lua
+%%DATADIR%%/scripts/builtin/mouse.lua
+%%DATADIR%%/scripts/builtin/osdkbd.lua
+%%DATADIR%%/scripts/builtin/string.lua
+%%DATADIR%%/scripts/builtin/table.lua
+%%DATADIR%%/scripts/builtin/wayland.lua
+%%DATADIR%%/scripts/builtin/wmsupport.lua
+%%DATADIR%%/scripts/hook/debugstall.lua
+%%DATADIR%%/scripts/hook/external_input.lua
+%%DATADIR%%/scripts/hook/shutdown.lua
+%%DATADIR%%/scripts/hook/timed_dump.lua
+%%DATADIR%%/scripts/hook/touch_simulator.lua