Merge remote branch 'upstream/openelec-eden' into Fusion64

This commit is contained in:
Lionel Widdifield 2011-09-11 21:04:03 -07:00
commit 7afe5dd773
57 changed files with 3929 additions and 1027 deletions

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="lzo"
PKG_VERSION="2.04"
PKG_VERSION="2.06"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -1,377 +0,0 @@
The lzo tarball only contains an aclocal.m4, which is the result from
running aclocal. Unfortunately, it lacks the acinclude.m4 file which
would allow us to do an autoreconf of the package. Therefore, this
patch extracts from aclocal.m4 the parts that are specific to this lzo
package, and put them into an acinclude.m4 so that autoreconf on this
package will work.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
acinclude.m4 | 360 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 360 insertions(+)
Index: lzo-2.03/acinclude.m4
===================================================================
--- /dev/null
+++ lzo-2.03/acinclude.m4
@@ -0,0 +1,360 @@
+# /***********************************************************************
+# // standard ACC macros
+# ************************************************************************/
+
+AC_DEFUN([mfx_ACC_CHECK_ENDIAN], [
+AC_C_BIGENDIAN([AC_DEFINE(ACC_ABI_BIG_ENDIAN,1,[Define to 1 if your machine is big endian.])],[AC_DEFINE(ACC_ABI_LITTLE_ENDIAN,1,[Define to 1 if your machine is little endian.])])
+])#
+
+AC_DEFUN([mfx_ACC_CHECK_HEADERS], [
+AC_HEADER_TIME
+AC_CHECK_HEADERS([assert.h ctype.h dirent.h errno.h fcntl.h float.h limits.h malloc.h memory.h setjmp.h signal.h stdarg.h stddef.h stdint.h stdio.h stdlib.h string.h strings.h time.h unistd.h utime.h sys/mman.h sys/resource.h sys/stat.h sys/time.h sys/types.h sys/wait.h])
+])#
+
+AC_DEFUN([mfx_ACC_CHECK_FUNCS], [
+AC_CHECK_FUNCS(access alloca atexit atoi atol chmod chown clock_getcpuclockid clock_getres clock_gettime ctime difftime fstat getenv getpagesize getrusage gettimeofday gmtime isatty localtime longjmp lstat memcmp memcpy memmove memset mkdir mktime mmap mprotect munmap qsort raise rmdir setjmp signal snprintf strcasecmp strchr strdup strerror strftime stricmp strncasecmp strnicmp strrchr strstr time umask utime vsnprintf)
+])#
+
+
+AC_DEFUN([mfx_ACC_CHECK_SIZEOF], [
+AC_CHECK_SIZEOF(short)
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(long)
+
+AC_CHECK_SIZEOF(long long)
+AC_CHECK_SIZEOF(__int16)
+AC_CHECK_SIZEOF(__int32)
+AC_CHECK_SIZEOF(__int64)
+
+AC_CHECK_SIZEOF(void *)
+AC_CHECK_SIZEOF(size_t)
+AC_CHECK_SIZEOF(ptrdiff_t)
+])#
+
+
+# /***********************************************************************
+# // Check for ACC_conformance
+# ************************************************************************/
+
+AC_DEFUN([mfx_ACC_ACCCHK], [
+mfx_tmp=$1
+mfx_save_CPPFLAGS=$CPPFLAGS
+dnl in Makefile.in $(INCLUDES) will be before $(CPPFLAGS), so we mimic this here
+test "X$mfx_tmp" = "X" || CPPFLAGS="$mfx_tmp $CPPFLAGS"
+
+AC_MSG_CHECKING([whether your compiler passes the ACC conformance test])
+
+AC_LANG_CONFTEST([AC_LANG_PROGRAM(
+[[#define ACC_CONFIG_NO_HEADER 1
+#include "acc/acc.h"
+#include "acc/acc_incd.h"
+#undef ACCCHK_ASSERT
+#define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT_HEADER(expr)
+#include "acc/acc_chk.ch"
+#undef ACCCHK_ASSERT
+static void test_acc_compile_time_assert(void) {
+#define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT(expr)
+#include "acc/acc_chk.ch"
+#undef ACCCHK_ASSERT
+}
+#undef NDEBUG
+#include <assert.h>
+static int test_acc_run_time_assert(int r) {
+#define ACCCHK_ASSERT(expr) assert(expr);
+#include "acc/acc_chk.ch"
+#undef ACCCHK_ASSERT
+return r;
+}
+]], [[
+test_acc_compile_time_assert();
+if (test_acc_run_time_assert(1) != 1) return 1;
+]]
+)])
+
+mfx_tmp=FAILED
+_AC_COMPILE_IFELSE([], [mfx_tmp=yes])
+rm -f conftest.$ac_ext conftest.$ac_objext
+
+CPPFLAGS=$mfx_save_CPPFLAGS
+
+AC_MSG_RESULT([$mfx_tmp])
+case x$mfx_tmp in
+ xpassed | xyes) ;;
+ *)
+ AC_MSG_NOTICE([])
+ AC_MSG_NOTICE([Your compiler failed the ACC conformance test - for details see ])
+ AC_MSG_NOTICE([`config.log'. Please check that log file and consider sending])
+ AC_MSG_NOTICE([a patch or bug-report to <${PACKAGE_BUGREPORT}>.])
+ AC_MSG_NOTICE([Thanks for your support.])
+ AC_MSG_NOTICE([])
+ AC_MSG_ERROR([ACC conformance test failed. Stop.])
+dnl AS_EXIT
+ ;;
+esac
+])# mfx_ACC_ACCCHK
+
+
+# /***********************************************************************
+# // Check for ACC_conformance
+# ************************************************************************/
+
+AC_DEFUN([mfx_MINIACC_ACCCHK], [
+mfx_tmp=$1
+mfx_save_CPPFLAGS=$CPPFLAGS
+dnl in Makefile.in $(INCLUDES) will be before $(CPPFLAGS), so we mimic this here
+test "X$mfx_tmp" = "X" || CPPFLAGS="$mfx_tmp $CPPFLAGS"
+
+AC_MSG_CHECKING([whether your compiler passes the ACC conformance test])
+
+AC_LANG_CONFTEST([AC_LANG_PROGRAM(
+[[#define ACC_CONFIG_NO_HEADER 1
+#define ACC_WANT_ACC_INCD_H 1
+#include $2
+
+#define ACC_WANT_ACC_CHK_CH 1
+#undef ACCCHK_ASSERT
+#define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT_HEADER(expr)
+#include $2
+
+#define ACC_WANT_ACC_CHK_CH 1
+#undef ACCCHK_ASSERT
+#define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT(expr)
+static void test_acc_compile_time_assert(void) {
+#include $2
+}
+
+#undef NDEBUG
+#include <assert.h>
+#define ACC_WANT_ACC_CHK_CH 1
+#undef ACCCHK_ASSERT
+#define ACCCHK_ASSERT(expr) assert(expr);
+static int test_acc_run_time_assert(int r) {
+#include $2
+return r;
+}
+]], [[
+test_acc_compile_time_assert();
+if (test_acc_run_time_assert(1) != 1) return 1;
+]]
+)])
+
+mfx_tmp=FAILED
+_AC_COMPILE_IFELSE([], [mfx_tmp=yes])
+rm -f conftest.$ac_ext conftest.$ac_objext
+
+CPPFLAGS=$mfx_save_CPPFLAGS
+
+AC_MSG_RESULT([$mfx_tmp])
+case x$mfx_tmp in
+ xpassed | xyes) ;;
+ *)
+ AC_MSG_NOTICE([])
+ AC_MSG_NOTICE([Your compiler failed the ACC conformance test - for details see ])
+ AC_MSG_NOTICE([`config.log'. Please check that log file and consider sending])
+ AC_MSG_NOTICE([a patch or bug-report to <${PACKAGE_BUGREPORT}>.])
+ AC_MSG_NOTICE([Thanks for your support.])
+ AC_MSG_NOTICE([])
+ AC_MSG_ERROR([ACC conformance test failed. Stop.])
+dnl AS_EXIT
+ ;;
+esac
+])# mfx_MINIACC_ACCCHK
+
+
+
+# serial 1
+
+AC_DEFUN([mfx_PROG_CPPFLAGS], [
+AC_MSG_CHECKING([whether the C preprocessor needs special flags])
+
+AC_LANG_CONFTEST([AC_LANG_PROGRAM(
+[[#include <limits.h>
+#if (32767 >= 4294967295ul) || (65535u >= 4294967295ul)
+# include "your C preprocessor is broken 1"
+#elif (0xffffu == 0xfffffffful)
+# include "your C preprocessor is broken 2"
+#elif (32767 >= ULONG_MAX) || (65535u >= ULONG_MAX)
+# include "your C preprocessor is broken 3"
+#endif
+]], [[ ]]
+)])
+
+mfx_save_CPPFLAGS=$CPPFLAGS
+mfx_tmp=ERROR
+for mfx_arg in "" -no-cpp-precomp
+do
+ CPPFLAGS="$mfx_arg $mfx_save_CPPFLAGS"
+ _AC_COMPILE_IFELSE([],
+[mfx_tmp=$mfx_arg
+break])
+done
+CPPFLAGS=$mfx_save_CPPFLAGS
+rm -f conftest.$ac_ext conftest.$ac_objext
+case x$mfx_tmp in
+ x)
+ AC_MSG_RESULT([none needed]) ;;
+ xERROR)
+ AC_MSG_RESULT([ERROR])
+ AC_MSG_ERROR([your C preprocessor is broken - for details see config.log])
+ ;;
+ *)
+ AC_MSG_RESULT([$mfx_tmp])
+ CPPFLAGS="$mfx_tmp $CPPFLAGS"
+ ;;
+esac
+])# mfx_PROG_CPPFLAGS
+
+# serial 3
+
+AC_DEFUN([mfx_CHECK_HEADER_SANE_LIMITS_H], [
+AC_CACHE_CHECK([whether limits.h is sane],
+mfx_cv_header_sane_limits_h,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <limits.h>
+#if (32767 >= 4294967295ul) || (65535u >= 4294967295ul)
+# if defined(__APPLE__) && defined(__GNUC__)
+# error "your preprocessor is broken - use compiler option -no-cpp-precomp"
+# else
+# include "your preprocessor is broken"
+# endif
+#endif
+#define MFX_0xffff 0xffff
+#define MFX_0xffffffffL 4294967295ul
+#if !defined(CHAR_BIT) || (CHAR_BIT != 8)
+# include "error CHAR_BIT"
+#endif
+#if !defined(UCHAR_MAX)
+# include "error UCHAR_MAX 1"
+#endif
+#if !defined(USHRT_MAX)
+# include "error USHRT_MAX 1"
+#endif
+#if !defined(UINT_MAX)
+# include "error UINT_MAX 1"
+#endif
+#if !defined(ULONG_MAX)
+# include "error ULONG_MAX 1"
+#endif
+#if !defined(SHRT_MAX)
+# include "error SHRT_MAX 1"
+#endif
+#if !defined(INT_MAX)
+# include "error INT_MAX 1"
+#endif
+#if !defined(LONG_MAX)
+# include "error LONG_MAX 1"
+#endif
+#if (UCHAR_MAX < 1)
+# include "error UCHAR_MAX 2"
+#endif
+#if (USHRT_MAX < 1)
+# include "error USHRT_MAX 2"
+#endif
+#if (UINT_MAX < 1)
+# include "error UINT_MAX 2"
+#endif
+#if (ULONG_MAX < 1)
+# include "error ULONG_MAX 2"
+#endif
+#if (UCHAR_MAX < 0xff)
+# include "error UCHAR_MAX 3"
+#endif
+#if (USHRT_MAX < MFX_0xffff)
+# include "error USHRT_MAX 3"
+#endif
+#if (UINT_MAX < MFX_0xffff)
+# include "error UINT_MAX 3"
+#endif
+#if (ULONG_MAX < MFX_0xffffffffL)
+# include "error ULONG_MAX 3"
+#endif
+#if (USHRT_MAX > UINT_MAX)
+# include "error USHRT_MAX vs UINT_MAX"
+#endif
+#if (UINT_MAX > ULONG_MAX)
+# include "error UINT_MAX vs ULONG_MAX"
+#endif
+]], [[
+#if (USHRT_MAX == MFX_0xffff)
+{ typedef char a_short2a[1 - 2 * !(sizeof(short) == 2)]; }
+#elif (USHRT_MAX >= MFX_0xffff)
+{ typedef char a_short2b[1 - 2 * !(sizeof(short) > 2)]; }
+#endif
+#if (UINT_MAX == MFX_0xffff)
+{ typedef char a_int2a[1 - 2 * !(sizeof(int) == 2)]; }
+#elif (UINT_MAX >= MFX_0xffff)
+{ typedef char a_int2b[1 - 2 * !(sizeof(int) > 2)]; }
+#endif
+#if (ULONG_MAX == MFX_0xffff)
+{ typedef char a_long2a[1 - 2 * !(sizeof(long) == 2)]; }
+#elif (ULONG_MAX >= MFX_0xffff)
+{ typedef char a_long2b[1 - 2 * !(sizeof(long) > 2)]; }
+#endif
+#if !defined(_CRAY1) /* CRAY PVP systems */
+#if (USHRT_MAX == MFX_0xffffffffL)
+{ typedef char a_short4a[1 - 2 * !(sizeof(short) == 4)]; }
+#elif (USHRT_MAX >= MFX_0xffffffffL)
+{ typedef char a_short4b[1 - 2 * !(sizeof(short) > 4)]; }
+#endif
+#endif /* _CRAY1 */
+#if (UINT_MAX == MFX_0xffffffffL)
+{ typedef char a_int4a[1 - 2 * !(sizeof(int) == 4)]; }
+#elif (UINT_MAX >= MFX_0xffffffffL)
+{ typedef char a_int4b[1 - 2 * !(sizeof(int) > 4)]; }
+#endif
+#if (ULONG_MAX == MFX_0xffffffffL)
+{ typedef char a_long4a[1 - 2 * !(sizeof(long) == 4)]; }
+#elif (ULONG_MAX >= MFX_0xffffffffL)
+{ typedef char a_long4b[1 - 2 * !(sizeof(long) > 4)]; }
+#endif
+]])],
+[mfx_cv_header_sane_limits_h=yes],
+[mfx_cv_header_sane_limits_h=no])])
+])
+
+# /***********************************************************************
+# // standard
+# ************************************************************************/
+
+AC_DEFUN([mfx_LZO_CHECK_ENDIAN], [
+AC_C_BIGENDIAN([AC_DEFINE(LZO_ABI_BIG_ENDIAN,1,[Define to 1 if your machine is big endian.])],[AC_DEFINE(LZO_ABI_LITTLE_ENDIAN,1,[Define to 1 if your machine is little endian.])])
+])#
+
+
+# /***********************************************************************
+# //
+# ************************************************************************/
+
+dnl more types which are not yet covered by ACC
+
+AC_DEFUN([mfx_CHECK_SIZEOF], [
+AC_CHECK_SIZEOF(__int32)
+AC_CHECK_SIZEOF(intmax_t)
+AC_CHECK_SIZEOF(uintmax_t)
+AC_CHECK_SIZEOF(intptr_t)
+AC_CHECK_SIZEOF(uintptr_t)
+
+AC_CHECK_SIZEOF(float)
+AC_CHECK_SIZEOF(double)
+AC_CHECK_SIZEOF(long double)
+
+AC_CHECK_SIZEOF(dev_t)
+AC_CHECK_SIZEOF(fpos_t)
+AC_CHECK_SIZEOF(mode_t)
+AC_CHECK_SIZEOF(off_t)
+AC_CHECK_SIZEOF(ssize_t)
+AC_CHECK_SIZEOF(time_t)
+])#
+
+
+
+AC_DEFUN([mfx_CHECK_LIB_WINMM], [
+if test "X$GCC" = Xyes; then
+case $host_os in
+cygwin* | mingw* | pw32*)
+ test "X$LIBS" != "X" && LIBS="$LIBS "
+ LIBS="${LIBS}-lwinmm" ;;
+*)
+ ;;
+esac
+fi
+])#

View File

@ -1,24 +0,0 @@
Makefile.am is not allowed to override CFLAGS/CPPFLAGS, it must use
AM_CFLAGS and AM_CPPFLAGS. This is needed in order for autoreconf to
work on this package.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
src/Makefile.am | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: lzo-2.03/src/Makefile.am
===================================================================
--- lzo-2.03.orig/src/Makefile.am
+++ lzo-2.03/src/Makefile.am
@@ -7,8 +7,8 @@
SUFFIXES = .S
INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)
-CPPFLAGS = $(LZO_CPPFLAGS) $(configure_CPPFLAGS) $(LZO_EXTRA_CPPFLAGS)
-CFLAGS = $(LZO_CFLAGS) $(configure_CFLAGS) $(LZO_EXTRA_CFLAGS)
+AM_CPPFLAGS = $(LZO_CPPFLAGS) $(configure_CPPFLAGS) $(LZO_EXTRA_CPPFLAGS)
+AM_CFLAGS = $(LZO_CFLAGS) $(configure_CFLAGS) $(LZO_EXTRA_CFLAGS)
lib_LTLIBRARIES = liblzo2.la

36
packages/devel/libtirpc/build Executable file
View File

@ -0,0 +1,36 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
. config/options $1
cd $PKG_BUILD
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--prefix=/usr \
--sysconfdir=/etc \
--disable-static \
--enable-shared \
--disable-gss \
--with-gnu-ld
make
$MAKEINSTALL

View File

@ -1,3 +1,5 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
@ -18,27 +20,11 @@
# http://www.gnu.org/copyleft/gpl.html
################################################################################
#
# setup XBMC addons
#
# runlevels: openelec, textmode
. config/options $1
case $RUNLEVEL in
boot)
progress "setup XBMC addons"
# hack: add addons to $PATH
for i in `find /storage/.xbmc/addons/* -name bin -type d`; do
PATH="$PATH:$i"
done
export PATH
# hack: make addon-bins executable
chmod +x /storage/.xbmc/addons/*/bin/* > /dev/null 2>&1
;;
poweroff|reboot)
;;
esac
mkdir -p $INSTALL/usr/lib
cp $PKG_BUILD/src/.libs/*.so* $INSTALL/usr/lib
mkdir -p $INSTALL/etc
cp $PKG_BUILD/doc/etc_netconfig $INSTALL/etc/netconfig

View File

@ -0,0 +1,36 @@
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2011 Stephan Raue (stephan@openelec.tv)
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
PKG_NAME="libtirpc"
PKG_VERSION="0.2.2"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://sourceforge.net/projects/libtirpc/"
PKG_URL="https://downloads.sourceforge.net/project/libtirpc/libtirpc/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"
PKG_SECTION="network"
PKG_SHORTDESC="libtirpc: Transport Independent RPC Library"
PKG_LONGDESC="Libtirpc is a port of Suns Transport-Independent RPC library to Linux. It's being developed by the Bull GNU/Linux NFSv4 project."
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"

View File

@ -200,7 +200,6 @@ NFS_OVERLAY="192.168.1.1:/var/lib/overlay"
mount_part "$boot" "/flash" "ro,noatime"
show_splash
<<<<<<< HEAD
if [ -n "$disk" ]; then
mount_part "$disk" "/storage" "rw,noatime"
@ -240,12 +239,6 @@ NFS_OVERLAY="192.168.1.1:/var/lib/overlay"
fi
# unmount all other filesystems
=======
# move /flash to /sysroot
/bin/busybox mount --move /flash /sysroot/flash
# unmount all other filesystems
>>>>>>> upstream/master
/bin/busybox umount /dev
/bin/busybox umount /proc
/bin/busybox umount /sys

View File

@ -24,7 +24,8 @@ PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kernel.org"
PKG_URL="http://www.kernel.org/pub/linux/kernel/v3.0/testing/$PKG_NAME-$PKG_VERSION.tar.bz2"
#PKG_URL="http://www.kernel.org/pub/linux/kernel/v3.0/testing/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="ftp://ftp.pgpi.com/linux/kernel/pub/linux/kernel/v3.0/testing/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS="busybox linux-drivers linux-firmware pciutils"
PKG_BUILD_DEPENDS="toolchain busybox-hosttools xz cpio pciutils"
PKG_PRIORITY="optional"

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="xbmc-theme-Confluence"
PKG_VERSION="83e27a2"
PKG_VERSION="85ec523"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"

View File

@ -29,9 +29,9 @@ else
fi
if [ "$XBMC_VIS_PROJECTM" = yes ]; then
XBMC_PROJECTM="--enable-xbmcprojectm"
XBMC_PROJECTM="--enable-projectm"
else
XBMC_PROJECTM="--disable-xbmcprojectm"
XBMC_PROJECTM="--disable-projectm"
fi
if [ "$PULSEAUDIO_SUPPORT" = yes ]; then
@ -64,6 +64,12 @@ else
XBMC_NFS="--disable-nfs"
fi
if [ "$AFP_SUPPORT" = yes ]; then
XBMC_AFP="--enable-afpclient"
else
XBMC_AFP="--disable-afpclient"
fi
if [ "$WEBSERVER" = yes ]; then
XBMC_WEBSERVER="--enable-webserver"
else
@ -170,6 +176,7 @@ cd $PKG_BUILD
$XBMC_PULSEAUDIO \
--enable-rtmp \
$XBMC_NFS \
$XBMC_AFP \
--enable-ffmpeg-libvorbis \
--enable-lame \
$XBMC_DVDCSS \

View File

@ -35,6 +35,9 @@ case $RUNLEVEL in
export SDL_MOUSE_RELATIVE=0
fi
# hack: make addon-bins executable
chmod +x /storage/.xbmc/addons/*/bin/* > /dev/null 2>&1
# starting autostart script (will be removed later again, dont use it!!!)
AUTOSTART="/storage/.config/autostart.sh"
if [ -f $AUTOSTART ]; then

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="xbmc"
PKG_VERSION="83e27a2"
PKG_VERSION="85ec523"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
@ -67,6 +67,11 @@ if [ "$NFS_SUPPORT" = yes ]; then
PKG_DEPENDS="$PKG_DEPENDS libnfs"
fi
if [ "$AFP_SUPPORT" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS afpfs-ng"
PKG_DEPENDS="$PKG_DEPENDS afpfs-ng"
fi
if [ "$WEBSERVER" = yes ]; then
PKG_BUILD_DEPENDS="$PKG_BUILD_DEPENDS libmicrohttpd"
PKG_DEPENDS="$PKG_DEPENDS libmicrohttpd"

View File

@ -1,448 +0,0 @@
diff -Naur xbmc-10.1-Dharma/xbmc/lib/libPython/xbmcmodule/Makefile xbmc-10.1-Dharma.patch/xbmc/lib/libPython/xbmcmodule/Makefile
--- xbmc-10.1-Dharma/xbmc/lib/libPython/xbmcmodule/Makefile 2011-03-08 02:49:14.000000000 +0100
+++ xbmc-10.1-Dharma.patch/xbmc/lib/libPython/xbmcmodule/Makefile 2011-09-06 22:59:02.915548511 +0200
@@ -1,8 +1,9 @@
INCLUDES=-I../../../.. -I. -I../../../ -I../../../linux -I../../../../guilib -I../../../utils -I../../../cores -I../../../../lib/jsoncpp/jsoncpp/include
-SRCS=action.cpp controlbutton.cpp controlcheckmark.cpp control.cpp controlfadelabel.cpp controlimage.cpp controllabel.cpp controllist.cpp controlprogress.cpp controlslider.cpp controlspin.cpp controltextbox.cpp dialog.cpp GUIPythonWindow.cpp GUIPythonWindowDialog.cpp GUIPythonWindowXML.cpp GUIPythonWindowXMLDialog.cpp infotagmusic.cpp infotagvideo.cpp keyboard.cpp listitem.cpp player.cpp pyplaylist.cpp PythonPlayer.cpp pyutil.cpp window.cpp winxml.cpp winxmldialog.cpp xbmcguimodule.cpp xbmcmodule.cpp controlgroup.cpp xbmcplugin.cpp controlradiobutton.cpp PythonAddon.cpp xbmcaddonmodule.cpp
+SRCS=action.cpp controlbutton.cpp controlcheckmark.cpp control.cpp controlfadelabel.cpp controlimage.cpp controllabel.cpp controllist.cpp controlprogress.cpp controlslider.cpp controlspin.cpp controltextbox.cpp dialog.cpp GUIPythonWindow.cpp GUIPythonWindowDialog.cpp GUIPythonWindowXML.cpp GUIPythonWindowXMLDialog.cpp infotagmusic.cpp infotagvideo.cpp keyboard.cpp listitem.cpp player.cpp pyplaylist.cpp PythonPlayer.cpp pyutil.cpp window.cpp winxml.cpp winxmldialog.cpp xbmcguimodule.cpp xbmcmodule.cpp controlgroup.cpp xbmcplugin.cpp controlradiobutton.cpp PythonAddon.cpp xbmcaddonmodule.cpp xbmcvfsmodule.cpp
LIB=xbmcmodule.a
include ../../../../Makefile.include
-include $(patsubst %.cpp,%.P,$(patsubst %.c,%.P,$(SRCS)))
+
diff -Naur xbmc-10.1-Dharma/xbmc/lib/libPython/xbmcmodule/xbmcmodule.cpp xbmc-10.1-Dharma.patch/xbmc/lib/libPython/xbmcmodule/xbmcmodule.cpp
--- xbmc-10.1-Dharma/xbmc/lib/libPython/xbmcmodule/xbmcmodule.cpp 2011-03-08 02:49:14.000000000 +0100
+++ xbmc-10.1-Dharma.patch/xbmc/lib/libPython/xbmcmodule/xbmcmodule.cpp 2011-09-06 22:59:02.916548524 +0200
@@ -64,6 +64,7 @@
#include "SectionLoader.h"
#include "Settings.h"
#include "LocalizeStrings.h"
+#include "utils/FileUtils.h"
// include for constants
#include "pyutil.h"
@@ -958,6 +959,35 @@
return Py_BuildValue((char*)"b", exists);
}
+
+ PyDoc_STRVAR(subHashAndFileSize__doc__,
+ "subHashAndFileSize(file)\n"
+ "\n"
+ "file : file to calculate subtitle hash and size for"
+ "\n"
+ "example:\n"
+ " size,hash = xbmcvfs.subHashAndFileSize(file)\n");
+ PyObject* XBMC_subHashAndFileSize(PyObject *self, PyObject *args, PyObject *kwds)
+ {
+ PyObject *f_line;
+ if (!PyArg_ParseTuple(
+ args,
+ (char*)"O",
+ &f_line))
+ {
+ return NULL;
+ }
+ CStdString strSource;
+ if (!PyXBMCGetUnicodeString(strSource, f_line, 1)) return NULL;
+
+ CStdString strSize;
+ CStdString strHash;
+ Py_BEGIN_ALLOW_THREADS
+ CFileUtils::SubtitleFileSizeAndHash(strSource, strSize, strHash);
+ Py_END_ALLOW_THREADS
+
+ return Py_BuildValue((char*)"ss",strSize.c_str(), strHash.c_str());
+ }
// define c functions to be used in python here
PyMethodDef xbmcMethods[] = {
@@ -1005,6 +1035,8 @@
{(char*)"getCleanMovieTitle", (PyCFunction)XBMC_GetCleanMovieTitle, METH_VARARGS|METH_KEYWORDS, getCleanMovieTitle__doc__},
{(char*)"skinHasImage", (PyCFunction)XBMC_SkinHasImage, METH_VARARGS|METH_KEYWORDS, skinHasImage__doc__},
+ {(char*)"subHashAndFileSize", (PyCFunction)XBMC_subHashAndFileSize, METH_VARARGS, subHashAndFileSize__doc__},
+
{NULL, NULL, 0, NULL}
};
diff -Naur xbmc-10.1-Dharma/xbmc/lib/libPython/xbmcmodule/xbmcvfsmodule.cpp xbmc-10.1-Dharma.patch/xbmc/lib/libPython/xbmcmodule/xbmcvfsmodule.cpp
--- xbmc-10.1-Dharma/xbmc/lib/libPython/xbmcmodule/xbmcvfsmodule.cpp 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-10.1-Dharma.patch/xbmc/lib/libPython/xbmcmodule/xbmcvfsmodule.cpp 2011-09-06 23:43:28.717382455 +0200
@@ -0,0 +1,299 @@
+/*
+ * Copyright (C) 2005-2011 Team XBMC
+ * http://www.xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+#include "system.h"
+#if (defined USE_EXTERNAL_PYTHON)
+#if (defined HAVE_LIBPYTHON2_6)
+#include <python2.6/Python.h>
+#elif (defined HAVE_LIBPYTHON2_5)
+#include <python2.5/Python.h>
+#elif (defined HAVE_LIBPYTHON2_4)
+#include <python2.4/Python.h>
+#else
+#error "Could not determine version of Python to use."
+#endif
+#else
+#include "python/Include/Python.h"
+#endif
+#include "../XBPythonDll.h"
+
+#include "FileSystem/Directory.h"
+#include "FileSystem/File.h"
+#include "pyutil.h"
+
+using namespace std;
+using namespace XFILE;
+using namespace PYXBMC;
+
+#ifndef __GNUC__
+#pragma code_seg("PY_TEXT")
+#pragma data_seg("PY_DATA")
+#pragma bss_seg("PY_BSS")
+#pragma const_seg("PY_RDATA")
+#endif
+
+#if defined(__GNUG__) && (__GNUC__>4) || (__GNUC__==4 && __GNUC_MINOR__>=2)
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ namespace xbmcvfs
+ {
+ /*****************************************************************
+ * start of xbmcvfs methods
+ *****************************************************************/
+ typedef struct {
+ PyObject_HEAD
+ CFile* pFile;
+ } File;
+
+ // copy() method
+ PyDoc_STRVAR(copy__doc__,
+ "copy(source, destination) -- copy file to destination, returns true/false.\n"
+ "\n"
+ "source : file to copy.\n"
+ "destination : destination file"
+ "\n"
+ "example:\n"
+ " success = xbmcvfs.copy(source, destination)\n");
+
+ PyObject* vfs_copy(PyObject *self, PyObject *args)
+ {
+ PyObject *f_line;
+ PyObject *d_line;
+ if (!PyArg_ParseTuple(
+ args,
+ (char*)"OO",
+ &f_line,
+ &d_line))
+ {
+ return NULL;
+ }
+ CStdString strSource;
+ CStdString strDestnation;
+ bool bResult = true;
+
+ if (!PyXBMCGetUnicodeString(strSource, f_line, 1)) return NULL;
+ if (!PyXBMCGetUnicodeString(strDestnation, d_line, 1)) return NULL;
+ Py_BEGIN_ALLOW_THREADS
+ bResult = CFile::Cache(strSource, strDestnation);
+ Py_END_ALLOW_THREADS
+
+ return Py_BuildValue((char*)"b", bResult);
+ }
+ PyDoc_STRVAR(delete__doc__,
+ "delete(file)\n"
+ "\n"
+ "file : file to delete"
+ "\n"
+ "example:\n"
+ " xbmcvfs.delete(file)\n");
+
+ // delete a file
+ PyObject* vfs_delete(File *self, PyObject *args, PyObject *kwds)
+ {
+ PyObject *f_line;
+ if (!PyArg_ParseTuple(
+ args,
+ (char*)"O",
+ &f_line))
+ {
+ return NULL;
+ }
+ CStdString strSource;
+ if (!PyXBMCGetUnicodeString(strSource, f_line, 1)) return NULL;
+
+ Py_BEGIN_ALLOW_THREADS
+ self->pFile->Delete(strSource);
+ Py_END_ALLOW_THREADS
+
+ Py_INCREF(Py_None);
+ return Py_None;
+
+ }
+
+ PyDoc_STRVAR(rename__doc__,
+ "rename(file, newFileName)\n"
+ "\n"
+ "file : file to reaname"
+ "newFileName : new filename, including the full path"
+ "\n"
+ "example:\n"
+ " success = xbmcvfs.rename(file,newFileName)\n");
+
+ // rename a file
+ PyObject* vfs_rename(File *self, PyObject *args, PyObject *kwds)
+ {
+ PyObject *f_line;
+ PyObject *d_line;
+ if (!PyArg_ParseTuple(
+ args,
+ (char*)"OO",
+ &f_line,
+ &d_line))
+ {
+ return NULL;
+ }
+ CStdString strSource;
+ CStdString strDestnation;
+ if (!PyXBMCGetUnicodeString(strSource, f_line, 1)) return NULL;
+ if (!PyXBMCGetUnicodeString(strDestnation, d_line, 1)) return NULL;
+
+ bool bResult;
+ Py_BEGIN_ALLOW_THREADS
+ bResult = self->pFile->Rename(strSource,strDestnation);
+ Py_END_ALLOW_THREADS
+
+ return Py_BuildValue((char*)"b", bResult);
+
+ }
+
+ PyDoc_STRVAR(exists__doc__,
+ "exists(path)\n"
+ "\n"
+ "path : file or folder"
+ "\n"
+ "example:\n"
+ " success = xbmcvfs.exists(path)\n");
+
+ // check for a file or folder existance, mimics Pythons os.path.exists()
+ PyObject* vfs_exists(File *self, PyObject *args, PyObject *kwds)
+ {
+ PyObject *f_line;
+ if (!PyArg_ParseTuple(
+ args,
+ (char*)"O",
+ &f_line))
+ {
+ return NULL;
+ }
+ CStdString strSource;
+ if (!PyXBMCGetUnicodeString(strSource, f_line, 1)) return NULL;
+
+ bool bResult;
+
+ Py_BEGIN_ALLOW_THREADS
+ bResult = self->pFile->Exists(strSource, false);
+ Py_END_ALLOW_THREADS
+
+ return Py_BuildValue((char*)"b", bResult);
+ }
+
+ PyDoc_STRVAR(mkdir__doc__,
+ "mkdir(path) -- Create a folder.\n"
+ "\n"
+ "path : folder\n"
+ "\n"
+ "example:\n"
+ " - success = xbmcvfs.mkdir(path)\n");
+ // make a directory
+ PyObject* vfs_mkdir(File *self, PyObject *args, PyObject *kwds)
+ {
+ PyObject *f_line;
+ if (!PyArg_ParseTuple(
+ args,
+ (char*)"O",
+ &f_line))
+ {
+ return NULL;
+ }
+ CStdString strSource;
+ if (!PyXBMCGetUnicodeString(strSource, f_line, 1)) return NULL;
+
+ bool bResult;
+
+ Py_BEGIN_ALLOW_THREADS
+ bResult = CDirectory::Create(strSource);
+ Py_END_ALLOW_THREADS
+
+ return Py_BuildValue((char*)"b", bResult);
+ }
+
+ PyDoc_STRVAR(rmdir__doc__,
+ "rmdir(path) -- Remove a folder.\n"
+ "\n"
+ "path : folder\n"
+ "\n"
+ "example:\n"
+ " - success = xbmcvfs.rmdir(path)\n");
+ // remove a directory
+ PyObject* vfs_rmdir(File *self, PyObject *args, PyObject *kwds)
+ {
+ PyObject *f_line;
+ if (!PyArg_ParseTuple(
+ args,
+ (char*)"O",
+ &f_line))
+ {
+ return NULL;
+ }
+ CStdString strSource;
+ if (!PyXBMCGetUnicodeString(strSource, f_line, 1)) return NULL;
+
+ bool bResult;
+
+ Py_BEGIN_ALLOW_THREADS
+ bResult = CDirectory::Remove(strSource);
+ Py_END_ALLOW_THREADS
+
+ return Py_BuildValue((char*)"b", bResult);
+ }
+
+ // define c functions to be used in python here
+ PyMethodDef xbmcvfsMethods[] = {
+ {(char*)"copy", (PyCFunction)vfs_copy, METH_VARARGS, copy__doc__},
+ {(char*)"delete", (PyCFunction)vfs_delete, METH_VARARGS, delete__doc__},
+ {(char*)"rename", (PyCFunction)vfs_rename, METH_VARARGS, rename__doc__},
+ {(char*)"mkdir", (PyCFunction)vfs_mkdir, METH_VARARGS, mkdir__doc__},
+ {(char*)"rmdir", (PyCFunction)vfs_rmdir, METH_VARARGS, rmdir__doc__},
+ {(char*)"exists", (PyCFunction)vfs_exists, METH_VARARGS, exists__doc__},
+ {NULL, NULL, 0, NULL}
+ };
+
+ /*****************************************************************
+ * end of methods and python objects
+ * initxbmc(void);
+ *****************************************************************/
+
+
+ PyMODINIT_FUNC
+ DeinitVFSModule()
+ {
+ // no need to Py_DECREF our objects (see InitXBMCMVFSModule()) as they were created only
+ // so that they could be added to the module, which steals a reference.
+ }
+
+ PyMODINIT_FUNC
+ InitVFSModule()
+ {
+ // init general xbmc modules
+ PyObject* pXbmcvfsModule;
+ pXbmcvfsModule = Py_InitModule((char*)"xbmcvfs", xbmcvfsMethods);
+ if (pXbmcvfsModule == NULL) return;
+ }
+ }
+
+#ifdef __cplusplus
+}
+#endif
diff -Naur xbmc-10.1-Dharma/xbmc/lib/libPython/XBPython.cpp xbmc-10.1-Dharma.patch/xbmc/lib/libPython/XBPython.cpp
--- xbmc-10.1-Dharma/xbmc/lib/libPython/XBPython.cpp 2011-03-08 02:49:15.000000000 +0100
+++ xbmc-10.1-Dharma.patch/xbmc/lib/libPython/XBPython.cpp 2011-09-06 22:59:02.955549037 +0200
@@ -119,6 +119,8 @@
void InitAddonModule(void);
void InitAddonTypes(void);
void DeinitAddonModule(void);
+ void InitVFSModule(void);
+ void DeinitVFSModule(void);
}
XBPython::XBPython()
@@ -297,7 +299,8 @@
InitPluginModule(); // init xbmcplugin modules
InitGUIModule(); // init xbmcgui modules
InitAddonModule(); // init xbmcaddon modules
-
+ InitVFSModule(); // init xbmcvfs modules
+
// redirecting default output to debug console
if (PyRun_SimpleString(""
"import xbmc\n"
@@ -325,6 +328,7 @@
DeinitPluginModule();
DeinitGUIModule();
DeinitAddonModule();
+ DeinitVFSModule();
}
/**
diff -Naur xbmc-10.1-Dharma/xbmc/utils/FileUtils.cpp xbmc-10.1-Dharma.patch/xbmc/utils/FileUtils.cpp
--- xbmc-10.1-Dharma/xbmc/utils/FileUtils.cpp 2011-03-08 02:49:14.000000000 +0100
+++ xbmc-10.1-Dharma.patch/xbmc/utils/FileUtils.cpp 2011-09-06 22:59:02.977549326 +0200
@@ -72,3 +72,32 @@
}
return false;
}
+
+bool CFileUtils::SubtitleFileSizeAndHash(const CStdString &path, CStdString &strSize, CStdString &strHash)
+{
+ const size_t chksum_block_size = 8192;
+
+ CFile file;
+ size_t i;
+ uint64_t hash = 0;
+ uint64_t buffer1[chksum_block_size*2];
+ uint64_t fileSize ;
+ // In natural language it calculates: size + 64k chksum of the first and last 64k
+ // (even if they overlap because the file is smaller than 128k).
+ file.Open(path, READ_NO_CACHE); //open file
+ file.Read(buffer1, chksum_block_size*sizeof(uint64_t)); //read first 64k
+ file.Seek(-(int64_t)chksum_block_size*sizeof(uint64_t), SEEK_END); //seek to the end of the file
+ file.Read(&buffer1[chksum_block_size], chksum_block_size*sizeof(uint64_t)); //read last 64k
+
+ for (i=0;i<chksum_block_size*2;i++)
+ hash += buffer1[i];
+
+ fileSize = file.GetLength();
+
+ hash += fileSize; //add size
+
+ file.Close(); //close file
+ strHash.Format("%"PRIx64"", hash); //format hash
+ strSize.Format("%d", fileSize); // format size
+ return true;
+}
diff -Naur xbmc-10.1-Dharma/xbmc/utils/FileUtils.h xbmc-10.1-Dharma.patch/xbmc/utils/FileUtils.h
--- xbmc-10.1-Dharma/xbmc/utils/FileUtils.h 2011-03-08 02:49:14.000000000 +0100
+++ xbmc-10.1-Dharma.patch/xbmc/utils/FileUtils.h 2011-09-06 22:59:03.023549930 +0200
@@ -6,4 +6,5 @@
public:
static bool DeleteItem(const CFileItemPtr &item);
static bool RenameFile(const CStdString &strFile);
+ static bool SubtitleFileSizeAndHash(const CStdString &path, CStdString &strSize, CStdString &strHash);
};

View File

@ -1,12 +0,0 @@
diff -Naur xbmc-10.1-Dharma/xbmc/FileSystem/FileSmb.cpp xbmc-10.1-Dharma.patch/xbmc/FileSystem/FileSmb.cpp
--- xbmc-10.1-Dharma/xbmc/FileSystem/FileSmb.cpp 2011-09-05 02:24:35.154994777 +0200
+++ xbmc-10.1-Dharma.patch/xbmc/FileSystem/FileSmb.cpp 2011-09-05 02:22:55.604582159 +0200
@@ -122,6 +122,8 @@
// use the weaker LANMAN password hash in order to be compatible with older servers
fprintf(f, "\tclient lanman auth = yes\n");
fprintf(f, "\tlanman auth = yes\n");
+ fprintf(f, "\tsocket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536\n");
+ fprintf(f, "\tlock directory = %s/.smb/\n", getenv("HOME"));
// set wins server if there's one. name resolve order defaults to 'lmhosts host wins bcast'.
// if no WINS server has been specified the wins method will be ignored.

View File

@ -1,87 +0,0 @@
diff -Naur xbmc-9389dc8/configure.in xbmc-9389dc8.patch/configure.in
--- xbmc-9389dc8/configure.in 2011-09-01 23:34:05.488142309 +0200
+++ xbmc-9389dc8.patch/configure.in 2011-09-01 23:51:26.371021628 +0200
@@ -68,6 +68,8 @@
goom_disabled="== GOOM disabled. =="
rsxs_enabled="== RSXS enabled. =="
rsxs_disabled="== RSXS disabled. =="
+xbmcprojectm_enabled="== XBMCProjectM enabled. =="
+xbmxprojectm_disabled="== XBMCProjectM disabled. =="
x11_enabled="== X11 enabled. =="
x11_disabled="== X11 disabled. =="
pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
@@ -219,6 +221,12 @@
[use_rsxs=$enableval],
[use_rsxs=yes])
+AC_ARG_ENABLE([xbmcprojectm],
+ [AS_HELP_STRING([--enable-xbmcprojectm],
+ [enable XBMCProjectM visualisation (default is yes)])],
+ [use_xbmcprojectm=$enableval],
+ [use_xbmcprojectm=yes])
+
AC_ARG_ENABLE([x11],
[AS_HELP_STRING([--enable-x11],
[enable x11 (default is yes) 'Linux Only'])],
@@ -850,6 +858,15 @@
fi
fi
+# XBMCPROJECTM
+if test "$use_xbmcprojectm" = "no" || test "$use_gl" = "no"; then
+ AC_MSG_NOTICE($xbmcprojectm_disabled)
+ DISABLE_XBMCPROJECTM=1
+else
+ AC_MSG_NOTICE($xbmcprojectm_enabled)
+ DISABLE_XBMCPROJECTM=0
+fi
+
# libRTMP
if test "$use_librtmp" != "no"; then
AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
@@ -1324,6 +1341,12 @@
final_message="$final_message\n RSXS:\t\tNo"
fi
+if test "$use_xbmcprojectm" = "yes"; then
+ final_message="$final_message\n XBMCProjectM:\tYes"
+else
+ final_message="$final_message\n XBMCProjectM:\tNo"
+fi
+
if test "$use_x11" = "yes"; then
final_message="$final_message\n X11:\t\tYes"
else
@@ -1553,6 +1576,7 @@
AC_SUBST(BUILD_DVDCSS)
AC_SUBST(DISABLE_GOOM)
AC_SUBST(DISABLE_RSXS)
+AC_SUBST(DISABLE_XBMCPROJECTM)
AC_SUBST(USE_EXTERNAL_FFMPEG)
AC_SUBST(PYTHON_VERSION)
AC_SUBST(OUTPUT_FILES)
@@ -1797,7 +1821,7 @@
fi
set +x
fi
-], [0])
+], [$DISABLE_XBMCPROJECTM])
XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
./configure \
diff -Naur xbmc-9389dc8/Makefile.in xbmc-9389dc8.patch/Makefile.in
--- xbmc-9389dc8/Makefile.in 2011-09-01 23:34:05.581143554 +0200
+++ xbmc-9389dc8.patch/Makefile.in 2011-09-01 23:52:59.832272157 +0200
@@ -144,8 +144,10 @@
ifeq (@USE_OPENGL@,1)
VIS_DIRS+=\
xbmc/visualizations/OpenGLSpectrum \
- xbmc/visualizations/WaveForm \
- xbmc/visualizations/XBMCProjectM
+ xbmc/visualizations/WaveForm
+ifneq (@DISABLE_XBMCPROJECTM@,1)
+ VIS_DIRS+=xbmc/visualizations/XBMCProjectM
+endif
endif
ifeq (($(findstring osx,@ARCH@), osx),(@USE_OPENGL@,1))

View File

@ -1,23 +0,0 @@
diff -Naur xbmc-a8d22f6/xbmc/settings/GUISettings.cpp xbmc-a8d22f6.patch/xbmc/settings/GUISettings.cpp
--- xbmc-a8d22f6/xbmc/settings/GUISettings.cpp 2011-08-02 15:01:17.000000000 +0200
+++ xbmc-a8d22f6.patch/xbmc/settings/GUISettings.cpp 2011-08-02 15:25:47.205925050 +0200
@@ -654,6 +654,7 @@
AddInt(vid, "myvideos.selectaction", 22079, SELECT_ACTION_PLAY_OR_RESUME, SELECT_ACTION_CHOOSE, 1, SELECT_ACTION_INFO, SPIN_CONTROL_TEXT);
AddBool(NULL, "myvideos.treatstackasfile", 20051, true);
AddBool(vid, "myvideos.extractflags",20433, true);
+ AddBool(vid, "myvideos.alwaysextractflags",20433, false);
AddBool(vid, "myvideos.filemetadata", 20419, true);
AddBool(NULL, "myvideos.extractthumb",20433, true);
diff -Naur xbmc-a8d22f6/xbmc/ThumbLoader.cpp xbmc-a8d22f6.patch/xbmc/ThumbLoader.cpp
--- xbmc-a8d22f6/xbmc/ThumbLoader.cpp 2011-08-02 15:01:19.000000000 +0200
+++ xbmc-a8d22f6.patch/xbmc/ThumbLoader.cpp 2011-08-02 15:24:54.831265675 +0200
@@ -146,7 +146,7 @@
m_item.SetThumbnailImage(m_target);
}
}
- else if (m_item.HasVideoInfoTag() && !m_item.GetVideoInfoTag()->HasStreamDetails())
+ else if (m_item.HasVideoInfoTag() && (!m_item.GetVideoInfoTag()->HasStreamDetails() || g_guiSettings.GetBool("myvideos.alwaysextractflags")))
{
CLog::Log(LOGDEBUG,"%s - trying to extract filestream details from video file %s", __FUNCTION__, m_path.c_str());
result = CDVDFileInfo::GetFileStreamDetails(&m_item);

View File

@ -0,0 +1,28 @@
diff -Naur xbmc-f43dcfa/configure.in xbmc-f43dcfa.patch/configure.in
--- xbmc-f43dcfa/configure.in 2011-09-10 02:31:22.000000000 +0200
+++ xbmc-f43dcfa.patch/configure.in 2011-09-10 08:16:46.068320869 +0200
@@ -963,7 +963,7 @@
USE_LIBAFPCLIENT=0
if test "$host_vendor" = "apple" ; then
if test "x$use_libafpclient" != "xno"; then
- AC_CHECK_HEADERS([afp/libafpclient.h],,
+ AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
[if test "x$use_libafpclient" = "xyes"; then
AC_MSG_ERROR($libafpclient_not_found)
elif test "x$use_libafpclient" != "xno"; then
diff -Naur xbmc-f43dcfa/xbmc/filesystem/DllLibAfp.h xbmc-f43dcfa.patch/xbmc/filesystem/DllLibAfp.h
--- xbmc-f43dcfa/xbmc/filesystem/DllLibAfp.h 2011-09-10 02:31:05.000000000 +0200
+++ xbmc-f43dcfa.patch/xbmc/filesystem/DllLibAfp.h 2011-09-10 08:17:55.057220975 +0200
@@ -27,9 +27,9 @@
#ifdef __cplusplus
extern "C" {
#endif
-#include <afp/libafpclient.h>
-#include <afp/map_def.h>
-#include <afp/midlevel.h>
+#include <afpfs-ng/libafpclient.h>
+#include <afpfs-ng/map_def.h>
+#include <afpfs-ng/midlevel.h>
#ifdef __cplusplus
}
#endif

View File

@ -0,0 +1,47 @@
diff -Naur xbmc-f43dcfa/configure.in xbmc-f43dcfa.patch/configure.in
--- xbmc-f43dcfa/configure.in 2011-09-10 08:23:01.971219535 +0200
+++ xbmc-f43dcfa.patch/configure.in 2011-09-10 08:24:33.480411313 +0200
@@ -958,29 +958,24 @@
AC_MSG_NOTICE($libnfs_disabled)
fi
-
# libafpclient
-USE_LIBAFPCLIENT=0
-if test "$host_vendor" = "apple" ; then
- if test "x$use_libafpclient" != "xno"; then
- AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
- [if test "x$use_libafpclient" = "xyes"; then
- AC_MSG_ERROR($libafpclient_not_found)
- elif test "x$use_libafpclient" != "xno"; then
- AC_MSG_NOTICE($libafpclient_not_found)
- use_libafpclient="no"
- fi
- ])
- if test "x$use_libafpclient" != "xno"; then
- XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
- AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
- USE_LIBAFPCLIENT=1
+if test "x$use_libafpclient" != "xno"; then
+ AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
+ [if test "x$use_libafpclient" = "xyes"; then
+ AC_MSG_ERROR($libafpclient_not_found)
+ elif test "x$use_libafpclient" != "xno"; then
+ AC_MSG_NOTICE($libafpclient_not_found)
+ use_libafpclient="no"
fi
- else
- AC_MSG_NOTICE($libafpclient_disabled)
+ ])
+ if test "x$use_libafpclient" != "xno"; then
+ XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
+ AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
+ USE_LIBAFPCLIENT=1
fi
else
- use_libafpclient="no"
+ USE_LIBAFPCLIENT=0
+ AC_MSG_NOTICE($libafpclient_disabled)
fi
### External libraries checks

View File

@ -34,3 +34,6 @@ ac_cv_func_malloc_0_nonnull=yes \
make -C lib
make -C fuse
$MAKEINSTALL -C lib
$MAKEINSTALL -C include

View File

@ -1,14 +0,0 @@
diff -Naur afpfs-ng-0.8.1/fuse/client.c afpfs-ng-0.8.1.patch/fuse/client.c
--- afpfs-ng-0.8.1/fuse/client.c 2008-03-08 03:44:16.000000000 +0100
+++ afpfs-ng-0.8.1.patch/fuse/client.c 2011-05-22 19:08:53.938152499 +0200
@@ -61,8 +61,8 @@
snprintf(filename, PATH_MAX,
"/usr/local/bin/%s",AFPFSD_FILENAME);
if (access(filename,X_OK)) {
- snprintf(filename, "/usr/bin/%s",
- AFPFSD_FILENAME);
+ snprintf(filename, PATH_MAX,
+ "/usr/bin/%s", AFPFSD_FILENAME);
if (access(filename,X_OK)) {
printf("Could not find server (%s)\n",
filename);

View File

@ -0,0 +1,25 @@
diff -Naur afpfs-ng-0.8.1/configure.ac afpfs-ng-0.8.1.patch/configure.ac
--- afpfs-ng-0.8.1/configure.ac 2011-09-10 12:14:34.164716403 +0200
+++ afpfs-ng-0.8.1.patch/configure.ac 2011-09-10 12:15:13.266241771 +0200
@@ -51,21 +51,6 @@
case $host in
*-*-darwin*)
AC_MSG_CHECKING([for correct gcrypt version])
- AC_RUN_IFELSE(
- [AC_LANG_PROGRAM([
- #include <gcrypt.h>
- #include <stdio.h>],[
- char*p= GCRYPT_VERSION;
- unsigned int vers;
- vers=atoi(p)*10000;
- p=strchr(p,'.')+1;
- vers+=atoi(p)*100;
- p=strchr(p,'.')+1;
- vers+=atoi(p);
- if (vers<10400) return 1;
- ])],
- [AC_MSG_RESULT([yes])],
- [AC_MSG_ERROR([version is < 1.4.0])])
AM_CONDITIONAL(HAVE_LIBGCRYPT, true)
AC_DEFINE([HAVE_LIBGCRYPT], [1] )
;;

View File

@ -0,0 +1,280 @@
diff -Naur afpfs-ng-0.8.1/cmdline/getstatus.c afpfs-ng-0.8.1.patch/cmdline/getstatus.c
--- afpfs-ng-0.8.1/cmdline/getstatus.c 2011-09-10 12:14:34.164716403 +0200
+++ afpfs-ng-0.8.1.patch/cmdline/getstatus.c 2011-09-10 12:16:23.717188342 +0200
@@ -1,4 +1,5 @@
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <pthread.h>
diff -Naur afpfs-ng-0.8.1/fuse/client.c afpfs-ng-0.8.1.patch/fuse/client.c
--- afpfs-ng-0.8.1/fuse/client.c 2011-09-10 12:14:34.165716416 +0200
+++ afpfs-ng-0.8.1.patch/fuse/client.c 2011-09-10 12:16:23.737188610 +0200
@@ -61,8 +61,9 @@
snprintf(filename, PATH_MAX,
"/usr/local/bin/%s",AFPFSD_FILENAME);
if (access(filename,X_OK)) {
- snprintf(filename, "/usr/bin/%s",
+ snprintf(filename, sizeof(filename), "/usr/bin/%s",
AFPFSD_FILENAME);
+ filename[sizeof(filename) - 1] = 0;
if (access(filename,X_OK)) {
printf("Could not find server (%s)\n",
filename);
diff -Naur afpfs-ng-0.8.1/fuse/fuse_int.c afpfs-ng-0.8.1.patch/fuse/fuse_int.c
--- afpfs-ng-0.8.1/fuse/fuse_int.c 2011-09-10 12:14:34.167716442 +0200
+++ afpfs-ng-0.8.1.patch/fuse/fuse_int.c 2011-09-10 12:16:23.745188717 +0200
@@ -197,7 +197,7 @@
ret = ml_open(volume,path,flags,&fp);
if (ret==0)
- fi->fh=(void *) fp;
+ fi->fh=(unsigned long) fp;
return ret;
}
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/afp.h afpfs-ng-0.8.1.patch/include/afpfs-ng/afp.h
--- afpfs-ng-0.8.1/include/afpfs-ng/afp.h 2011-09-10 12:14:34.168716455 +0200
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/afp.h 2011-09-10 12:16:37.588374712 +0200
@@ -370,7 +370,7 @@
int afp_opendt(struct afp_volume *volume, unsigned short * refnum);
-int afp_closedt(struct afp_server * server, unsigned short * refnum);
+int afp_closedt(struct afp_server * server, unsigned short refnum);
int afp_getcomment(struct afp_volume *volume, unsigned int did,
const char * pathname, struct afp_comment * comment);
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/utils.h afpfs-ng-0.8.1.patch/include/afpfs-ng/utils.h
--- afpfs-ng-0.8.1/include/afpfs-ng/utils.h 2011-09-10 12:14:34.173716523 +0200
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/utils.h 2011-09-10 12:16:47.234504316 +0200
@@ -8,8 +8,8 @@
#define hton64(x) (x)
#define ntoh64(x) (x)
#else /* BYTE_ORDER == BIG_ENDIAN */
-#define hton64(x) ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \
- (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32))
+#define hton64(x) ((u_int64_t) (htonl((((unsigned long long)(x)) >> 32) & 0xffffffffLL)) | \
+ (u_int64_t) ((htonl((unsigned long long)(x)) & 0xffffffffLL) << 32))
#define ntoh64(x) (hton64(x))
#endif /* BYTE_ORDER == BIG_ENDIAN */
diff -Naur afpfs-ng-0.8.1/lib/afp_url.c afpfs-ng-0.8.1.patch/lib/afp_url.c
--- afpfs-ng-0.8.1/lib/afp_url.c 2011-09-10 12:14:34.182716644 +0200
+++ afpfs-ng-0.8.1.patch/lib/afp_url.c 2011-09-10 12:16:47.235504329 +0200
@@ -33,7 +33,7 @@
static int check_uamname(const char * uam)
{
char * p;
- for (p=uam;*p;p++) {
+ for (p=(char *)uam;*p;p++) {
if (*p==' ') continue;
if ((*p<'A') || (*p>'z')) return -1;
}
@@ -188,7 +188,7 @@
return -1;
}
- if (p==NULL) p=toparse;
+ if (p==NULL) p=(char *)toparse;
/* Now split on the first / */
if (sscanf(p,"%[^/]/%[^$]",
diff -Naur afpfs-ng-0.8.1/lib/did.c afpfs-ng-0.8.1.patch/lib/did.c
--- afpfs-ng-0.8.1/lib/did.c 2011-09-10 12:14:34.184716670 +0200
+++ afpfs-ng-0.8.1.patch/lib/did.c 2011-09-10 12:16:47.235504329 +0200
@@ -226,7 +226,7 @@
/* Go to the end of last known entry */
- p=path+(p-copy);
+ p=(char *)path+(p-copy);
p2=p;
while ((p=strchr(p+1,'/'))) {
diff -Naur afpfs-ng-0.8.1/lib/dsi.c afpfs-ng-0.8.1.patch/lib/dsi.c
--- afpfs-ng-0.8.1/lib/dsi.c 2011-09-10 12:14:34.185716683 +0200
+++ afpfs-ng-0.8.1.patch/lib/dsi.c 2011-09-10 12:16:47.236504342 +0200
@@ -474,7 +474,7 @@
}
server->flags=ntohs(reply1->flags);
- p=(void *)((unsigned int) server->incoming_buffer + sizeof(*reply1));
+ p=(void *)((unsigned long) server->incoming_buffer + sizeof(*reply1));
p+=copy_from_pascal(server->server_name,p,AFP_SERVER_NAME_LEN)+1;
/* Now work our way through the variable bits */
@@ -757,7 +757,7 @@
printf("<<< read() of rest of AFP, %d bytes\n",amount_to_read);
#endif
ret = read(server->fd, (void *)
- (((unsigned int) server->incoming_buffer)+server->data_read),
+ (((unsigned long) server->incoming_buffer)+server->data_read),
amount_to_read);
if (ret<0) return -1;
if (ret==0) {
diff -Naur afpfs-ng-0.8.1/lib/loop.c afpfs-ng-0.8.1.patch/lib/loop.c
--- afpfs-ng-0.8.1/lib/loop.c 2011-09-10 12:14:34.186716697 +0200
+++ afpfs-ng-0.8.1.patch/lib/loop.c 2011-09-10 12:16:47.257504624 +0200
@@ -25,7 +25,7 @@
static unsigned char exit_program=0;
static pthread_t ending_thread;
-static pthread_t main_thread = NULL;
+static pthread_t main_thread = (pthread_t)NULL;
static int loop_started=0;
static pthread_cond_t loop_started_condition;
diff -Naur afpfs-ng-0.8.1/lib/lowlevel.c afpfs-ng-0.8.1.patch/lib/lowlevel.c
--- afpfs-ng-0.8.1/lib/lowlevel.c 2011-09-10 12:14:34.186716697 +0200
+++ afpfs-ng-0.8.1.patch/lib/lowlevel.c 2011-09-10 12:16:47.288505041 +0200
@@ -582,7 +582,7 @@
if (volume->server->using_version->av_number>=30)
stbuf->st_mode |= fp.unixprivs.permissions;
else
- set_nonunix_perms(stbuf,&fp);
+ set_nonunix_perms(&stbuf->st_mode,&fp);
stbuf->st_uid=fp.unixprivs.uid;
stbuf->st_gid=fp.unixprivs.gid;
diff -Naur afpfs-ng-0.8.1/lib/midlevel.c afpfs-ng-0.8.1.patch/lib/midlevel.c
--- afpfs-ng-0.8.1/lib/midlevel.c 2011-09-10 12:14:34.189716738 +0200
+++ afpfs-ng-0.8.1.patch/lib/midlevel.c 2011-09-10 12:16:47.316505416 +0200
@@ -713,7 +713,7 @@
{
int ret,err=0;
- int totalwritten = 0;
+ size_t totalwritten = 0;
uint64_t sizetowrite, ignored;
unsigned char flags = 0;
unsigned int max_packet_size=volume->server->tx_quantum;
diff -Naur afpfs-ng-0.8.1/lib/proto_attr.c afpfs-ng-0.8.1.patch/lib/proto_attr.c
--- afpfs-ng-0.8.1/lib/proto_attr.c 2011-09-10 12:14:34.189716738 +0200
+++ afpfs-ng-0.8.1.patch/lib/proto_attr.c 2011-09-10 12:16:47.317505429 +0200
@@ -166,7 +166,7 @@
copy_path(server,p,pathname,strlen(pathname));
unixpath_to_afppath(server,p);
p2=p+sizeof_path_header(server)+strlen(pathname);
- if (((unsigned int ) p2) & 0x1) p2++;
+ if (((unsigned long) p2) & 0x1) p2++;
req2=(void *) p2;
req2->len=htons(namelen);
diff -Naur afpfs-ng-0.8.1/lib/proto_desktop.c afpfs-ng-0.8.1.patch/lib/proto_desktop.c
--- afpfs-ng-0.8.1/lib/proto_desktop.c 2011-09-10 12:14:34.197716845 +0200
+++ afpfs-ng-0.8.1.patch/lib/proto_desktop.c 2011-09-10 12:16:47.317505429 +0200
@@ -168,7 +168,7 @@
return 0;
}
-int afp_closedt(struct afp_server * server, unsigned short * refnum)
+int afp_closedt(struct afp_server * server, unsigned short refnum)
{
struct {
struct dsi_header dsi_header __attribute__((__packed__));
diff -Naur afpfs-ng-0.8.1/lib/proto_directory.c afpfs-ng-0.8.1.patch/lib/proto_directory.c
--- afpfs-ng-0.8.1/lib/proto_directory.c 2011-09-10 12:14:34.205716953 +0200
+++ afpfs-ng-0.8.1.patch/lib/proto_directory.c 2011-09-10 12:16:47.317505429 +0200
@@ -248,6 +248,7 @@
return 0;
}
+
int afp_enumerateext2_reply(struct afp_server *server, char * buf, unsigned int size, void * other)
{
@@ -266,8 +267,7 @@
char * p = buf + sizeof(*reply);
int i;
char *max=buf+size;
- struct afp_file_info * filebase = NULL, *filecur=NULL, *new_file=NULL;
- void ** x = other;
+ struct afp_file_info * filebase = NULL, *filecur = NULL, *new_file = NULL, **x = (struct afp_file_info **) other;
if (reply->dsi_header.return_code.error_code) {
return reply->dsi_header.return_code.error_code;
diff -Naur afpfs-ng-0.8.1/lib/proto_map.c afpfs-ng-0.8.1.patch/lib/proto_map.c
--- afpfs-ng-0.8.1/lib/proto_map.c 2011-09-10 12:14:34.207716979 +0200
+++ afpfs-ng-0.8.1.patch/lib/proto_map.c 2011-09-10 12:16:47.318505443 +0200
@@ -122,7 +122,7 @@
if (reply->header.return_code.error_code!=kFPNoErr) return -1;
- copy_from_pascal_two(name,&reply->name,255);
+ copy_from_pascal_two(name,reply->name,255);
return 0;
}
diff -Naur afpfs-ng-0.8.1/lib/proto_session.c afpfs-ng-0.8.1.patch/lib/proto_session.c
--- afpfs-ng-0.8.1/lib/proto_session.c 2011-09-10 12:14:34.208716992 +0200
+++ afpfs-ng-0.8.1.patch/lib/proto_session.c 2011-09-10 12:16:47.318505443 +0200
@@ -39,7 +39,7 @@
switch (type) {
case kLoginWithTimeAndID:
case kReconnWithTimeAndID: {
- uint32_t *p = (void *) (((unsigned int) request)+
+ uint32_t *p = (void *) (((unsigned long) request)+
sizeof(*request));
offset=sizeof(timestamp);
@@ -63,7 +63,7 @@
goto error;
}
- data=(void *) (((unsigned int) request)+sizeof(*request)+offset);
+ data=(void *) (((unsigned long) request)+sizeof(*request)+offset);
request->idlength=htonl(datalen);
request->pad=0;
request->type=htons(type);
@@ -127,7 +127,7 @@
if ((request=malloc(sizeof(*request) + AFP_TOKEN_MAX_LEN))==NULL)
return -1;
- token_data = request + sizeof(*request);
+ token_data = (char *)request + sizeof(*request);
request->type=htons(type);
diff -Naur afpfs-ng-0.8.1/lib/uams.c afpfs-ng-0.8.1.patch/lib/uams.c
--- afpfs-ng-0.8.1/lib/uams.c 2011-09-10 12:14:34.212717047 +0200
+++ afpfs-ng-0.8.1.patch/lib/uams.c 2011-09-10 12:16:47.319505457 +0200
@@ -180,7 +180,7 @@
goto cleartxt_fail;
p += copy_to_pascal(p, username) + 1;
- if ((int)p & 0x1)
+ if ((long)p & 0x1)
len--;
else
p++;
@@ -230,7 +230,7 @@
goto cleartxt_fail;
p += copy_to_pascal(p, username) + 1;
- if ((int)p & 0x1)
+ if ((long)p & 0x1)
len--;
else
p++;
@@ -580,7 +580,7 @@
if (ai == NULL)
goto dhx_noctx_fail;
d += copy_to_pascal(ai, username) + 1;
- if (((int)d) % 2)
+ if (((long)d) % 2)
d++;
else
ai_len--;
diff -Naur afpfs-ng-0.8.1/lib/utils.c afpfs-ng-0.8.1.patch/lib/utils.c
--- afpfs-ng-0.8.1/lib/utils.c 2011-09-10 12:14:34.213717060 +0200
+++ afpfs-ng-0.8.1.patch/lib/utils.c 2011-09-10 12:16:47.319505457 +0200
@@ -196,7 +196,7 @@
maxlen=255;
- p=filename+1;
+ p=(char *)filename+1;
while ((q=strchr(p,'/'))) {
if (q>p+maxlen)
return 1;

View File

@ -0,0 +1,26 @@
diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/dsi.h afpfs-ng-0.8.1.patch/include/afpfs-ng/dsi.h
--- afpfs-ng-0.8.1/include/afpfs-ng/dsi.h 2011-09-10 12:14:34.170716482 +0200
+++ afpfs-ng-0.8.1.patch/include/afpfs-ng/dsi.h 2011-09-10 12:22:28.790093211 +0200
@@ -6,13 +6,15 @@
struct dsi_request
{
- unsigned short requestid;
- unsigned char subcommand;
- void * other;
- unsigned char wait;
- pthread_cond_t condition_cond;
- struct dsi_request * next;
- int return_code;
+ unsigned short requestid;
+ unsigned char subcommand;
+ void * other;
+ int wait;
+ int done_waiting;
+ pthread_cond_t waiting_cond;
+ pthread_mutex_t waiting_mutex;
+ struct dsi_request * next;
+ int return_code;
};
int dsi_receive(struct afp_server * server, void * data, int size);

View File

@ -0,0 +1,90 @@
diff -Naur afpfs-ng-0.8.1/lib/afp.c afpfs-ng-0.8.1.patch/lib/afp.c
--- afpfs-ng-0.8.1/lib/afp.c 2011-09-10 12:14:34.181716631 +0200
+++ afpfs-ng-0.8.1.patch/lib/afp.c 2011-09-10 12:23:15.935726602 +0200
@@ -68,7 +68,7 @@
afp_getsessiontoken_reply,afp_blank_reply, NULL, NULL,
afp_enumerateext2_reply, NULL, NULL, NULL, /*64 - 71 */
afp_listextattrs_reply, NULL, NULL, NULL,
- afp_blank_reply, NULL, NULL, NULL, /*72 - 79 */
+ afp_blank_reply, NULL, afp_blank_reply, afp_blank_reply, /*72 - 79 */
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
@@ -320,8 +320,16 @@
struct dsi_request * p;
struct afp_server *s2;
+
+
+ if (s==NULL)
+ goto out;
+
for (p=s->command_requests;p;p=p->next) {
- pthread_cond_signal(&p->condition_cond);
+ pthread_mutex_lock(&p->waiting_mutex);
+ p->done_waiting=1;
+ pthread_cond_signal(&p->waiting_cond);
+ pthread_mutex_unlock(&p->waiting_mutex);
}
if (s==server_base) {
@@ -354,7 +362,7 @@
s->exit_flag = 0;
s->path_encoding=kFPUTF8Name; /* This is a default */
s->next=NULL;
- s->bufsize=2048;
+ s->bufsize=4096;
s->incoming_buffer=malloc(s->bufsize);
s->attention_quantum=AFP_DEFAULT_ATTENTION_QUANTUM;
@@ -524,13 +532,14 @@
kFPVolCreateDateBit|kFPVolIDBit |
kFPVolNameBit;
char new_encoding;
+ int ret;
if (server->using_version->av_number>=30)
bitmap|= kFPVolNameBit|kFPVolBlockSizeBit;
- switch (afp_volopen(volume,bitmap,
- (strlen(volume->volpassword)>0) ? volume->volpassword : NULL))
- {
+ ret = afp_volopen(volume,bitmap,
+ (strlen(volume->volpassword)>0) ? volume->volpassword : NULL);
+ switch(ret){
case kFPAccessDenied:
*l+=snprintf(mesg,max-*l,
"Incorrect volume password\n");
@@ -544,6 +553,10 @@
*l+=snprintf(mesg,max-*l,
"Could not open volume\n");
goto error;
+ case ETIMEDOUT:
+ *l+=snprintf(mesg,max-*l,
+ "Timed out waiting to open volume\n");
+ goto error;
}
/* It is said that if a volume's encoding will be the same
@@ -641,7 +654,6 @@
add_server(server);
add_fd_and_signal(server->fd);
-
if (!full) {
return 0;
}
@@ -649,10 +661,13 @@
/* Get the status, and calculate the transmit time. We use this to
* calculate our rx quantum. */
gettimeofday(&t1,NULL);
+
if ((error=dsi_getstatus(server))!=0)
goto error;
gettimeofday(&t2,NULL);
+ afp_server_identify(server);
+
if ((t2.tv_sec - t1.tv_sec) > 0)
server->tx_delay= (t2.tv_sec - t1.tv_sec) * 1000;
else

View File

@ -0,0 +1,142 @@
diff -Naur afpfs-ng-0.8.1/lib/dsi.c afpfs-ng-0.8.1.patch/lib/dsi.c
--- afpfs-ng-0.8.1/lib/dsi.c 2011-09-10 12:21:39.948437027 +0200
+++ afpfs-ng-0.8.1.patch/lib/dsi.c 2011-09-10 12:25:57.688903825 +0200
@@ -64,7 +64,7 @@
rx.size=0;
dsi_setup_header(server,&header,DSI_DSIGetStatus);
/* We're intentionally ignoring the results */
- ret=dsi_send(server,(char *) &header,sizeof(struct dsi_header),20,
+ ret=dsi_send(server,(char *) &header,sizeof(struct dsi_header),60,
0,(void *) &rx);
free(rx.data);
@@ -197,6 +197,7 @@
new_request->other=other;
new_request->wait=wait;
new_request->next=NULL;
+ new_request->done_waiting=0;
pthread_mutex_lock(&server->request_queue_mutex);
if (server->command_requests==NULL) {
@@ -208,7 +209,8 @@
server->stats.requests_pending++;
pthread_mutex_unlock(&server->request_queue_mutex);
- pthread_cond_init(&new_request->condition_cond,NULL);
+ pthread_cond_init(&new_request->waiting_cond,NULL);
+ pthread_mutex_init(&new_request->waiting_mutex,NULL);
if (server->connect_state==SERVER_STATE_DISCONNECTED) {
char mesg[1024];
@@ -240,16 +242,12 @@
server->stats.tx_bytes+=size;
pthread_mutex_unlock(&server->send_mutex);
- int tmpwait=new_request->wait;
#ifdef DEBUG_DSI
printf("=== Waiting for response for %d %s\n",
new_request->requestid,
afp_get_command_name(new_request->subcommand));
#endif
- if (tmpwait<0) {
-
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_lock(&mutex);
+ if (new_request->wait<0) {
/* Wait forever */
#ifdef DEBUG_DSI
@@ -258,14 +256,17 @@
afp_get_command_name(new_request->subcommand));
#endif
- rc=pthread_cond_wait(
- &new_request->condition_cond,
- &mutex );
- pthread_mutex_unlock(&mutex);
-
- } else if (tmpwait>0) {
- pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_lock(&mutex);
+ pthread_mutex_lock(&new_request->waiting_mutex);
+
+ if (new_request->done_waiting==0)
+ rc=pthread_cond_wait(
+ &new_request->waiting_cond,
+ &new_request->waiting_mutex );
+
+ pthread_mutex_unlock(&new_request->waiting_mutex);
+
+ } else if (new_request->wait>0) {
+ /* wait for new_request->wait seconds */
#ifdef DEBUG_DSI
printf("=== Waiting for %d %s, for %ds\n",
@@ -283,13 +284,15 @@
printf("=== Changing my mind, no longer waiting for %d\n",
new_request->requestid);
#endif
- pthread_mutex_unlock(&mutex);
goto skip;
}
- rc=pthread_cond_timedwait(
- &new_request->condition_cond,
- &mutex,&ts);
- pthread_mutex_unlock(&mutex);
+ pthread_mutex_lock(&new_request->waiting_mutex);
+ if (new_request->done_waiting==0)
+ rc=pthread_cond_timedwait(
+ &new_request->waiting_cond,
+ &new_request->waiting_mutex,&ts);
+ pthread_mutex_unlock(&new_request->waiting_mutex);
+
if (rc==ETIMEDOUT) {
/* FIXME: should handle this case properly */
#ifdef DEBUG_DSI
@@ -299,6 +302,7 @@
goto out;
}
} else {
+ /* Don't wait */
#ifdef DEBUG_DSI
printf("=== Skipping wait altogether for %d\n",new_request->requestid);
#endif
@@ -474,7 +478,7 @@
}
server->flags=ntohs(reply1->flags);
- p=(void *)((unsigned long) server->incoming_buffer + sizeof(*reply1));
+ p=(void *)((unsigned int) server->incoming_buffer + sizeof(*reply1));
p+=copy_from_pascal(server->server_name,p,AFP_SERVER_NAME_LEN)+1;
/* Now work our way through the variable bits */
@@ -577,6 +581,7 @@
unsigned char mins=0;
unsigned char checkmessage=0;
+ memset(mesg,0,AFP_LOGINMESG_LEN);
/* The logic here's undocumented. If we get an attention packet and
there's no flag, then go check the message. Also, go check the
@@ -757,7 +762,7 @@
printf("<<< read() of rest of AFP, %d bytes\n",amount_to_read);
#endif
ret = read(server->fd, (void *)
- (((unsigned long) server->incoming_buffer)+server->data_read),
+ (((unsigned int) server->incoming_buffer)+server->data_read),
amount_to_read);
if (ret<0) return -1;
if (ret==0) {
@@ -862,8 +867,11 @@
#ifdef DEBUG_DSI
printf("<<< Signalling %d, returning %d or %d\n",request->requestid,request->return_code,rc);
#endif
+ pthread_mutex_lock(&request->waiting_mutex);
request->wait=0;
- pthread_cond_signal(&request->condition_cond);
+ request->done_waiting=1;
+ pthread_cond_signal(&request->waiting_cond);
+ pthread_mutex_unlock(&request->waiting_mutex);
} else {
dsi_remove_from_request_queue(server,request);
}

View File

@ -0,0 +1,28 @@
diff -Naur afpfs-ng-0.8.1/lib/identify.c afpfs-ng-0.8.1.patch/lib/identify.c
--- afpfs-ng-0.8.1/lib/identify.c 1970-01-01 01:00:00.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/identify.c 2011-09-10 12:26:30.257389169 +0200
@@ -0,0 +1,24 @@
+#include <string.h>
+#include "afpfs-ng/afp.h"
+
+
+/*
+ * afp_server_identify()
+ *
+ * Identifies a server
+ *
+ * Right now, this only does identification using the machine_type
+ * given in getsrvrinfo, but this could later use mDNS to get
+ * more details.
+ */
+void afp_server_identify(struct afp_server * s)
+{
+ if (strcmp(s->machine_type,"Netatalk")==0)
+ s->server_type=AFPFS_SERVER_TYPE_NETATALK;
+ else if (strcmp(s->machine_type,"AirPort")==0)
+ s->server_type=AFPFS_SERVER_TYPE_AIRPORT;
+ else if (strcmp(s->machine_type,"Macintosh")==0)
+ s->server_type=AFPFS_SERVER_TYPE_MACINTOSH;
+ else
+ s->server_type=AFPFS_SERVER_TYPE_UNKNOWN;
+}

View File

@ -0,0 +1,12 @@
diff -Naur afpfs-ng-0.8.1/lib/Makefile.am afpfs-ng-0.8.1.patch/lib/Makefile.am
--- afpfs-ng-0.8.1/lib/Makefile.am 2008-02-18 04:34:32.000000000 +0100
+++ afpfs-ng-0.8.1.patch/lib/Makefile.am 2011-09-10 12:27:09.833978612 +0200
@@ -4,7 +4,7 @@
lib_LTLIBRARIES = libafpclient.la
-libafpclient_la_SOURCES = afp.c codepage.c did.c dsi.c map_def.c uams.c uams_def.c unicode.c users.c utils.c resource.c log.c client.c server.c connect.c loop.c midlevel.c proto_attr.c proto_desktop.c proto_directory.c proto_files.c proto_fork.c proto_login.c proto_map.c proto_replyblock.c proto_server.c proto_volume.c proto_session.c afp_url.c status.c forklist.c debug.c lowlevel.c
+libafpclient_la_SOURCES = afp.c codepage.c did.c dsi.c map_def.c uams.c uams_def.c unicode.c users.c utils.c resource.c log.c client.c server.c connect.c loop.c midlevel.c proto_attr.c proto_desktop.c proto_directory.c proto_files.c proto_fork.c proto_login.c proto_map.c proto_replyblock.c proto_server.c proto_volume.c proto_session.c afp_url.c status.c forklist.c debug.c lowlevel.c identify.c
# libafpclient_la_LDFLAGS = -module -avoid-version

View File

@ -0,0 +1,25 @@
diff -Naur afpfs-ng-0.8.1/lib/afp.c afpfs-ng-0.8.1.patch/lib/afp.c
--- afpfs-ng-0.8.1/lib/afp.c 2011-09-10 12:23:38.207025811 +0200
+++ afpfs-ng-0.8.1.patch/lib/afp.c 2011-09-10 12:30:20.305810381 +0200
@@ -19,7 +19,6 @@
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
-#include <errno.h>
#include "afpfs-ng/afp_protocol.h"
#include "afpfs-ng/libafpclient.h"
diff -Naur afpfs-ng-0.8.1/lib/afp_url.c afpfs-ng-0.8.1.patch/lib/afp_url.c
--- afpfs-ng-0.8.1/lib/afp_url.c 2011-09-10 12:21:39.946437001 +0200
+++ afpfs-ng-0.8.1.patch/lib/afp_url.c 2011-09-10 12:30:20.306810396 +0200
@@ -21,7 +21,9 @@
static int check_port(char * port)
{
- long long ret = strtol(port,NULL,10);
+ long long ret = 0;
+ errno = 0;
+ ret = strtol(port,NULL,10);
if ((ret<0) || (ret>32767)) return -1;
if (errno) {
printf("port error\n");

View File

@ -19,12 +19,13 @@
################################################################################
PKG_NAME="connman"
PKG_VERSION="0.76"
PKG_VERSION="0.77"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.connman.net"
PKG_URL="http://www.kernel.org/pub/linux/network/connman/$PKG_NAME-$PKG_VERSION.tar.bz2"
#PKG_URL="http://www.kernel.org/pub/linux/network/connman/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="ftp://ftp.pgpi.com/linux/kernel/pub/linux/network/connman//$PKG_NAME-$PKG_VERSION.tar.bz2"
#PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS="glib dbus udev iptables wpa_supplicant ntp netstatus"
PKG_BUILD_DEPENDS="toolchain glib dbus udev iptables"

View File

@ -19,12 +19,13 @@
################################################################################
PKG_NAME="ethtool"
PKG_VERSION="2.6.39"
PKG_VERSION="3.0"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kernel.org/pub/software/network/ethtool/"
PKG_URL="http://www.kernel.org/pub/software/network/ethtool/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_URL="ftp://ftp.pgpi.com/linux/kernel/pub/software/network/ethtool/$PKG_NAME-$PKG_VERSION.tar.bz2"
#PKG_URL="http://www.kernel.org/pub/software/network/ethtool/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_PRIORITY="optional"

View File

@ -31,8 +31,9 @@ cd $PKG_BUILD
--prefix=/usr \
--libdir=/usr/lib \
--sysconfdir=/etc \
--disable-examples \
--enable-tirpc \
make
$MAKEINSTALL

View File

@ -25,8 +25,8 @@ PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/sahlberg/libnfs"
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS=""
PKG_BUILD_DEPENDS="toolchain"
PKG_DEPENDS="libtirpc"
PKG_BUILD_DEPENDS="toolchain libtirpc"
PKG_PRIORITY="optional"
PKG_SECTION="network"
PKG_SHORTDESC="libnfs: a client library for accessing NFS shares over a network."

View File

@ -25,4 +25,9 @@
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
# hack: add addons to $PATH
for i in `find /storage/.xbmc/addons/* -name bin -type d`; do
PATH="$PATH:$i"
done
export PATH

View File

@ -149,6 +149,9 @@
# build with libnfs support (mounting nfs shares with XBMC) (yes / no)
NFS_SUPPORT="yes"
# build with afpfs-ng support (mounting AFP shares with XBMC) (yes / no)
AFP_SUPPORT="yes"
# build and install with XBMC webfrontend (yes / no)
WEBSERVER="yes"

View File

@ -149,6 +149,9 @@
# build with libnfs support (mounting nfs shares with XBMC) (yes / no)
NFS_SUPPORT="yes"
# build with afpfs-ng support (mounting AFP shares with XBMC) (yes / no)
AFP_SUPPORT="yes"
# build and install with XBMC webfrontend (yes / no)
WEBSERVER="yes"

View File

@ -149,6 +149,9 @@
# build with libnfs support (mounting nfs shares with XBMC) (yes / no)
NFS_SUPPORT="yes"
# build with afpfs-ng support (mounting AFP shares with XBMC) (yes / no)
AFP_SUPPORT="yes"
# build and install with XBMC webfrontend (yes / no)
WEBSERVER="yes"

View File

@ -1,5 +1,5 @@
# Name of the Distro to build (full name, without special charcters)
DISTRONAME="OpenELEC"
DISTRONAME="OpenELEC_EDEN"
# Welcome Message for e.g. SSH Server (up to 5 Lines)
GREATING0="##############################################"
@ -146,6 +146,12 @@
# build with netmount (mounting network drives on boot) support (yes / no)
NETMOUNT="yes"
# build with libnfs support (mounting nfs shares with XBMC) (yes / no)
NFS_SUPPORT="yes"
# build with afpfs-ng support (mounting AFP shares with XBMC) (yes / no)
AFP_SUPPORT="yes"
# build and install with XBMC webfrontend (yes / no)
WEBSERVER="yes"

View File

@ -149,6 +149,9 @@
# build with libnfs support (mounting nfs shares with XBMC) (yes / no)
NFS_SUPPORT="yes"
# build with afpfs-ng support (mounting AFP shares with XBMC) (yes / no)
AFP_SUPPORT="yes"
# build and install with XBMC webfrontend (yes / no)
WEBSERVER="yes"

View File

@ -149,6 +149,9 @@
# build with libnfs support (mounting nfs shares with XBMC) (yes / no)
NFS_SUPPORT="yes"
# build with afpfs-ng support (mounting AFP shares with XBMC) (yes / no)
AFP_SUPPORT="yes"
# build and install with XBMC webfrontend (yes / no)
WEBSERVER="yes"

View File

@ -155,6 +155,9 @@
# build and install with NFS mount support in XBMC (yes / no)
NFS_SUPPORT="yes"
# build with afpfs-ng support (mounting AFP shares with XBMC) (yes / no)
AFP_SUPPORT="yes"
# build and install Samba Server (yes / no)
SAMBA_SERVER="yes"