1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-27 05:10:36 +00:00

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/
This commit is contained in:
Jan Beich 2020-11-27 17:41:57 +00:00
parent 1dfa2ad912
commit 07467d02fc
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=556446
6 changed files with 262 additions and 0 deletions

View File

@ -10,6 +10,7 @@
SUBDIR += aegisub
SUBDIR += aom
SUBDIR += aravis
SUBDIR += arcan
SUBDIR += assimp
SUBDIR += atomicparsley
SUBDIR += audacious

98
multimedia/arcan/Makefile Normal file
View File

@ -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>

13
multimedia/arcan/distinfo Normal file
View File

@ -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

View File

@ -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},

View File

@ -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/

View File

@ -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