From 07467d02fc981cc3fc4313694832bbf21f194520 Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Fri, 27 Nov 2020 17:41:57 +0000 Subject: 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/ --- multimedia/arcan/Makefile | 98 ++++++++++++++++++++++++++++++ multimedia/arcan/distinfo | 13 ++++ multimedia/arcan/files/patch-system-libuvc | 67 ++++++++++++++++++++ multimedia/arcan/pkg-descr | 10 +++ multimedia/arcan/pkg-plist | 73 ++++++++++++++++++++++ 5 files changed, 261 insertions(+) create mode 100644 multimedia/arcan/Makefile create mode 100644 multimedia/arcan/distinfo create mode 100644 multimedia/arcan/files/patch-system-libuvc create mode 100644 multimedia/arcan/pkg-descr create mode 100644 multimedia/arcan/pkg-plist (limited to 'multimedia/arcan') 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 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 -- cgit v1.2.3