Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Sep 2013 13:58:21 GMT
From:      Jan Beich <jbeich@tormail.org>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/181964: [patch] multimedia/gstreamer-ffmpeg, multimedia/gstreamer1-libav: make sure libavcodec builds MD code
Message-ID:  <201309091358.r89DwLcY067292@oldred.freebsd.org>
Resent-Message-ID: <201309091400.r89E001a042602@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         181964
>Category:       ports
>Synopsis:       [patch] multimedia/gstreamer-ffmpeg, multimedia/gstreamer1-libav: make sure libavcodec builds MD code
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Sep 09 14:00:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Jan Beich
>Release:        FreeBSD 10.0-CURRENT amd64
>Organization:
>Environment:
http://forums.freebsd.org/showthread.php?t=40629

gst-ffmpeg or gst-libav fail to play any file because some symbols are
not present - http://pastebin.com/gRVPWUUK

also, ports/148200 hints the same issue happens on powerpc64 as well

>Description:
During a port build some variables not defined in MAKE_ENV/MAKE_ARGS
are leaked to do-build target via .MAKEFLAGS rule in bsd.port.mk.
According to make(1) man page variable assignments in MAKEFLAGS are
treated as those on command line which means they override assignments
in Makefiles.

Unfortunately, this breaks building arch-specific code for libavcodec
as ARCH in config.mak is no longer honored.

>How-To-Repeat:
$ cat Makefile
ARCH != uname -p

.ifndef NOPRECIOUSMAKEVARS
.MAKEFLAGS: ARCH="${ARCH}"
.endif

all:
	@cd ${.CURDIR}/foo; gmake

$ cat foo/Makefile
ARCH = x86

all:
	@echo ARCH=${ARCH}

$ fmake
ARCH=amd64

$ fmake NOPRECIOUSMAKEVARS=
ARCH=x86

>Fix:
Define NOPRECIOUSMAKEVARS, rename the variable like multimedia/ffmpeg
or use --with-system-ffmpeg (e.g. ports/181519).

--- rename_gst0.diff begins here ---
--- gst-libs/ext/libav/common.mak~
+++ gst-libs/ext/libav/common.mak
@@ -71,8 +71,8 @@ HOSTPROGS := $(addprefix $(SUBDIR),$(add
 
 DEP_LIBS := $(foreach NAME,$(FFLIBS),lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME))
 
-ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(ARCH)/*.h))
-SKIPHEADERS += $(addprefix $(ARCH)/,$(ARCH_HEADERS))
+ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(LIBAV_ARCH)/*.h))
+SKIPHEADERS += $(addprefix $(LIBAV_ARCH)/,$(ARCH_HEADERS))
 SKIPHEADERS := $(addprefix $(SUBDIR),$(SKIPHEADERS-) $(SKIPHEADERS))
 checkheaders: $(filter-out $(SKIPHEADERS:.h=.ho),$(ALLHEADERS:.h=.ho))
 
--- gst-libs/ext/libav/configure~
+++ gst-libs/ext/libav/configure
@@ -1631,7 +1631,7 @@ nogas=":"
 nm_opts='-g'
 
 # machine
-arch_default=$(uname -m)
+arch_default=$(uname -p)
 cpu="generic"
 
 # OS
@@ -3260,7 +3260,7 @@ MANDIR=\$(DESTDIR)$mandir
 SRC_PATH="$source_path"
 SRC_PATH_BARE=$source_path
 CC_IDENT=$cc_ident
-ARCH=$arch
+LIBAV_ARCH=$arch
 CC=$cc
 AS=$as
 LD=$ld
--- gst-libs/ext/libav/libavcodec/Makefile~
+++ gst-libs/ext/libav/libavcodec/Makefile
@@ -651,14 +651,14 @@ OBJS-$(CONFIG_MLIB)                    +
 # well.
 OBJS-$(!CONFIG_SMALL)                  += inverse.o
 
--include $(SUBDIR)$(ARCH)/Makefile
+-include $(SUBDIR)$(LIBAV_ARCH)/Makefile
 
 SKIPHEADERS                            += %_tablegen.h                  \
                                           %_tables.h                    \
                                           aac_tablegen_decl.h           \
                                           fft-internal.h                \
                                           tableprint.h                  \
-                                          $(ARCH)/vp56_arith.h
+                                          $(LIBAV_ARCH)/vp56_arith.h
 SKIPHEADERS-$(CONFIG_DXVA2)            += dxva2.h dxva2_internal.h
 SKIPHEADERS-$(CONFIG_LIBDIRAC)         += libdirac.h
 SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER)  += libschroedinger.h
--- gst-libs/ext/libav/libavfilter/Makefile~
+++ gst-libs/ext/libav/libavfilter/Makefile
@@ -60,7 +60,7 @@ OBJS-$(CONFIG_NULLSRC_FILTER)           
 
 OBJS-$(CONFIG_NULLSINK_FILTER)               += vsink_nullsink.o
 
--include $(SUBDIR)$(ARCH)/Makefile
+-include $(SUBDIR)$(LIBAV_ARCH)/Makefile
 
 DIRS = x86
 
--- rename_gst0.diff ends here ---

--- rename_gst1.diff begins here ---
--- gst-libs/ext/libav/common.mak~
+++ gst-libs/ext/libav/common.mak
@@ -25,8 +25,8 @@ TOOLS     := $(TOOLS:%=tools/%$(EXESUF))
 
 DEP_LIBS := $(foreach NAME,$(FFLIBS),lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME))
 
-ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(ARCH)/*.h))
-SKIPHEADERS += $(ARCH_HEADERS:%=$(ARCH)/%) $(SKIPHEADERS-)
+ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(LIBAV_ARCH)/*.h))
+SKIPHEADERS += $(ARCH_HEADERS:%=$(LIBAV_ARCH)/%) $(SKIPHEADERS-)
 SKIPHEADERS := $(SKIPHEADERS:%=$(SUBDIR)%)
 checkheaders: $(filter-out $(SKIPHEADERS:.h=.ho),$(ALLHEADERS:.h=.ho))
 
--- gst-libs/ext/libav/configure~
+++ gst-libs/ext/libav/configure
@@ -1666,7 +1666,7 @@ nm_opts='-g'
 nogas=":"
 
 # machine
-arch_default=$(uname -m)
+arch_default=$(uname -p)
 cpu="generic"
 
 # OS
@@ -3288,7 +3288,7 @@ DATADIR=\$(DESTDIR)$datadir
 MANDIR=\$(DESTDIR)$mandir
 SRC_PATH=$source_path
 CC_IDENT=$cc_ident
-ARCH=$arch
+LIBAV_ARCH=$arch
 CC=$cc
 AS=$as
 LD=$ld
--- gst-libs/ext/libav/libavcodec/Makefile~
+++ gst-libs/ext/libav/libavcodec/Makefile
@@ -668,14 +668,14 @@ OBJS-$(CONFIG_MLIB)                    +
 # well.
 OBJS-$(!CONFIG_SMALL)                  += inverse.o
 
--include $(SRC_PATH)/$(SUBDIR)$(ARCH)/Makefile
+-include $(SRC_PATH)/$(SUBDIR)$(LIBAV_ARCH)/Makefile
 
 SKIPHEADERS                            += %_tablegen.h                  \
                                           %_tables.h                    \
                                           aac_tablegen_decl.h           \
                                           fft-internal.h                \
                                           tableprint.h                  \
-                                          $(ARCH)/vp56_arith.h
+                                          $(LIBAV_ARCH)/vp56_arith.h
 SKIPHEADERS-$(CONFIG_DXVA2)            += dxva2.h dxva2_internal.h
 SKIPHEADERS-$(CONFIG_LIBDIRAC)         += libdirac.h
 SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER)  += libschroedinger.h
--- gst-libs/ext/libav/libavfilter/Makefile~
+++ gst-libs/ext/libav/libavfilter/Makefile
@@ -69,7 +69,7 @@ OBJS-$(CONFIG_TESTSRC_FILTER)           
 
 OBJS-$(CONFIG_NULLSINK_FILTER)               += vsink_nullsink.o
 
--include $(SRC_PATH)/$(SUBDIR)$(ARCH)/Makefile
+-include $(SRC_PATH)/$(SUBDIR)$(LIBAV_ARCH)/Makefile
 
 DIRS = x86
 
--- rename_gst1.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309091358.r89DwLcY067292>