Merge branch 'master' of github.com:OpenELEC/OpenELEC.tv into openelec-next

This commit is contained in:
Stephan Raue 2012-07-28 06:03:09 +02:00
commit 814d591006
16 changed files with 496 additions and 5 deletions

View File

@ -29,18 +29,21 @@
TARGET_ABI=eabi
TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
SIMD_SUPPORT="no"
;;
cortex-a8)
TARGET_SUBARCH=armv7-a
TARGET_ABI=eabi
TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
SIMD_SUPPORT="yes"
;;
cortex-a9)
TARGET_SUBARCH=armv7-a
TARGET_ABI=eabi
TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
SIMD_SUPPORT="yes"
;;
esac

View File

@ -9,3 +9,6 @@
# setup ARCH specific *FLAGS
TARGET_CFLAGS="-march=$TARGET_CPU -m32"
TARGET_LDFLAGS="-march=$TARGET_CPU -m32"
# build with SIMD support ( yes / no )
SIMD_SUPPORT="yes"

View File

@ -9,3 +9,6 @@
# setup ARCH specific *FLAGS
TARGET_CFLAGS="-march=$TARGET_CPU -m64"
TARGET_LDFLAGS="-march=$TARGET_CPU -m64"
# build with SIMD support ( yes / no )
SIMD_SUPPORT="yes"

View File

@ -31,7 +31,10 @@ else
fi
DEBUG=$ATTR_DEBUG \
OPTIMIZER=" " \
CONFIG_SHELL=/bin/bash \
INSTALL_USER=root \
INSTALL_GROUP=root \
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--prefix=/usr \

View File

@ -33,3 +33,5 @@ PKG_SECTION="accessibility"
PKG_SHORTDESC="attr: Extended Attributes Of Filesystem Objects"
PKG_LONGDESC="Extended attributes are name:value pairs associated permanently with files and directories, similar to the environment strings associated with a process. An attribute may be defined or undefined. If it is defined, its value may be empty or non-empty. Extended attributes are extensions to the normal attributes which are associated with all inodes in the system (i.e. the stat(2) data). They are often used to provide additional functionality to a filesystem - for example, additional security features such as Access Control Lists (ACLs) may be implemented using extended attributes."
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"

View File

@ -39,7 +39,8 @@ mkdir -p .build-host && cd .build-host
--localstatedir=/var \
--enable-static \
--disable-shared \
--with-jpeg8
--with-jpeg8 \
--without-simd
make
make install

View File

@ -24,6 +24,10 @@
CFLAGS="$CFLAGS -fPIC -DPIC"
if [ $SIMD_SUPPORT = "no" ]; then
LIBJPEG_SIMD="--without-simd"
fi
cd $PKG_BUILD
mkdir -p .build-target && cd .build-target
../configure --host=$TARGET_NAME \
@ -33,7 +37,8 @@ mkdir -p .build-target && cd .build-target
--localstatedir=/var \
--enable-static \
--disable-shared \
--with-jpeg8
--with-jpeg8 \
$LIBJPEG_SIMD
make

View File

@ -0,0 +1,34 @@
diff -Naur Python-2.7.3/configure Python-2.7.3.patch/configure
--- Python-2.7.3/configure 2012-04-10 01:07:36.000000000 +0200
+++ Python-2.7.3.patch/configure 2012-07-28 04:48:41.720322418 +0200
@@ -5425,11 +5425,11 @@
# debug builds.
OPT="-g -O0 -Wall $STRICT_PROTO"
else
- OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
+ OPT="-g $WRAP $STRICT_PROTO"
fi
;;
*)
- OPT="-O3 -Wall $STRICT_PROTO"
+ OPT="$STRICT_PROTO"
;;
esac
case $ac_sys_system in
diff -Naur Python-2.7.3/configure.in Python-2.7.3.patch/configure.in
--- Python-2.7.3/configure.in 2012-04-10 01:07:36.000000000 +0200
+++ Python-2.7.3.patch/configure.in 2012-07-28 04:48:22.987067842 +0200
@@ -946,11 +946,11 @@
# debug builds.
OPT="-g -O0 -Wall $STRICT_PROTO"
else
- OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
+ OPT="-g $WRAP $STRICT_PROTO"
fi
;;
*)
- OPT="-O3 -Wall $STRICT_PROTO"
+ OPT="$STRICT_PROTO"
;;
esac
case $ac_sys_system in

View File

@ -19,7 +19,7 @@
################################################################################
PKG_NAME="dvb-firmware"
PKG_VERSION="0.0.26"
PKG_VERSION="3e13377"
PKG_REV="1"
PKG_ARCH="any"
PKG_LICENSE="Free-to-use"

View File

@ -0,0 +1,148 @@
From f01f95af95f287847c850572abe16b6969967ba7 Mon Sep 17 00:00:00 2001
From: Anssi Hannula <anssi@xbmc.org>
Date: Wed, 16 May 2012 19:01:17 +0300
Subject: [PATCH 1/3] fixed: crashes with corrupted rar files
UnrarXLib does not handle invalid files gracefully enough, and some
files can cause it to tell CRarFile that it has written more data into
its buffer than actually fits there, causing CRarFile::Read() to
eventually overread the buffer.
Add checks in CRarFile for the validity of byte counts retrieved from
UnrarXLib to prevent crashes in such situations.
(cherry picked from commit ca9457286994ef0b021744797b8d78fb78260436)
---
xbmc/filesystem/FileRar.cpp | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/xbmc/filesystem/FileRar.cpp b/xbmc/filesystem/FileRar.cpp
index 9c87a35..d026f8f 100644
--- a/xbmc/filesystem/FileRar.cpp
+++ b/xbmc/filesystem/FileRar.cpp
@@ -310,6 +310,14 @@ unsigned int CFileRar::Read(void *lpBuf, int64_t uiBufSize)
m_iDataInBuffer = MAXWINMEMSIZE-m_pExtract->GetDataIO().UnpackToMemorySize;
+ if (m_iDataInBuffer < 0 ||
+ m_iDataInBuffer > MAXWINMEMSIZE - (m_szStartOfBuffer - m_szBuffer))
+ {
+ // invalid data returned by UnrarXLib, prevent a crash
+ CLog::Log(LOGERROR, "CRarFile::Read - Data buffer in inconsistent state");
+ m_iDataInBuffer = 0;
+ }
+
if (m_iDataInBuffer == 0)
break;
@@ -471,6 +479,15 @@ int64_t CFileRar::Seek(int64_t iFilePosition, int iWhence)
}
m_iDataInBuffer = m_pExtract->GetDataIO().m_iSeekTo; // keep data
m_iBufferStart = m_pExtract->GetDataIO().m_iStartOfBuffer;
+
+ if (m_iDataInBuffer < 0 || m_iDataInBuffer > MAXWINMEMSIZE)
+ {
+ // invalid data returned by UnrarXLib, prevent a crash
+ CLog::Log(LOGERROR, "CRarFile::Seek - Data buffer in inconsistent state");
+ m_iDataInBuffer = 0;
+ return -1;
+ }
+
m_szStartOfBuffer = m_szBuffer+MAXWINMEMSIZE-m_iDataInBuffer;
m_iFilePosition = iFilePosition;
--
1.7.10
From de1be4534cf410896b3102f95b6e02019ed64a90 Mon Sep 17 00:00:00 2001
From: Anssi Hannula <anssi@xbmc.org>
Date: Wed, 16 May 2012 17:13:07 +0300
Subject: [PATCH 2/3] fixed: rars that have unpacked size stored on first
volume only
Some multi-volume RAR files have their unpacked size set as 0 in all
volumes except the first one.
Use the previous unpacked size instead of 0 in such cases in order to
support such files properly.
(cherry picked from commit 683457d27736c09415a11d80933553f75139a253)
---
lib/UnrarXLib/volume.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/lib/UnrarXLib/volume.cpp b/lib/UnrarXLib/volume.cpp
index 1f4d5e3..b24e98b 100644
--- a/lib/UnrarXLib/volume.cpp
+++ b/lib/UnrarXLib/volume.cpp
@@ -15,6 +15,7 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
Log(Arc.FileName,St(MDataBadCRC),hd->FileName,Arc.FileName);
}
+ Int64 PrevFullUnpSize = hd->FullUnpSize;
Int64 PosBeforeClose=Arc.Tell();
Arc.Close();
@@ -144,6 +145,13 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
}
}
#endif
+
+ if (hd->FullUnpSize == 0)
+ {
+ // some archives only have correct UnpSize in the first volume
+ hd->FullUnpSize = PrevFullUnpSize;
+ }
+
if (DataIO!=NULL)
{
if (HeaderType==ENDARC_HEAD)
--
1.7.10
From d7bed5ddbbc98d7fedac663410d8e7e64bdf20c7 Mon Sep 17 00:00:00 2001
From: Anssi Hannula <anssi@xbmc.org>
Date: Wed, 16 May 2012 00:14:49 +0300
Subject: [PATCH 3/3] fixed: CRarFile::Read() returning wrong data after some
seek patterns
Certain seek patterns on a file inside a non-compressed rar file can
cause CmdExtract::UnstoreFile() to think that the destination buffer has
been filled (as DestUnpSize counter, originally set to the file size,
reaches zero).
However, counting written bytes using DestUnpSize doesn't make sense for
the UnpackToMemory codepath used for non-compressed rar files, as there
can be seeks which can eventually cause more data to be read than what
the actual file size was. The actual output buffer is internally handled
by ComprDataIO.
The check in UnstoreFile() will result in not all data being written to
the destination buffer, causing CRarFile::Read() to return old stale
data.
Fix that by dropping the unnecessary DestUnpSize handling in
UnpackToMemory codepath of CmdExtract::UnstoreFile().
(cherry picked from commit 840cd4ce4ac8c781e7d35db2ed86d575a42c37e7)
---
lib/UnrarXLib/extract.cpp | 3 ---
1 file changed, 3 deletions(-)
diff --git a/lib/UnrarXLib/extract.cpp b/lib/UnrarXLib/extract.cpp
index b4a8091..368a899 100644
--- a/lib/UnrarXLib/extract.cpp
+++ b/lib/UnrarXLib/extract.cpp
@@ -863,10 +863,7 @@ void CmdExtract::UnstoreFile(ComprDataIO &DataIO,Int64 DestUnpSize)
}
if (Code > 0)
{
- Code=Code<DestUnpSize ? Code:int64to32(DestUnpSize);
DataIO.UnpWrite(&Buffer[0],Code);
- if (DestUnpSize>=0)
- DestUnpSize-=Code;
}
else
{
--
1.7.10

View File

@ -0,0 +1,148 @@
From f01f95af95f287847c850572abe16b6969967ba7 Mon Sep 17 00:00:00 2001
From: Anssi Hannula <anssi@xbmc.org>
Date: Wed, 16 May 2012 19:01:17 +0300
Subject: [PATCH 1/3] fixed: crashes with corrupted rar files
UnrarXLib does not handle invalid files gracefully enough, and some
files can cause it to tell CRarFile that it has written more data into
its buffer than actually fits there, causing CRarFile::Read() to
eventually overread the buffer.
Add checks in CRarFile for the validity of byte counts retrieved from
UnrarXLib to prevent crashes in such situations.
(cherry picked from commit ca9457286994ef0b021744797b8d78fb78260436)
---
xbmc/filesystem/FileRar.cpp | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/xbmc/filesystem/FileRar.cpp b/xbmc/filesystem/FileRar.cpp
index 9c87a35..d026f8f 100644
--- a/xbmc/filesystem/FileRar.cpp
+++ b/xbmc/filesystem/FileRar.cpp
@@ -310,6 +310,14 @@ unsigned int CFileRar::Read(void *lpBuf, int64_t uiBufSize)
m_iDataInBuffer = MAXWINMEMSIZE-m_pExtract->GetDataIO().UnpackToMemorySize;
+ if (m_iDataInBuffer < 0 ||
+ m_iDataInBuffer > MAXWINMEMSIZE - (m_szStartOfBuffer - m_szBuffer))
+ {
+ // invalid data returned by UnrarXLib, prevent a crash
+ CLog::Log(LOGERROR, "CRarFile::Read - Data buffer in inconsistent state");
+ m_iDataInBuffer = 0;
+ }
+
if (m_iDataInBuffer == 0)
break;
@@ -471,6 +479,15 @@ int64_t CFileRar::Seek(int64_t iFilePosition, int iWhence)
}
m_iDataInBuffer = m_pExtract->GetDataIO().m_iSeekTo; // keep data
m_iBufferStart = m_pExtract->GetDataIO().m_iStartOfBuffer;
+
+ if (m_iDataInBuffer < 0 || m_iDataInBuffer > MAXWINMEMSIZE)
+ {
+ // invalid data returned by UnrarXLib, prevent a crash
+ CLog::Log(LOGERROR, "CRarFile::Seek - Data buffer in inconsistent state");
+ m_iDataInBuffer = 0;
+ return -1;
+ }
+
m_szStartOfBuffer = m_szBuffer+MAXWINMEMSIZE-m_iDataInBuffer;
m_iFilePosition = iFilePosition;
--
1.7.10
From de1be4534cf410896b3102f95b6e02019ed64a90 Mon Sep 17 00:00:00 2001
From: Anssi Hannula <anssi@xbmc.org>
Date: Wed, 16 May 2012 17:13:07 +0300
Subject: [PATCH 2/3] fixed: rars that have unpacked size stored on first
volume only
Some multi-volume RAR files have their unpacked size set as 0 in all
volumes except the first one.
Use the previous unpacked size instead of 0 in such cases in order to
support such files properly.
(cherry picked from commit 683457d27736c09415a11d80933553f75139a253)
---
lib/UnrarXLib/volume.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/lib/UnrarXLib/volume.cpp b/lib/UnrarXLib/volume.cpp
index 1f4d5e3..b24e98b 100644
--- a/lib/UnrarXLib/volume.cpp
+++ b/lib/UnrarXLib/volume.cpp
@@ -15,6 +15,7 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
Log(Arc.FileName,St(MDataBadCRC),hd->FileName,Arc.FileName);
}
+ Int64 PrevFullUnpSize = hd->FullUnpSize;
Int64 PosBeforeClose=Arc.Tell();
Arc.Close();
@@ -144,6 +145,13 @@ bool MergeArchive(Archive &Arc,ComprDataIO *DataIO,bool ShowFileName,char Comman
}
}
#endif
+
+ if (hd->FullUnpSize == 0)
+ {
+ // some archives only have correct UnpSize in the first volume
+ hd->FullUnpSize = PrevFullUnpSize;
+ }
+
if (DataIO!=NULL)
{
if (HeaderType==ENDARC_HEAD)
--
1.7.10
From d7bed5ddbbc98d7fedac663410d8e7e64bdf20c7 Mon Sep 17 00:00:00 2001
From: Anssi Hannula <anssi@xbmc.org>
Date: Wed, 16 May 2012 00:14:49 +0300
Subject: [PATCH 3/3] fixed: CRarFile::Read() returning wrong data after some
seek patterns
Certain seek patterns on a file inside a non-compressed rar file can
cause CmdExtract::UnstoreFile() to think that the destination buffer has
been filled (as DestUnpSize counter, originally set to the file size,
reaches zero).
However, counting written bytes using DestUnpSize doesn't make sense for
the UnpackToMemory codepath used for non-compressed rar files, as there
can be seeks which can eventually cause more data to be read than what
the actual file size was. The actual output buffer is internally handled
by ComprDataIO.
The check in UnstoreFile() will result in not all data being written to
the destination buffer, causing CRarFile::Read() to return old stale
data.
Fix that by dropping the unnecessary DestUnpSize handling in
UnpackToMemory codepath of CmdExtract::UnstoreFile().
(cherry picked from commit 840cd4ce4ac8c781e7d35db2ed86d575a42c37e7)
---
lib/UnrarXLib/extract.cpp | 3 ---
1 file changed, 3 deletions(-)
diff --git a/lib/UnrarXLib/extract.cpp b/lib/UnrarXLib/extract.cpp
index b4a8091..368a899 100644
--- a/lib/UnrarXLib/extract.cpp
+++ b/lib/UnrarXLib/extract.cpp
@@ -863,10 +863,7 @@ void CmdExtract::UnstoreFile(ComprDataIO &DataIO,Int64 DestUnpSize)
}
if (Code > 0)
{
- Code=Code<DestUnpSize ? Code:int64to32(DestUnpSize);
DataIO.UnpWrite(&Buffer[0],Code);
- if (DestUnpSize>=0)
- DestUnpSize-=Code;
}
else
{
--
1.7.10

View File

@ -23,8 +23,8 @@
. config/options $1
CFLAGS="-O2 $TARGET_FPU_FLAGS" # -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2"
LDFLAGS=""
#CFLAGS="$TARGET_FPU_FLAGS" # -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2"
#LDFLAGS=""
cd $PKG_BUILD
./configure --host=$TARGET_NAME \

View File

@ -0,0 +1,12 @@
diff -Naur hdparm-9.39/Makefile hdparm-9.39.patch/Makefile
--- hdparm-9.39/Makefile 2012-01-06 17:05:37.000000000 +0100
+++ hdparm-9.39.patch/Makefile 2012-07-28 05:22:53.271127964 +0200
@@ -13,7 +13,7 @@
CC ?= gcc
STRIP ?= strip
-CFLAGS := -O2 -W -Wall -Wbad-function-cast -Wcast-align -Wpointer-arith -Wcast-qual -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -fkeep-inline-functions -Wwrite-strings -Waggregate-return -Wnested-externs -Wtrigraphs $(CFLAGS)
+CFLAGS := -Wbad-function-cast -Wcast-align -Wpointer-arith -Wcast-qual -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -fkeep-inline-functions -Wwrite-strings -Waggregate-return -Wnested-externs -Wtrigraphs $(CFLAGS)
LDFLAGS = -s
#LDFLAGS = -s -static

43
tools/mkpkg/mkpkg_dvb-firmware Executable file
View File

@ -0,0 +1,43 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 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, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
echo "getting sources..."
if [ ! -d dvb-firmware.git ]; then
git clone git://github.com/OpenELEC/dvb-firmware.git dvb-firmware.git
fi
cd dvb-firmware.git
git pull
GIT_REV=`git log -n1 --format=%h`
cd ..
echo "copying sources..."
rm -rf dvb-firmware-$GIT_REV
cp -R dvb-firmware.git dvb-firmware-$GIT_REV
echo "cleaning sources..."
rm -rf dvb-firmware-$GIT_REV/.git
echo "packing sources..."
tar cvJf dvb-firmware-$GIT_REV.tar.xz dvb-firmware-$GIT_REV
echo "remove temporary sourcedir..."
rm -rf dvb-firmware-$GIT_REV

43
tools/mkpkg/mkpkg_misc-firmware Executable file
View File

@ -0,0 +1,43 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 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, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
echo "getting sources..."
if [ ! -d misc-firmware.git ]; then
git clone git://github.com/OpenELEC/misc-firmware.git misc-firmware.git
fi
cd misc-firmware.git
git pull
GIT_REV=`git log -n1 --format=%h`
cd ..
echo "copying sources..."
rm -rf misc-firmware-$GIT_REV
cp -R misc-firmware.git misc-firmware-$GIT_REV
echo "cleaning sources..."
rm -rf misc-firmware-$GIT_REV/.git
echo "packing sources..."
tar cvJf misc-firmware-$GIT_REV.tar.xz misc-firmware-$GIT_REV
echo "remove temporary sourcedir..."
rm -rf misc-firmware-$GIT_REV

43
tools/mkpkg/mkpkg_wlan-firmware Executable file
View File

@ -0,0 +1,43 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 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, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
echo "getting sources..."
if [ ! -d wlan-firmware.git ]; then
git clone git://github.com/OpenELEC/wlan-firmware.git wlan-firmware.git
fi
cd wlan-firmware.git
git pull
GIT_REV=`git log -n1 --format=%h`
cd ..
echo "copying sources..."
rm -rf wlan-firmware-$GIT_REV
cp -R wlan-firmware.git wlan-firmware-$GIT_REV
echo "cleaning sources..."
rm -rf wlan-firmware-$GIT_REV/.git
echo "packing sources..."
tar cvJf wlan-firmware-$GIT_REV.tar.xz wlan-firmware-$GIT_REV
echo "remove temporary sourcedir..."
rm -rf wlan-firmware-$GIT_REV