From 2bebd2a04ec828644f87505fa426758b6c74e10f Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 22 Jul 2008 09:17:36 +0000 Subject: mythtv: start beating it into a state where it will crosscompile --- packages/mythtv/mythtv.inc | 8 ++-- packages/mythtv/mythtv/.mtn2git_empty | 0 packages/mythtv/mythtv/configure.patch | 47 +++++++++++++++++++++ packages/mythtv/mythtv_0.21.bb | 68 +++++++++++++++++++++++++++++++ packages/mythtv/mythtv_svn.bb | 74 ++++++++++++++++++++++++++++++++++ 5 files changed, 192 insertions(+), 5 deletions(-) create mode 100644 packages/mythtv/mythtv/.mtn2git_empty create mode 100644 packages/mythtv/mythtv/configure.patch create mode 100644 packages/mythtv/mythtv_0.21.bb create mode 100644 packages/mythtv/mythtv_svn.bb (limited to 'packages/mythtv') diff --git a/packages/mythtv/mythtv.inc b/packages/mythtv/mythtv.inc index 4ceda5d421..3485cca682 100644 --- a/packages/mythtv/mythtv.inc +++ b/packages/mythtv/mythtv.inc @@ -2,15 +2,13 @@ DESCRIPTION = "A full featured personal video recorder system." HOMEPAGE = "http://www.mythtv.org" LICENSE = "GPL" SECTION = "x11/multimedia" -DEPENDS = "libxinerama lame libxv libxxf86vm libxvmc lirc qt-x11-free" +DEPENDS = "libxinerama libxv libxxf86vm libxvmc lirc qt-x11-free" RDEPENDS_${PN} = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats" SRC_URI = "http://www.mythtv.org/mc/mythtv-${PV}.tar.bz2" -inherit qmake qt3x11 +inherit qmake2 qt3x11 -# there is a -march=586 somewhere in the source tree -COMPATIBLE_HOST = 'i.86.*-linux' QMAKE_PROFILES = "mythtv.pro" @@ -22,7 +20,7 @@ def mythtv_arch(d): elif arch == "x86_64": arch = "x86" elif arch == "arm": - arch = "armv4l" + arch = "${BASE_PACKAGE_ARCH}" return arch MYTHTV_ARCH := "${@mythtv_arch(d)}" diff --git a/packages/mythtv/mythtv/.mtn2git_empty b/packages/mythtv/mythtv/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/mythtv/mythtv/configure.patch b/packages/mythtv/mythtv/configure.patch new file mode 100644 index 0000000000..0d5a8fc3c1 --- /dev/null +++ b/packages/mythtv/mythtv/configure.patch @@ -0,0 +1,47 @@ +--- /tmp/configure 2008-07-22 10:27:56.000000000 +0200 ++++ mythtv/configure 2008-07-22 10:54:24.000000000 +0200 +@@ -1714,7 +1714,7 @@ + + has_library() + { +- if test -f /etc/ld.so.conf ; then ++ if test -f /etc/ld.so.conf && disabled cross_compile ; then + LIBPATHS=`cat /etc/ld.so.conf | grep -v "#" | grep -v "include"` + else + LIBPATHS='' +@@ -1725,7 +1725,7 @@ + LIBPATHS="$LIBPATHS `echo $DYLD_LIBRARY_PATH | sed s/':'/' '/g` " + + # recurse down just one level, should be enough in most cases +- if test -f /etc/ld.so.conf ; then ++ if test -f /etc/ld.so.conf && disabled cross_compile ; then + INCL=`cat /etc/ld.so.conf | grep -v "#" | grep "^include"` + SRCH=`echo "$INCL" | sed '{ s/^include \//\//; s/^include /\/etc\//}'` + for x in $SRCH ; do +@@ -1734,7 +1734,7 @@ + done + fi + +- LIBPATHS="`echo $LIBPATHS /$libdir_name /usr/$libdir_name /usr/local/$libdir_name /usr/X11R6/$libdir_name | sed s/'\/ '/' '/g` " ++ enabled cross_compile || LIBPATHS="`echo $LIBPATHS /$libdir_name /usr/$libdir_name /usr/local/$libdir_name /usr/X11R6/$libdir_name | sed s/'\/ '/' '/g` " + + HAS_IT="no" + for LIBPATH in $LIBPATHS ; do +@@ -2254,7 +2254,7 @@ + EOF + + if $cc $CFLAGS $ECFLAGS -o $TMPE $TMPC 2>/dev/null ; then +-$TMPE && cpuclipspositive="yes" ++enabled cross_compile || $TMPE && cpuclipspositive="yes" + fi + + # test negative wrap +@@ -2269,7 +2269,7 @@ + EOF + + if $cc $CFLAGS $ECFLAGS -o $TMPE $TMPC 2>/dev/null ; then +-$TMPE && cpuclipsnegative="yes" ++enabled cross_compile || $TMPE && cpuclipsnegative="yes" + fi + + # test for distcc diff --git a/packages/mythtv/mythtv_0.21.bb b/packages/mythtv/mythtv_0.21.bb new file mode 100644 index 0000000000..a33c446813 --- /dev/null +++ b/packages/mythtv/mythtv_0.21.bb @@ -0,0 +1,68 @@ +require mythtv.inc + +PR = "r0" + +#SRC_URI += "file://configure.patch;patch=1 \ +# file://libmyth-libdir.patch;patch=1" + +# Seen on the mythtv web page: +# http://www.mythtv.org/mc/fix-mythweb-in-0.20.diff;patch=1 + +QMAKE_PROFILES = "mythtv.pro" + +mythlibs = "mythavutil mythavcodec mythavformat myth mythtv mythui mythfreemheg mythupnp mythlivemedia" +PACKAGES =+ "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data" + +FILES_mythtv-backend = "${bindir}/mythbackend ${bindir}/mythcommflag ${bindir}/mythfilldatabase ${bindir}/mythtranscode" +FILES_mythtv-frontend = "${bindir}/mythfrontend ${datadir}/mythtv/i18n/mythfrontend_* ${datadir}/mythtv/*.ttf" +RDEPENDS_mythtv-frontend = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats" +FILES_mythtv-bin = "${bindir}" +FILES_mythtv-filters = "${libdir}/mythtv/filters" +FILES_mythtv-data = "${datadir}" +RDEPENDS_${PN} = "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data" +ALLOW_EMPTY_${PN} = "1" + +PACKAGES_DYNAMIC = "mythtv-theme-*" + +python __anonymous () { + import bb + + mythlibs = bb.data.getVar('mythlibs', d).split() + pv = bb.data.expand(bb.data.getVar("PV", d), d) + + for m in mythlibs: + bb.data.setVar("FILES_lib%s%s" % (m, pv), "${libdir}/lib%s-%s.so.*" % (m, pv), d) + bb.data.setVar("FILES_lib%s%s-dev" % (m, pv), "${libdir}/lib%s-%s.*" % (m, pv), d) + + packages = " ".join(map(lambda x: "lib%s%s lib%s%s-dev" % (x, pv, x, pv), mythlibs) + bb.data.getVar("PACKAGES", d).split()) + + bb.data.setVar("PACKAGES", packages, d) +} +do_configure_prepend() { +# it's not autotools anyway, so we call ./configure directly + find . -name "Makefile"|xargs rm -f + ./configure --prefix=/usr \ + --mandir=/usr/man \ + --cpu=${MYTHTV_ARCH} \ + --disable-altivec \ + --enable-v4l \ + --enable-audio-oss \ + --enable-proc-opt \ + --enable-dvb \ + --cross-compile \ + --dvb-path=${STAGING_INCDIR} + + sed 's!PREFIX =.*!PREFIX = ${prefix}!;/INCLUDEPATH += $${PREFIX}\/include/d' < settings.pro > settings.pro.new + mv settings.pro.new settings.pro +} + +python populate_packages_prepend () { + new_packages = [] + + def the_hook(file, pkg, pattern, format, basename): + new_packages.append(pkg) + + do_split_packages(d, root=bb.data.expand('${datadir}/mythtv/themes', d), file_regex='(.*)', output_pattern='mythtv-theme-%s', description='MythTV theme %s', allow_dirs=True, hook=the_hook, prepend=True) + + bb.data.setVar("RDEPENDS_${PN}", "%s %s" % (bb.data.getVar("RDEPENDS_${PN}", d), " ".join(new_packages)), d) +} diff --git a/packages/mythtv/mythtv_svn.bb b/packages/mythtv/mythtv_svn.bb new file mode 100644 index 0000000000..2d7d7ac938 --- /dev/null +++ b/packages/mythtv/mythtv_svn.bb @@ -0,0 +1,74 @@ +require mythtv.inc + +DEFAULT_PREFERENCE = "-1" + +PV = "0.21+svnr${SRCREV}" +PR = "r0" + +SRCREV = "17880" +SRC_URI = "svn://svn.mythtv.org/svn/trunk;module=mythtv;proto=http" + +SRC_URI += "file://configure.patch;patch=1 \ + " + +S = "${WORKDIR}/mythtv" + +QMAKE_PROFILES = "mythtv.pro" + +mythlibs = "mythavutil mythavcodec mythavformat myth mythtv mythui mythfreemheg mythupnp mythlivemedia" +PACKAGES =+ "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data" + +FILES_mythtv-backend = "${bindir}/mythbackend ${bindir}/mythcommflag ${bindir}/mythfilldatabase ${bindir}/mythtranscode" +FILES_mythtv-frontend = "${bindir}/mythfrontend ${datadir}/mythtv/i18n/mythfrontend_* ${datadir}/mythtv/*.ttf" +RDEPENDS_mythtv-frontend = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats" +FILES_mythtv-bin = "${bindir}" +FILES_mythtv-filters = "${libdir}/mythtv/filters" +FILES_mythtv-data = "${datadir}" +RDEPENDS_${PN} = "mythtv-backend mythtv-frontend mythtv-bin mythtv-filters mythtv-data" +ALLOW_EMPTY_${PN} = "1" + +PACKAGES_DYNAMIC = "mythtv-theme-*" + +python __anonymous () { + import bb + + mythlibs = bb.data.getVar('mythlibs', d).split() + pv = bb.data.expand(bb.data.getVar("PV", d), d) + + for m in mythlibs: + bb.data.setVar("FILES_lib%s%s" % (m, pv), "${libdir}/lib%s-%s.so.*" % (m, pv), d) + bb.data.setVar("FILES_lib%s%s-dev" % (m, pv), "${libdir}/lib%s-%s.*" % (m, pv), d) + + packages = " ".join(map(lambda x: "lib%s%s lib%s%s-dev" % (x, pv, x, pv), mythlibs) + bb.data.getVar("PACKAGES", d).split()) + + bb.data.setVar("PACKAGES", packages, d) +} +do_configure_prepend() { +# it's not autotools anyway, so we call ./configure directly + find . -name "Makefile"|xargs rm -f + ./configure --prefix=/usr \ + --mandir=/usr/man \ + --cpu=${MYTHTV_ARCH} \ + --disable-altivec \ + --enable-v4l \ + --enable-audio-oss \ + --enable-proc-opt \ + --enable-dvb \ + --enable-libmp3lame \ + --cross-compile \ + --dvb-path=${STAGING_INCDIR} + + sed 's!PREFIX =.*!PREFIX = ${prefix}!;/INCLUDEPATH += $${PREFIX}\/include/d' < settings.pro > settings.pro.new + mv settings.pro.new settings.pro +} + +python populate_packages_prepend () { + new_packages = [] + + def the_hook(file, pkg, pattern, format, basename): + new_packages.append(pkg) + + do_split_packages(d, root=bb.data.expand('${datadir}/mythtv/themes', d), file_regex='(.*)', output_pattern='mythtv-theme-%s', description='MythTV theme %s', allow_dirs=True, hook=the_hook, prepend=True) + + bb.data.setVar("RDEPENDS_${PN}", "%s %s" % (bb.data.getVar("RDEPENDS_${PN}", d), " ".join(new_packages)), d) +} -- cgit v1.2.3 From 97356e8a1c274a2886622226e15937cf110c86f8 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 22 Jul 2008 10:42:25 +0000 Subject: mythtv: the configure does link tests first (which succeed) and then goes to check if the lib exists in LDPATH. This is bogus, so rig the path check. --- packages/mythtv/mythtv.inc | 6 +-- packages/mythtv/mythtv/configure.patch | 84 +++++++++++++++++++++++++++++++--- packages/mythtv/mythtv_svn.bb | 20 +++++++- 3 files changed, 99 insertions(+), 11 deletions(-) (limited to 'packages/mythtv') diff --git a/packages/mythtv/mythtv.inc b/packages/mythtv/mythtv.inc index 3485cca682..9b7a0a768e 100644 --- a/packages/mythtv/mythtv.inc +++ b/packages/mythtv/mythtv.inc @@ -2,12 +2,12 @@ DESCRIPTION = "A full featured personal video recorder system." HOMEPAGE = "http://www.mythtv.org" LICENSE = "GPL" SECTION = "x11/multimedia" -DEPENDS = "libxinerama libxv libxxf86vm libxvmc lirc qt-x11-free" -RDEPENDS_${PN} = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats" +DEPENDS = "jack alsa-lib lame libxinerama libxv libxxf86vm libxvmc lirc" +#RDEPENDS_${PN} = "qt-x11-plugins-sqldrivers qt-x11-plugins-imageformats" SRC_URI = "http://www.mythtv.org/mc/mythtv-${PV}.tar.bz2" -inherit qmake2 qt3x11 +inherit qmake2 qt4x11 QMAKE_PROFILES = "mythtv.pro" diff --git a/packages/mythtv/mythtv/configure.patch b/packages/mythtv/mythtv/configure.patch index 0d5a8fc3c1..feb5e0c00e 100644 --- a/packages/mythtv/mythtv/configure.patch +++ b/packages/mythtv/mythtv/configure.patch @@ -1,6 +1,31 @@ --- /tmp/configure 2008-07-22 10:27:56.000000000 +0200 -+++ mythtv/configure 2008-07-22 10:54:24.000000000 +0200 -@@ -1714,7 +1714,7 @@ ++++ mythtv/configure 2008-07-22 12:40:06.000000000 +0200 +@@ -476,12 +476,13 @@ + } + + check_cmd(){ +- log "$@" ++ echo "Checking $@" ++ log "$@" + "$@" >>$logfile 2>&1 + } + + check_cc(){ +- log check_cc "$@" ++ log check_cc "$@" + cat >$TMPC + log_file $TMPC + check_cmd $cc $CFLAGS $ECFLAGS $OPTFLAGS "$@" -c -o $TMPO $TMPC +@@ -1214,7 +1215,7 @@ + # build settings + SHFLAGS='-shared -Wl,-soname,$@' + VHOOKSHFLAGS='$(SHFLAGS)' +-LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' ++#LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil' + FFSERVERLDFLAGS=-Wl,-E + LDCONFIG="ldconfig" + LIBPREF="lib" +@@ -1714,7 +1715,7 @@ has_library() { @@ -9,7 +34,7 @@ LIBPATHS=`cat /etc/ld.so.conf | grep -v "#" | grep -v "include"` else LIBPATHS='' -@@ -1725,7 +1725,7 @@ +@@ -1725,7 +1726,7 @@ LIBPATHS="$LIBPATHS `echo $DYLD_LIBRARY_PATH | sed s/':'/' '/g` " # recurse down just one level, should be enough in most cases @@ -18,16 +43,61 @@ INCL=`cat /etc/ld.so.conf | grep -v "#" | grep "^include"` SRCH=`echo "$INCL" | sed '{ s/^include \//\//; s/^include /\/etc\//}'` for x in $SRCH ; do -@@ -1734,7 +1734,7 @@ +@@ -1734,29 +1735,31 @@ done fi - LIBPATHS="`echo $LIBPATHS /$libdir_name /usr/$libdir_name /usr/local/$libdir_name /usr/X11R6/$libdir_name | sed s/'\/ '/' '/g` " + enabled cross_compile || LIBPATHS="`echo $LIBPATHS /$libdir_name /usr/$libdir_name /usr/local/$libdir_name /usr/X11R6/$libdir_name | sed s/'\/ '/' '/g` " - HAS_IT="no" +- HAS_IT="no" ++ HAS_IT="yes" for LIBPATH in $LIBPATHS ; do -@@ -2254,7 +2254,7 @@ + if test x`ls $LIBPATH/$1* 2> /dev/null | head -n 1` != x"" ; then + HAS_IT="yes" + fi + done ++ echo "$1: $HAS_IT" + expr $HAS_IT : "yes" > /dev/null + } + + has_header() + { +- HPATHS="/usr/local/include /usr/include /usr/include/g++-v3 /usr/X11R6/include" ++ enabled cross_compile || HPATHS="/usr/local/include /usr/include /usr/include/g++-v3 /usr/X11R6/include" + INCL=`echo $DYLD_LIBRARY_PATH $LD_LIBRARY_PATH | sed s/':'/' '/g` + HPATHS="$HPATHS "$(echo $INCL | sed "s/$libdir_name/include/g") + +- HAS_IT="no" ++ HAS_IT="yes" + for HPATH in $HPATHS ; do + if test x`ls $HPATH/$1* 2> /dev/null | head -n 1` != x"" ; then + HAS_IT="yes" + fi + done ++ echo "$1: $HAS_IT" + expr $HAS_IT : "yes" > /dev/null + } + +@@ -1863,13 +1866,15 @@ + if test x"$cmov" = x"default"; then + disable cmov + if enabled cpu_override; then +- is_x86_cmov_cpu "$cpu" && enable cmov ++ disabled cross_compile && is_x86_cmov_cpu "$cpu" && enable cmov + disabled cmov || is_x86_slow_cmov_cpu "$cpu" || enable fast_cmov + elif expr "$processor_flags" : ".*cmov" > /dev/null ; then +- enable cmov ++ disabled cross_compile && enable cmov + fi + fi + ++enabled cross_compile && disable cmov ++ + # use different default ARCHFLAGS for CPU missing cmov (Via C3 ...) + if test x"$arch" = x"x86_32" && disabled cmov && disabled cpu_override; then + ARCHFLAGS="-march=i586" +@@ -2254,7 +2259,7 @@ EOF if $cc $CFLAGS $ECFLAGS -o $TMPE $TMPC 2>/dev/null ; then @@ -36,7 +106,7 @@ fi # test negative wrap -@@ -2269,7 +2269,7 @@ +@@ -2269,7 +2274,7 @@ EOF if $cc $CFLAGS $ECFLAGS -o $TMPE $TMPC 2>/dev/null ; then diff --git a/packages/mythtv/mythtv_svn.bb b/packages/mythtv/mythtv_svn.bb index 2d7d7ac938..303462e69f 100644 --- a/packages/mythtv/mythtv_svn.bb +++ b/packages/mythtv/mythtv_svn.bb @@ -43,6 +43,22 @@ python __anonymous () { bb.data.setVar("PACKAGES", packages, d) } + +EXTRA_OECONF_armv5te = " --enable-armv5te " +EXTRA_OECONF_armv6 = " --enable-armv6 " +EXTRA_OECONF_armv7a = --enable-armv6" + +#build with support for the iwmmxt instruction and pxa270fb overlay support (pxa270 and up) +#not every iwmmxt machine has the lcd connected to pxafb, but building the module doesn't hurt +MY_ARCH := "${PACKAGE_ARCH}" +PACKAGE_ARCH = "${@base_contains('MACHINE_FEATURES', 'iwmmxt', 'iwmmxt', '${MY_ARCH}',d)}" + +MY_TARGET_CC_ARCH := "${TARGET_CC_ARCH}" +TARGET_CC_ARCH = "${@base_contains('MACHINE_FEATURES', 'iwmmxt', '-march=iwmmxt -mtune=iwmmxt', '${MY_TARGET_CC_ARCH}',d)}" + +EXTRA_OECONF_append = " ${@base_contains('MACHINE_FEATURES', 'iwmmxt', '--enable-pxa --enable-iwmmxt', '',d)} " + + do_configure_prepend() { # it's not autotools anyway, so we call ./configure directly find . -name "Makefile"|xargs rm -f @@ -50,13 +66,15 @@ do_configure_prepend() { --mandir=/usr/man \ --cpu=${MYTHTV_ARCH} \ --disable-altivec \ + --disable-strip \ --enable-v4l \ --enable-audio-oss \ --enable-proc-opt \ --enable-dvb \ --enable-libmp3lame \ --cross-compile \ - --dvb-path=${STAGING_INCDIR} + --dvb-path=${STAGING_INCDIR} \ + ${EXTRA_OECONF} sed 's!PREFIX =.*!PREFIX = ${prefix}!;/INCLUDEPATH += $${PREFIX}\/include/d' < settings.pro > settings.pro.new mv settings.pro.new settings.pro -- cgit v1.2.3 From 923e632880d1383c858184f0ca2a509d7196595a Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 22 Jul 2008 10:51:46 +0000 Subject: mythtv: don't use 'uname' when cross compiling --- packages/mythtv/mythtv/configure.patch | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'packages/mythtv') diff --git a/packages/mythtv/mythtv/configure.patch b/packages/mythtv/mythtv/configure.patch index feb5e0c00e..16f5076880 100644 --- a/packages/mythtv/mythtv/configure.patch +++ b/packages/mythtv/mythtv/configure.patch @@ -1,5 +1,5 @@ --- /tmp/configure 2008-07-22 10:27:56.000000000 +0200 -+++ mythtv/configure 2008-07-22 12:40:06.000000000 +0200 ++++ mythtv/configure 2008-07-22 12:50:43.000000000 +0200 @@ -476,12 +476,13 @@ } @@ -16,6 +16,20 @@ cat >$TMPC log_file $TMPC check_cmd $cc $CFLAGS $ECFLAGS $OPTFLAGS "$@" -c -o $TMPO $TMPC +@@ -1117,11 +1118,11 @@ + fi + + # machine +-arch=`uname -m` ++disabled cross_compile && arch=`uname -m` + arch_raw="$arch" + cpu="generic" + cpu_override="no" +-processor=`uname -p 2>/dev/null` ++disabled cross_compile && processor=`uname -p 2>/dev/null` + processor_flags="" + tune="generic" + @@ -1214,7 +1215,7 @@ # build settings SHFLAGS='-shared -Wl,-soname,$@' -- cgit v1.2.3 From 7359109538d1b981506315d8cea711f74ef0c9d6 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 22 Jul 2008 11:36:37 +0000 Subject: mythtv: pass --arch as well as --cpu --- packages/mythtv/mythtv_svn.bb | 1 + 1 file changed, 1 insertion(+) (limited to 'packages/mythtv') diff --git a/packages/mythtv/mythtv_svn.bb b/packages/mythtv/mythtv_svn.bb index 303462e69f..24a8b3d220 100644 --- a/packages/mythtv/mythtv_svn.bb +++ b/packages/mythtv/mythtv_svn.bb @@ -65,6 +65,7 @@ do_configure_prepend() { ./configure --prefix=/usr \ --mandir=/usr/man \ --cpu=${MYTHTV_ARCH} \ + --arch=${MYTHTV_ARCH} \ --disable-altivec \ --disable-strip \ --enable-v4l \ -- cgit v1.2.3