diff mbox

[2/2] mpv: new package

Message ID 1461246857-5634-2-git-send-email-gustavo@zacarias.com.ar
State Superseded
Headers show

Commit Message

Gustavo Zacarias April 21, 2016, 1:54 p.m. UTC
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
---
 package/Config.in                                  |   1 +
 ...ript-don-t-check-for-fork-on-POSIX-checks.patch |  31 +++
 package/mpv/Config.in                              |  15 ++
 package/mpv/mpv.hash                               |   3 +
 package/mpv/mpv.mk                                 | 255 +++++++++++++++++++++
 5 files changed, 305 insertions(+)
 create mode 100644 package/mpv/0001-wscript-don-t-check-for-fork-on-POSIX-checks.patch
 create mode 100644 package/mpv/Config.in
 create mode 100644 package/mpv/mpv.hash
 create mode 100644 package/mpv/mpv.mk

Comments

Arnout Vandecappelle April 21, 2016, 8:04 p.m. UTC | #1
On 04/21/16 15:54, Gustavo Zacarias wrote:
> Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
> ---
>   package/Config.in                                  |   1 +
>   ...ript-don-t-check-for-fork-on-POSIX-checks.patch |  31 +++
>   package/mpv/Config.in                              |  15 ++
>   package/mpv/mpv.hash                               |   3 +
>   package/mpv/mpv.mk                                 | 255 +++++++++++++++++++++
>   5 files changed, 305 insertions(+)
>   create mode 100644 package/mpv/0001-wscript-don-t-check-for-fork-on-POSIX-checks.patch
>   create mode 100644 package/mpv/Config.in
>   create mode 100644 package/mpv/mpv.hash
>   create mode 100644 package/mpv/mpv.mk
>
[snip]
> diff --git a/package/mpv/Config.in b/package/mpv/Config.in
> new file mode 100644
> index 0000000..87644cb
> --- /dev/null
> +++ b/package/mpv/Config.in
> @@ -0,0 +1,15 @@
> +config BR2_PACKAGE_MPV
> +	bool "mpv"
> +	depends on BR2_TOOLCHAIN_HAS_THREADS

	depends on !BR2_nios2 # ffmpeg

> +	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
> +	select BR2_PACKAGE_FFMPEG
> +	select BR2_PACKAGE_FFMPEG_SWSCALE
> +	select BR2_PACKAGE_ZLIB
> +	help
> +	  mpv is a fork of mplayer2 and MPlayer. It shares some features
> +	  with the former projects while introducing many more.
> +
> +	  https://mpv.io/
> +
> +comment "mpv needs a toolchain w/ threads"
> +	depends on !BR2_TOOLCHAIN_HAS_THREADS

	depends on !BR2_nios2

> diff --git a/package/mpv/mpv.hash b/package/mpv/mpv.hash
> new file mode 100644
> index 0000000..da51f3a
> --- /dev/null
> +++ b/package/mpv/mpv.hash
> @@ -0,0 +1,3 @@
> +# Locally calculated
> +sha256	602cd2b0f5fc7e43473234fbb96e3f7bbb6418f15eb8fa720d9433cce31eba6e	v0.17.0.tar.gz
> +sha256	01bf2beab2106d1558800c8709bc2c8e496d3da4a2ca343fe091f22fca60c98b	waf-1.8.12
> diff --git a/package/mpv/mpv.mk b/package/mpv/mpv.mk
> new file mode 100644
> index 0000000..0032eb5
> --- /dev/null
> +++ b/package/mpv/mpv.mk
> @@ -0,0 +1,255 @@
> +################################################################################
> +#
> +# mpv
> +#
> +################################################################################
> +
> +MPV_VERSION = 0.17.0
> +MPV_WAF_VERSION = 1.8.12
> +MPV_SITE = https://github.com/mpv-player/mpv/archive
> +MPV_SOURCE = v$(MPV_VERSION).tar.gz
> +MPV_EXTRA_DOWNLOADS = https://waf.io/waf-$(MPV_WAF_VERSION)

  Weird that an uploaded tarball doesn't include waf...

  It may make sense to create a host-waf package that does downloads the 
prebuilt self-extractor. This would allow us to remove the dependency on 
host-python for all the packages that use waf, because current waf supports 
python 2.5-3.5, which is plenty for us I think.


  Otherwise looks good to me.

  Regards,
  Arnout

> +MPV_DEPENDENCIES = \
> +	host-pkgconf ffmpeg zlib \
> +	$(if $(BR2_PACKAGE_LIBICONV),libiconv)
> +MPV_LICENSE = GPLv2+
> +MPV_LICENSE_FILES = LICENSE

[snip]
Gustavo Zacarias April 21, 2016, 8:28 p.m. UTC | #2
On 21/04/16 17:04, Arnout Vandecappelle wrote:

>      depends on !BR2_nios2 # ffmpeg

Ah yes, i'll update.

>   Weird that an uploaded tarball doesn't include waf...
>
>   It may make sense to create a host-waf package that does downloads the
> prebuilt self-extractor. This would allow us to remove the dependency on
> host-python for all the packages that use waf, because current waf
> supports python 2.5-3.5, which is plenty for us I think.
>
>
>   Otherwise looks good to me.

They provide a bootstrap script that downloads it, but i consider it 
better that we handle that on our own/infra for obvious reasons.
Regarding host-waf it's not really a good idea, essentially you've got 
several major waf versions say 1.6.x, 1.8.x and soon 1.9.x which aren't 
too drop-in compatible.
Even the mpv authors frowned upon upgrading the 1.8.12 preferred version 
with the latest 1.8.x (1.8.20) in their tracker (not from me, rather 
when looking about open issues/improvements).
And then there's samba which has an extended waf (wafsamba) and are 
stuck on the 1.6.x series because of that.
Regards.
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index c9081d0..bce37e8 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -29,6 +29,7 @@  menu "Audio and video applications"
 	source "package/mpd-mpc/Config.in"
 	source "package/mpg123/Config.in"
 	source "package/mplayer/Config.in"
+	source "package/mpv/Config.in"
 	source "package/multicat/Config.in"
 	source "package/musepack/Config.in"
 	source "package/ncmpc/Config.in"
diff --git a/package/mpv/0001-wscript-don-t-check-for-fork-on-POSIX-checks.patch b/package/mpv/0001-wscript-don-t-check-for-fork-on-POSIX-checks.patch
new file mode 100644
index 0000000..544c03c
--- /dev/null
+++ b/package/mpv/0001-wscript-don-t-check-for-fork-on-POSIX-checks.patch
@@ -0,0 +1,31 @@ 
+From 61aea32efe675e584121295452fc7ab2a652d021 Mon Sep 17 00:00:00 2001
+From: Gustavo Zacarias <gustavo@zacarias.com.ar>
+Date: Wed, 20 Apr 2016 09:39:30 -0300
+Subject: [PATCH] wscript: don't check for fork() on POSIX checks
+
+It's not being used, and in fact prevents mpv from being built in nommu
+architectures (cortex M, blackfin, ...)
+
+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
+---
+Status: pull request https://github.com/mpv-player/mpv/pull/3068
+
+ wscript | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/wscript b/wscript
+index a4ffce6..40328e4 100644
+--- a/wscript
++++ b/wscript
+@@ -127,7 +127,7 @@ main_dependencies = [
+         'desc': 'POSIX environment',
+         # This should be good enough.
+         'func': check_statement(['poll.h', 'unistd.h', 'sys/mman.h'],
+-            'struct pollfd pfd; poll(&pfd, 1, 0); fork(); int f[2]; pipe(f); munmap(f,0)'),
++            'struct pollfd pfd; poll(&pfd, 1, 0); int f[2]; pipe(f); munmap(f,0)'),
+     }, {
+         'name': 'posix-or-mingw',
+         'desc': 'development environment',
+-- 
+2.7.3
+
diff --git a/package/mpv/Config.in b/package/mpv/Config.in
new file mode 100644
index 0000000..87644cb
--- /dev/null
+++ b/package/mpv/Config.in
@@ -0,0 +1,15 @@ 
+config BR2_PACKAGE_MPV
+	bool "mpv"
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+	select BR2_PACKAGE_FFMPEG
+	select BR2_PACKAGE_FFMPEG_SWSCALE
+	select BR2_PACKAGE_ZLIB
+	help
+	  mpv is a fork of mplayer2 and MPlayer. It shares some features
+	  with the former projects while introducing many more.
+
+	  https://mpv.io/
+
+comment "mpv needs a toolchain w/ threads"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/mpv/mpv.hash b/package/mpv/mpv.hash
new file mode 100644
index 0000000..da51f3a
--- /dev/null
+++ b/package/mpv/mpv.hash
@@ -0,0 +1,3 @@ 
+# Locally calculated
+sha256	602cd2b0f5fc7e43473234fbb96e3f7bbb6418f15eb8fa720d9433cce31eba6e	v0.17.0.tar.gz
+sha256	01bf2beab2106d1558800c8709bc2c8e496d3da4a2ca343fe091f22fca60c98b	waf-1.8.12
diff --git a/package/mpv/mpv.mk b/package/mpv/mpv.mk
new file mode 100644
index 0000000..0032eb5
--- /dev/null
+++ b/package/mpv/mpv.mk
@@ -0,0 +1,255 @@ 
+################################################################################
+#
+# mpv
+#
+################################################################################
+
+MPV_VERSION = 0.17.0
+MPV_WAF_VERSION = 1.8.12
+MPV_SITE = https://github.com/mpv-player/mpv/archive
+MPV_SOURCE = v$(MPV_VERSION).tar.gz
+MPV_EXTRA_DOWNLOADS = https://waf.io/waf-$(MPV_WAF_VERSION)
+MPV_DEPENDENCIES = \
+	host-pkgconf ffmpeg zlib \
+	$(if $(BR2_PACKAGE_LIBICONV),libiconv)
+MPV_LICENSE = GPLv2+
+MPV_LICENSE_FILES = LICENSE
+
+# Some of these options need testing and/or tweaks
+MPV_CONF_OPTS = \
+	--prefix=/usr \
+	--disable-android \
+	--disable-caca \
+	--disable-cdda \
+	--disable-cocoa \
+	--disable-coreaudio \
+	--disable-gpl3 \
+	--disable-libguess \
+	--disable-libv4l2 \
+	--disable-opensles \
+	--disable-rpi \
+	--disable-rsound \
+	--disable-rubberband \
+	--disable-uchardet \
+	--disable-vapoursynth \
+	--disable-vapoursynth-lazy \
+	--disable-vdpau
+
+# ALSA support requires pcm+mixer
+ifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER)$(BR2_PACKAGE_ALSA_LIB_PCM),yy)
+MPV_CONF_OPTS += --enable-alsa
+MPV_DEPENDENCIES += alsa-lib
+else
+MPV_CONF_OPTS += --disable-alsa
+endif
+
+# GBM support is provided by mesa3d when EGL=y
+ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)
+MPV_CONF_OPTS += --enable-gbm
+MPV_DEPENDENIES += mesa3d
+else
+MPV_CONF_OPTS += --disable-gbm
+endif
+
+# jack support
+ifeq ($(BR2_PACKAGE_JACK2),y)
+MPV_CONF_OPTS += --enable-jack
+MPV_DEPENDENCIES += jack2
+else
+MPV_CONF_OPTS += --disable-jack
+endif
+
+# jpeg support
+ifeq ($(BR2_PACKAGE_JPEG),y)
+MPV_CONF_OPTS += --enable-jpeg
+MPV_DEPENDENCIES += jpeg
+else
+MPV_CONF_OPTS += --disable-jpeg
+endif
+
+# lcms2 support
+ifeq ($(BR2_PACKAGE_LCMS2),y)
+MPV_CONF_OPTS += --enable-lcms2
+MPV_DEPENDENCIES += lcms2
+else
+MPV_CONF_OPTS += --disable-lcms2
+endif
+
+# libarchive support
+ifeq ($(BR2_PACKAGE_LIBARCHIVE),y)
+MPV_CONF_OPTS += --enable-libarchive
+MPV_DEPENDENCIES += libarchive
+else
+MPV_CONF_OPTS += --disable-libarchive
+endif
+
+# libass subtitle support
+ifeq ($(BR2_PACKAGE_LIBASS),y)
+MPV_CONF_OPTS += --enable-libass
+MPV_DEPENDENCIES += libass
+else
+MPV_CONF_OPTS += --disable-libass
+endif
+
+# bluray support
+ifeq ($(BR2_PACKAGE_LIBBLURAY),y)
+MPV_CONF_OPTS += --enable-libbluray
+MPV_DEPENDENCIES += libbluray
+else
+MPV_CONF_OPTS += --disable-libbluray
+endif
+
+# libdvdnav
+ifeq ($(BR2_PACKAGE_LIBDVDNAV),y)
+MPV_CONF_OPTS += --enable-dvdnav
+MPV_DEPENDENCIES += libdvdnav
+else
+MPV_CONF_OPTS += --disable-dvdnav
+endif
+
+# libdvdread
+ifeq ($(BR2_PACKAGE_LIBDVDREAD),y)
+MPV_CONF_OPTS += --enable-dvdread
+MPV_DEPENDENCIES += libdvdread
+else
+MPV_CONF_OPTS += --disable-dvdread
+endif
+
+# libdrm
+ifeq ($(BR2_PACKAGE_LIBDRM),y)
+MPV_CONF_OPTS += --enable-drm
+MPV_DEPENDENCIES += libdrm
+else
+MPV_CONF_OPTS += --disable-drm
+endif
+
+# libenca support
+ifeq ($(BR2_PACKAGE_LIBENCA),y)
+MPV_CONF_OPTS += --enable-enca
+MPV_DEPENDENCIES += libenca
+else
+MPV_CONF_OPTS += --disable-enca
+endif
+
+# LUA support, only for lua51/lua52/luajit
+# This enables the controller (OSD) together with libass
+ifeq ($(BR2_PACKAGE_LUA_5_1)$(BR2_PACKAGE_LUA_5_2)$(BR2_PACKAGE_LUAJIT),y)
+MPV_CONF_OPTS += --enable-lua
+MPV_DEPENDENCIES += luainterpreter
+else
+MPV_CONF_OPTS += --disable-lua
+endif
+
+# OpenGL support
+ifeq ($(BR2_PACKAGE_HAS_LIBGL),y)
+MPV_CONF_OPTS += --enable-gl --enable-standard-gl
+MPV_DEPENDENCIES += libgl
+else
+MPV_CONF_OPTS += --disable-gl --disable-standard-gl
+endif
+
+# pulseaudio support
+ifeq ($(BR2_PACKAGE_PULSEAUDIO),y)
+MPV_CONF_OPTS += --enable-pulse
+MPV_DEPENDENCIES += pulseaudio
+else
+MPV_CONF_OPTS += --disable-pulse
+endif
+
+# samba support
+ifeq ($(BR2_PACKAGE_SAMBA4),y)
+MPV_CONF_OPTS += --enable-libsmbclient
+MPV_DEPENDENCIES += samba4
+else
+MPV_CONF_OPTS += --disable-libsmbclient
+endif
+
+# SDL support
+# Both can't be used at the same time, prefer newer API
+ifeq ($(BR2_PACKAGE_SDL2),y)
+MPV_CONF_OPTS += --enable-sdl2 --disable-sdl1
+MPV_DEPENDENCIES += sdl2
+else ifeq ($(BR2_PACKAGE_SDL),y)
+MPV_CONF_OPTS += --enable-sdl1 --disable-sdl2
+MPV_DEPENDENCIES += sdl
+else
+MPV_CONF_OPTS += --disable-sdl1 --disable-sdl2
+endif
+
+# va-api support
+ifeq ($(BR2_PACKAGE_LIBVA),y)
+MPV_CONF_OPTS += --enable-vaapi
+MPV_DEPENDENCIES += libva
+else
+MPV_CONF_OPTS += --disable-vaapi
+endif
+
+# wayland support
+ifeq ($(BR2_PACKAGE_WAYLAND),y)
+MPV_CONF_OPTS += --enable-wayland
+MPV_DEPENDENCIES += wayland
+else
+MPV_CONF_OPTS += --disable-wayland
+endif
+
+# Base X11 support
+ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)
+MPV_CONF_OPTS += --enable-x11 --disable-xss
+MPV_DEPENDENCIES += xlib_libX11
+# xext
+ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y)
+MPV_CONF_OPTS += --enable-xext
+MPV_DEPENDENCIES += xlib_libXext
+else
+MPV_CONF_OPTS += --disable-xext
+endif
+# xinerama
+ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)
+MPV_CONF_OPTS += --enable-xinerama
+MPV_DEPENDENCIES += xlib_libXinerama
+else
+MPV_CONF_OPTS += --disable-xinerama
+endif
+# xrandr
+ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)
+MPV_CONF_OPTS += --enable-xrandr
+MPV_DEPENDENCIES += xlib_libXrandr
+else
+MPV_CONF_OPTS += --disable-xrandr
+endif
+# XVideo
+ifeq ($(BR2_PACKAGE_XLIB_LIBXV),y)
+MPV_CONF_OPTS += --enable-xv
+MPV_DEPENDENCIES += xlib_libXv
+else
+MPV_CONF_OPTS += --disable-xv
+endif
+else
+MPV_CONF_OPTS += --disable-x11
+endif
+
+define MPV_COPY_WAF
+	$(INSTALL) -m 0755 $(DL_DIR)/waf-$(MPV_WAF_VERSION) $(@D)/waf
+endef
+MPV_POST_EXTRACT_HOOKS += MPV_COPY_WAF
+
+define MPV_CONFIGURE_CMDS
+	cd $(@D); \
+		$(TARGET_CONFIGURE_OPTS) \
+		./waf configure $(MPV_CONF_OPTS)
+endef
+
+define MPV_BUILD_CMDS
+	cd $(@D); \
+		$(TARGET_MAKE_ENV) \
+		./waf build
+endef
+
+define MPV_INSTALL_TARGET_CMDS
+	cd $(@D); \
+		$(TARGET_MAKE_ENV) \
+		DESTDIR=$(TARGET_DIR) \
+		./waf install
+endef
+
+$(eval $(generic-package))