From: git@ipfire.org
To: ipfire-scm@lists.ipfire.org
Subject: [git.ipfire.org] IPFire 2.x development tree branch, next, updated. 3bdc0102722bdbccd4429f0b38c4fb6a21f3f1c8
Date: Wed, 08 Aug 2012 10:49:52 +0200 [thread overview]
Message-ID: <20120808084953.6E12820094@argus.ipfire.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 73688 bytes --]
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 2.x development tree".
The branch, next has been updated
via 3bdc0102722bdbccd4429f0b38c4fb6a21f3f1c8 (commit)
via 946a2afee8ac9b5a97ba3347ae4eb4db10dd66bf (commit)
via 45fba4eaff00c74564fb4a07fe8f62b11e723f92 (commit)
from c9e01c8cb87ff79a6fbb3a98e552757072c251ef (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 3bdc0102722bdbccd4429f0b38c4fb6a21f3f1c8
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Wed Aug 8 10:48:55 2012 +0200
New package: minidlna.
Yet another UPnP/DLNA server.
commit 946a2afee8ac9b5a97ba3347ae4eb4db10dd66bf
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Tue Aug 7 20:29:06 2012 +0200
New packages: flac+libexif.
commit 45fba4eaff00c74564fb4a07fe8f62b11e723f92
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date: Tue Aug 7 20:21:06 2012 +0200
nasm: Update to 2.10.03.
nasm >= 2.0 is required to build flac.
-----------------------------------------------------------------------
Summary of changes:
config/minidlna/minidlna.conf | 67 ++++
config/rootfiles/common/nasm | 4 +-
config/rootfiles/packages/flac | 314 ++++++++++++++++++
config/rootfiles/packages/libexif | 64 ++++
config/rootfiles/packages/minidlna | 2 +
lfs/{mediatomb => flac} | 30 +-
lfs/{libdvbpsi => libexif} | 12 +-
lfs/{libmad => minidlna} | 18 +-
lfs/nasm | 9 +-
make.sh | 3 +
src/patches/flac-1.2.1-asm.patch | 73 +++++
src/patches/flac-1.2.1-bitreader.patch | 558 ++++++++++++++++++++++++++++++++
src/patches/flac-1.2.1-cflags.patch | 45 +++
src/patches/flac-1.2.1-gcc43.patch | 11 +
src/patches/flac-1.2.1-hidesyms.patch | 39 +++
src/patches/flac-1.2.1-tests.patch | 41 +++
16 files changed, 1257 insertions(+), 33 deletions(-)
create mode 100644 config/minidlna/minidlna.conf
create mode 100644 config/rootfiles/packages/flac
create mode 100644 config/rootfiles/packages/libexif
create mode 100644 config/rootfiles/packages/minidlna
copy lfs/{mediatomb => flac} (79%)
copy lfs/{libdvbpsi => libexif} (92%)
copy lfs/{libmad => minidlna} (88%)
create mode 100644 src/patches/flac-1.2.1-asm.patch
create mode 100644 src/patches/flac-1.2.1-bitreader.patch
create mode 100644 src/patches/flac-1.2.1-cflags.patch
create mode 100644 src/patches/flac-1.2.1-gcc43.patch
create mode 100644 src/patches/flac-1.2.1-hidesyms.patch
create mode 100644 src/patches/flac-1.2.1-tests.patch
Difference in files:
diff --git a/config/minidlna/minidlna.conf b/config/minidlna/minidlna.conf
new file mode 100644
index 0000000..0a1813c
--- /dev/null
+++ b/config/minidlna/minidlna.conf
@@ -0,0 +1,67 @@
+# port for HTTP (descriptions, SOAP, media transfer) traffic
+port=8200
+
+# network interfaces to serve, comma delimited
+network_interface=green0,blue0
+
+# set this to the directory you want scanned.
+# * if have multiple directories, you can have multiple media_dir= lines
+# * if you want to restrict a media_dir to a specific content type, you
+# can prepend the type, followed by a comma, to the directory:
+# + "A" for audio (eg. media_dir=A,/home/jmaggard/Music)
+# + "V" for video (eg. media_dir=V,/home/jmaggard/Videos)
+# + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures)
+media_dir=/var/mp3
+
+# set this if you want to customize the name that shows up on your clients
+#friendly_name=My DLNA Server
+
+# set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache
+db_dir=/var/cache/minidlna
+
+# set this if you would like to specify the directory where you want MiniDLNA to store its log file
+#log_dir=/var/log
+
+# set this to change the verbosity of the information that is logged
+# each section can use a different level: off, fatal, error, warn, info, or debug
+#log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn
+
+# this should be a list of file names to check for when searching for album art
+# note: names should be delimited with a forward slash ("/")
+album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg
+
+# set this to no to disable inotify monitoring to automatically discover new files
+# note: the default is yes
+inotify=yes
+
+# set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO
+enable_tivo=no
+
+# set this to strictly adhere to DLNA standards.
+# * This will allow server-side downscaling of very large JPEG images,
+# which may hurt JPEG serving performance on (at least) Sony DLNA products.
+strict_dlna=no
+
+# default presentation url is http address on port 80
+#presentation_url=http://www.mylan/index.php
+
+# notify interval in seconds. default is 895 seconds.
+notify_interval=900
+
+# serial and model number the daemon will report to clients
+# in its XML description
+serial=12345678
+model_number=1
+
+# specify the path to the MiniSSDPd socket
+#minissdpdsocket=/var/run/minissdpd.sock
+
+# use different container as root of the tree
+# possible values:
+# + "." - use standard container (this is the default)
+# + "B" - "Browse Directory"
+# + "M" - "Music"
+# + "V" - "Video"
+# + "P" - "Pictures"
+# if you specify "B" and client device is audio-only then "Music/Folders" will be used as root
+#root_container=.
diff --git a/config/rootfiles/common/nasm b/config/rootfiles/common/nasm
index 8f20850..9d3e196 100644
--- a/config/rootfiles/common/nasm
+++ b/config/rootfiles/common/nasm
@@ -1,4 +1,4 @@
#usr/bin/nasm
#usr/bin/ndisasm
-#usr/man/man1/nasm.1
-#usr/man/man1/ndisasm.1
+#usr/share/man/man1/nasm.1
+#usr/share/man/man1/ndisasm.1
diff --git a/config/rootfiles/packages/flac b/config/rootfiles/packages/flac
new file mode 100644
index 0000000..d5ca870
--- /dev/null
+++ b/config/rootfiles/packages/flac
@@ -0,0 +1,314 @@
+usr/bin/flac
+usr/bin/metaflac
+#usr/include/FLAC
+#usr/include/FLAC++
+#usr/include/FLAC++/all.h
+#usr/include/FLAC++/decoder.h
+#usr/include/FLAC++/encoder.h
+#usr/include/FLAC++/export.h
+#usr/include/FLAC++/metadata.h
+#usr/include/FLAC/all.h
+#usr/include/FLAC/assert.h
+#usr/include/FLAC/callback.h
+#usr/include/FLAC/export.h
+#usr/include/FLAC/format.h
+#usr/include/FLAC/metadata.h
+#usr/include/FLAC/ordinals.h
+#usr/include/FLAC/stream_decoder.h
+#usr/include/FLAC/stream_encoder.h
+#usr/lib/libFLAC++.a
+#usr/lib/libFLAC++.la
+#usr/lib/libFLAC++.so
+usr/lib/libFLAC++.so.6
+usr/lib/libFLAC++.so.6.2.0
+#usr/lib/libFLAC.a
+#usr/lib/libFLAC.la
+#usr/lib/libFLAC.so
+usr/lib/libFLAC.so.8
+usr/lib/libFLAC.so.8.2.0
+#usr/lib/pkgconfig/flac++.pc
+#usr/lib/pkgconfig/flac.pc
+#usr/man/man1/flac.1
+#usr/man/man1/metaflac.1
+#usr/share/aclocal/libFLAC++.m4
+#usr/share/aclocal/libFLAC.m4
+#usr/share/doc/flac-1.2.1
+#usr/share/doc/flac-1.2.1/FLAC.tag
+#usr/share/doc/flac-1.2.1/html
+#usr/share/doc/flac-1.2.1/html/api
+#usr/share/doc/flac-1.2.1/html/api/+_2all_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/+_2export_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/+_2export_8h.html
+#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/+_2metadata_8h.html
+#usr/share/doc/flac-1.2.1/html/api/all_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/annotated.html
+#usr/share/doc/flac-1.2.1/html/api/assert_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/callback_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/callback_8h.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1File.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Decoder_1_1Stream_1_1State.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1File.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Encoder_1_1Stream_1_1State.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Application.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Chain_1_1Status.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1CueSheet_1_1Track.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Iterator.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Padding.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Picture.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Prototype.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SeekTable.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1SimpleIterator_1_1Status.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1StreamInfo.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1Unknown.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment.png
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry-members.html
+#usr/share/doc/flac-1.2.1/html/api/classFLAC_1_1Metadata_1_1VorbisComment_1_1Entry.html
+#usr/share/doc/flac-1.2.1/html/api/classes.html
+#usr/share/doc/flac-1.2.1/html/api/decoder_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/decoder_8h.html
+#usr/share/doc/flac-1.2.1/html/api/dir_000000.html
+#usr/share/doc/flac-1.2.1/html/api/dir_000001.html
+#usr/share/doc/flac-1.2.1/html/api/dir_000002.html
+#usr/share/doc/flac-1.2.1/html/api/dirs.html
+#usr/share/doc/flac-1.2.1/html/api/doxygen.css
+#usr/share/doc/flac-1.2.1/html/api/doxygen.png
+#usr/share/doc/flac-1.2.1/html/api/encoder_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/encoder_8h.html
+#usr/share/doc/flac-1.2.1/html/api/export_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/export_8h.html
+#usr/share/doc/flac-1.2.1/html/api/files.html
+#usr/share/doc/flac-1.2.1/html/api/format_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/format_8h.html
+#usr/share/doc/flac-1.2.1/html/api/functions.html
+#usr/share/doc/flac-1.2.1/html/api/functions_func.html
+#usr/share/doc/flac-1.2.1/html/api/functions_vars.html
+#usr/share/doc/flac-1.2.1/html/api/globals.html
+#usr/share/doc/flac-1.2.1/html/api/globals_0x66.html
+#usr/share/doc/flac-1.2.1/html/api/globals_0x67.html
+#usr/share/doc/flac-1.2.1/html/api/globals_defs.html
+#usr/share/doc/flac-1.2.1/html/api/globals_enum.html
+#usr/share/doc/flac-1.2.1/html/api/globals_eval.html
+#usr/share/doc/flac-1.2.1/html/api/globals_func.html
+#usr/share/doc/flac-1.2.1/html/api/globals_type.html
+#usr/share/doc/flac-1.2.1/html/api/globals_vars.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__callbacks.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__decoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__encoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__export.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__format.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level0.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level1.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__level2.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__metadata__object.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__decoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flac__stream__encoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__decoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__encoder.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__export.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level0.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level1.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__level2.html
+#usr/share/doc/flac-1.2.1/html/api/group__flacpp__metadata__object.html
+#usr/share/doc/flac-1.2.1/html/api/group__porting.html
+#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__2__to__1__1__3.html
+#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__3__to__1__1__4.html
+#usr/share/doc/flac-1.2.1/html/api/group__porting__1__1__4__to__1__2__0.html
+#usr/share/doc/flac-1.2.1/html/api/hierarchy.html
+#usr/share/doc/flac-1.2.1/html/api/index.html
+#usr/share/doc/flac-1.2.1/html/api/metadata_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/metadata_8h.html
+#usr/share/doc/flac-1.2.1/html/api/modules.html
+#usr/share/doc/flac-1.2.1/html/api/ordinals_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/stream__decoder_8h.html
+#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h-source.html
+#usr/share/doc/flac-1.2.1/html/api/stream__encoder_8h.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRice.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____EntropyCodingMethod__PartitionedRiceContents.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Frame.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameFooter.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____FrameHeader.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____IOCallbacks.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamDecoder.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamEncoder.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Application.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Index.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__CueSheet__Track.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Padding.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Picture.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekPoint.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__SeekTable.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__StreamInfo.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__Unknown.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____StreamMetadata__VorbisComment__Entry.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Constant.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Fixed.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__LPC.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim-members.html
+#usr/share/doc/flac-1.2.1/html/api/structFLAC____Subframe__Verbatim.html
+#usr/share/doc/flac-1.2.1/html/changelog.html
+#usr/share/doc/flac-1.2.1/html/comparison.html
+#usr/share/doc/flac-1.2.1/html/comparison__chopin_prelude_24.html
+#usr/share/doc/flac-1.2.1/html/comparison__dream_theater_600.html
+#usr/share/doc/flac-1.2.1/html/comparison__eddie_warner_titus.html
+#usr/share/doc/flac-1.2.1/html/comparison__fanfare_de_l_eventail_de_jeanne.html
+#usr/share/doc/flac-1.2.1/html/comparison__gloria_estefan_conga.html
+#usr/share/doc/flac-1.2.1/html/comparison__hand_in_my_pocket.html
+#usr/share/doc/flac-1.2.1/html/comparison__l_sub_raga_sivapriya.html
+#usr/share/doc/flac-1.2.1/html/comparison__laetatus_sum.html
+#usr/share/doc/flac-1.2.1/html/comparison__mummified_in_barbed_wire.html
+#usr/share/doc/flac-1.2.1/html/comparison__prokofiev_pcon3_3.html
+#usr/share/doc/flac-1.2.1/html/comparison__ravel_sq4_4.html
+#usr/share/doc/flac-1.2.1/html/comparison__scarlatti_k42.html
+#usr/share/doc/flac-1.2.1/html/comparison__tool_forty_six_and_2.html
+#usr/share/doc/flac-1.2.1/html/comparison__white_room.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_cpudectime.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_cpuenctime.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_procdectime.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_procenctime.html
+#usr/share/doc/flac-1.2.1/html/comparison_all_ratio.html
+#usr/share/doc/flac-1.2.1/html/developers.html
+#usr/share/doc/flac-1.2.1/html/documentation.html
+#usr/share/doc/flac-1.2.1/html/documentation_bugs.html
+#usr/share/doc/flac-1.2.1/html/documentation_example_code.html
+#usr/share/doc/flac-1.2.1/html/documentation_format_overview.html
+#usr/share/doc/flac-1.2.1/html/documentation_tasks.html
+#usr/share/doc/flac-1.2.1/html/documentation_tools.html
+#usr/share/doc/flac-1.2.1/html/documentation_tools_flac.html
+#usr/share/doc/flac-1.2.1/html/documentation_tools_metaflac.html
+#usr/share/doc/flac-1.2.1/html/documentation_tools_plugins.html
+#usr/share/doc/flac-1.2.1/html/download.html
+#usr/share/doc/flac-1.2.1/html/faq.html
+#usr/share/doc/flac-1.2.1/html/favicon.ico
+#usr/share/doc/flac-1.2.1/html/features.html
+#usr/share/doc/flac-1.2.1/html/flac.css
+#usr/share/doc/flac-1.2.1/html/format.html
+#usr/share/doc/flac-1.2.1/html/id.html
+#usr/share/doc/flac-1.2.1/html/images
+#usr/share/doc/flac-1.2.1/html/images/1x1.gif
+#usr/share/doc/flac-1.2.1/html/images/cafebug.gif
+#usr/share/doc/flac-1.2.1/html/images/hw
+#usr/share/doc/flac-1.2.1/html/images/hw/Blackbird_Front_low3_325x87.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/MS300frontsmall_270x108.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/MediaBox_Frt_170x325.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/SB_Hero_Black_325x182.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/Sooloos-ControlOne_325x328.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/Z500_front_325x94.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/a2_01_325x252.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/arcus_325x135.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/bmp-1430_325x241.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/cs505_front_lrg_325x113.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/enus_3-4lft-hires_product_eva8000_325x127.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/escient_ProductLine_325x163.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/hifidelio_bl_front_Z_RGB_325x163.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/i-station-mini-dx_325x237.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/iwod-g10_325x257.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/knc_hr-2800_325x209.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/mediaready_prodmain_MRMCa_325x232.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/meizu_m6_325x206.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/musica_artwork_325x90.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/neodigits_x5000_325x124.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/onda-vx737_325x240.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/request_n_front_325x103.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/rio_karma_279x254.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/sonos_family_RGB_325x200.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/teclast-tl29_325x244.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/transporter_hero_grey_325x208.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/tvix-4000_325x204.jpg
+#usr/share/doc/flac-1.2.1/html/images/hw/vibez_nofm_combi_black_b_325x220.jpg
+#usr/share/doc/flac-1.2.1/html/images/logo100.gif
+#usr/share/doc/flac-1.2.1/html/images/logo130.gif
+#usr/share/doc/flac-1.2.1/html/index.html
+#usr/share/doc/flac-1.2.1/html/itunes.html
+#usr/share/doc/flac-1.2.1/html/license.html
+#usr/share/doc/flac-1.2.1/html/links.html
+#usr/share/doc/flac-1.2.1/html/news.html
+#usr/share/doc/flac-1.2.1/html/ogg_mapping.html
+#usr/share/doc/flac-1.2.1/html/ru
+#usr/share/doc/flac-1.2.1/html/ru/authors.html
+#usr/share/doc/flac-1.2.1/html/ru/comparison.html
+#usr/share/doc/flac-1.2.1/html/ru/developers.html
+#usr/share/doc/flac-1.2.1/html/ru/documentation.html
+#usr/share/doc/flac-1.2.1/html/ru/download.html
+#usr/share/doc/flac-1.2.1/html/ru/features.html
+#usr/share/doc/flac-1.2.1/html/ru/format.html
+#usr/share/doc/flac-1.2.1/html/ru/goals.html
+#usr/share/doc/flac-1.2.1/html/ru/id.html
+#usr/share/doc/flac-1.2.1/html/ru/index.html
+#usr/share/doc/flac-1.2.1/html/ru/links.html
+#usr/share/doc/flac-1.2.1/html/ru/news.html
diff --git a/config/rootfiles/packages/libexif b/config/rootfiles/packages/libexif
new file mode 100644
index 0000000..9efbc1f
--- /dev/null
+++ b/config/rootfiles/packages/libexif
@@ -0,0 +1,64 @@
+#usr/include/libexif
+#usr/include/libexif/_stdint.h
+#usr/include/libexif/exif-byte-order.h
+#usr/include/libexif/exif-content.h
+#usr/include/libexif/exif-data-type.h
+#usr/include/libexif/exif-data.h
+#usr/include/libexif/exif-entry.h
+#usr/include/libexif/exif-format.h
+#usr/include/libexif/exif-ifd.h
+#usr/include/libexif/exif-loader.h
+#usr/include/libexif/exif-log.h
+#usr/include/libexif/exif-mem.h
+#usr/include/libexif/exif-mnote-data.h
+#usr/include/libexif/exif-tag.h
+#usr/include/libexif/exif-utils.h
+#usr/lib/libexif.la
+#usr/lib/libexif.so
+usr/lib/libexif.so.12
+usr/lib/libexif.so.12.3.3
+usr/lib/pkgconfig/libexif.pc
+#usr/share/doc/libexif
+#usr/share/doc/libexif/ABOUT-NLS
+#usr/share/doc/libexif/AUTHORS
+#usr/share/doc/libexif/COPYING
+#usr/share/doc/libexif/ChangeLog
+#usr/share/doc/libexif/NEWS
+#usr/share/doc/libexif/README
+#usr/share/locale/be/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/bs
+#usr/share/locale/bs/LC_MESSAGES
+#usr/share/locale/bs/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/cs/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/da/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/de/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/en_AU
+#usr/share/locale/en_AU/LC_MESSAGES
+#usr/share/locale/en_AU/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/en_CA
+#usr/share/locale/en_CA/LC_MESSAGES
+#usr/share/locale/en_CA/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/en_GB/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/es/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/fr/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/it/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/ja/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/nl/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/pl/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/pt
+#usr/share/locale/pt/LC_MESSAGES
+#usr/share/locale/pt/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/pt_BR/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/ru/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/sk/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/sq
+#usr/share/locale/sq/LC_MESSAGES
+#usr/share/locale/sq/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/sr
+#usr/share/locale/sr/LC_MESSAGES
+#usr/share/locale/sr/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/sv/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/tr/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/uk/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/vi/LC_MESSAGES/libexif-12.mo
+#usr/share/locale/zh_CN/LC_MESSAGES/libexif-12.mo
diff --git a/config/rootfiles/packages/minidlna b/config/rootfiles/packages/minidlna
new file mode 100644
index 0000000..e53330e
--- /dev/null
+++ b/config/rootfiles/packages/minidlna
@@ -0,0 +1,2 @@
+etc/minidlna.conf
+usr/sbin/minidlna
diff --git a/lfs/flac b/lfs/flac
new file mode 100644
index 0000000..2143d36
--- /dev/null
+++ b/lfs/flac
@@ -0,0 +1,95 @@
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# #
+# 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 3 of the License, 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 this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER = 1.2.1
+
+THISAPP = flac-$(VER)
+DL_FILE = $(THISAPP).tar.gz
+DL_FROM = $(URL_IPFIRE)
+DIR_APP = $(DIR_SRC)/$(THISAPP)
+TARGET = $(DIR_INFO)/$(THISAPP)
+PROG = flac
+PAK_VER = 1
+
+DEPS = "libogg"
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 153c8b15a54da428d1f0fadc756c22c7
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist:
+ @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+ @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+ @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+ @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+ @$(PREBUILD)
+ @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-asm.patch
+ cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/flac-1.2.1-bitreader.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-cflags.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-gcc43.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-hidesyms.patch
+ cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/flac-1.2.1-tests.patch
+ cd $(DIR_APP) && ./autogen.sh -V
+ cd $(DIR_APP) && \
+ ./configure \
+ --prefix=/usr \
+ --disable-xmms-plugin \
+ --disable-thorough-tests
+ cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+ cd $(DIR_APP) && make install
+ @rm -rf $(DIR_APP)
+ @$(POSTBUILD)
diff --git a/lfs/libexif b/lfs/libexif
new file mode 100644
index 0000000..e39508d
--- /dev/null
+++ b/lfs/libexif
@@ -0,0 +1,84 @@
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# #
+# 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 3 of the License, 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 this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER = 0.6.21
+
+THISAPP = libexif-$(VER)
+DL_FILE = $(THISAPP).tar.bz2
+DL_FROM = $(URL_IPFIRE)
+DIR_APP = $(DIR_SRC)/$(THISAPP)
+TARGET = $(DIR_INFO)/$(THISAPP)
+PROG = libexif
+PAK_VER = 1
+
+DEPS = ""
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 27339b89850f28c8f1c237f233e05b27
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist:
+ @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+ @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+ @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+ @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+ @$(PREBUILD)
+ @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+ cd $(DIR_APP) && ./configure --prefix=/usr --disable-static
+ cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+ cd $(DIR_APP) && make install
+ @rm -rf $(DIR_APP)
+ @$(POSTBUILD)
diff --git a/lfs/minidlna b/lfs/minidlna
new file mode 100644
index 0000000..d93a5c2
--- /dev/null
+++ b/lfs/minidlna
@@ -0,0 +1,86 @@
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# #
+# 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 3 of the License, 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 this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER = 1.0.25
+
+THISAPP = minidlna-$(VER)
+DL_FILE = minidlna_$(VER)_src.tar.gz
+DL_FROM = $(URL_IPFIRE)
+DIR_APP = $(DIR_SRC)/$(THISAPP)
+TARGET = $(DIR_INFO)/$(THISAPP)
+PROG = minidlna
+PAK_VER = 1
+
+DEPS = "ffmpeg flac libexif libid3tag libogg"
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = d966256baf2f9b068b9de871ab5dade5
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist:
+ @$(PAK)
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+ @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+ @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+ @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+ @$(PREBUILD)
+ @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+ cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
+ cd $(DIR_APP) && make install
+
+ # Install configuration.
+ install -m 644 $(DIR_SRC)/config/minidlna/minidlna.conf /etc
+ @rm -rf $(DIR_APP)
+ @$(POSTBUILD)
diff --git a/lfs/nasm b/lfs/nasm
index 9d5ad08..f6aeac7 100644
--- a/lfs/nasm
+++ b/lfs/nasm
@@ -24,10 +24,10 @@
include Config
-VER = 0.98.39
+VER = 2.10.03
THISAPP = nasm-$(VER)
-DL_FILE = $(THISAPP).tar.bz2
+DL_FILE = $(THISAPP).tar.xz
DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_MD5 = 2032ad44c7359f7a9a166a40a633e772
+$(DL_FILE)_MD5 = a5d0ed070476a7c5b4f0893dc4a4ea4b
install : $(TARGET)
@@ -69,8 +69,7 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
- @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
- cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-security_fix-1.patch
+ @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls
cd $(DIR_APP) && make $(MAKETUNING)
cd $(DIR_APP) && make install
diff --git a/make.sh b/make.sh
index c88a8eb..bf8d288 100755
--- a/make.sh
+++ b/make.sh
@@ -487,6 +487,7 @@ buildipfire() {
ipfiremake libnl
ipfiremake libidn
ipfiremake libjpeg
+ ipfiremake libexif
ipfiremake libpng
ipfiremake libtiff
ipfiremake libart
@@ -632,6 +633,7 @@ buildipfire() {
ipfiremake libogg
ipfiremake libvorbis
ipfiremake libdvbpsi
+ ipfiremake flac
ipfiremake lame
ipfiremake sox
ipfiremake libshout
@@ -767,6 +769,7 @@ buildipfire() {
ipfiremake lcd4linux
ipfiremake mtr
ipfiremake tcpick
+ ipfiremake minidlna
echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild
cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild
echo >> $BASEDIR/build/var/ipfire/firebuild
diff --git a/src/patches/flac-1.2.1-asm.patch b/src/patches/flac-1.2.1-asm.patch
new file mode 100644
index 0000000..932a761
--- /dev/null
+++ b/src/patches/flac-1.2.1-asm.patch
@@ -0,0 +1,73 @@
+diff -up flac-1.2.1/src/libFLAC/stream_decoder.c.asm flac-1.2.1/src/libFLAC/stream_decoder.c
+--- flac-1.2.1/src/libFLAC/stream_decoder.c.asm 2007-09-13 17:38:05.000000000 +0200
++++ flac-1.2.1/src/libFLAC/stream_decoder.c 2008-01-29 10:32:17.000000000 +0100
+@@ -421,7 +421,7 @@ static FLAC__StreamDecoderInitStatus ini
+ #ifdef FLAC__CPU_IA32
+ FLAC__ASSERT(decoder->private_->cpuinfo.type == FLAC__CPUINFO_TYPE_IA32);
+ #ifdef FLAC__HAS_NASM
+-#if 1 /*@@@@@@ OPT: not clearly faster, needs more testing */
++#if 0 /*@@@@@@ OPT: not clearly faster, needs more testing */
+ if(decoder->private_->cpuinfo.data.ia32.bswap)
+ decoder->private_->local_bitreader_read_rice_signed_block = FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap;
+ #endif
+diff -up flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100
++++ flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm 2008-01-29 10:34:09.000000000 +0100
+@@ -1507,5 +1507,5 @@ cident FLAC__lpc_restore_signal_asm_ia32
+ end
+
+ %ifdef OBJ_FORMAT_elf
+- section .note.GNU-stack noalloc
++ section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
+diff -up flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm flac-1.2.1/src/libFLAC/ia32/Makefile.am
+--- flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm 2007-04-04 02:01:13.000000000 +0200
++++ flac-1.2.1/src/libFLAC/ia32/Makefile.am 2008-03-17 14:04:37.000000000 +0100
+@@ -37,7 +37,6 @@ STRIP_NON_ASM = sh $(top_srcdir)/strip_n
+
+ noinst_LTLIBRARIES = libFLAC-asm.la
+ libFLAC_asm_la_SOURCES = \
+- bitreader_asm.nasm \
+ cpu_asm.nasm \
+ fixed_asm.nasm \
+ lpc_asm.nasm \
+diff -up flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm 2007-03-30 02:54:53.000000000 +0200
++++ flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm 2008-01-29 10:32:57.000000000 +0100
+@@ -564,5 +564,5 @@ cident FLAC__bitreader_read_rice_signed_
+ end
+
+ %ifdef OBJ_FORMAT_elf
+- section .note.GNU-stack noalloc
++ section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
+diff -up flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100
++++ flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm 2008-01-29 10:33:52.000000000 +0100
+@@ -308,5 +308,5 @@ cident FLAC__fixed_compute_best_predicto
+ end
+
+ %ifdef OBJ_FORMAT_elf
+- section .note.GNU-stack noalloc
++ section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
+diff -up flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100
++++ flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm 2008-01-29 10:33:24.000000000 +0100
+@@ -117,5 +117,5 @@ cident FLAC__cpu_info_extended_amd_asm_i
+ end
+
+ %ifdef OBJ_FORMAT_elf
+- section .note.GNU-stack noalloc
++ section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
+diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm 2007-06-19 22:01:27.000000000 +0200
++++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 10:34:40.000000000 +0100
+@@ -155,5 +155,5 @@ cident precompute_partition_info_sums_32
+ end
+
+ %ifdef OBJ_FORMAT_elf
+- section .note.GNU-stack noalloc
++ section .note.GNU-stack progbits noalloc noexec nowrite align=1
+ %endif
diff --git a/src/patches/flac-1.2.1-bitreader.patch b/src/patches/flac-1.2.1-bitreader.patch
new file mode 100644
index 0000000..9d47af3
--- /dev/null
+++ b/src/patches/flac-1.2.1-bitreader.patch
@@ -0,0 +1,558 @@
+Index: src/libFLAC/bitreader.c
+===================================================================
+RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
+retrieving revision 1.15
+diff -u -r1.15 bitreader.c
+--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15
++++ src/libFLAC/bitreader.c 14 Mar 2008 11:07:07 -0000
+@@ -69,13 +69,12 @@
+ #endif
+ /* counts the # of zero MSBs in a word */
+ #define COUNT_ZERO_MSBS(word) ( \
+- (word) <= 0xffff ? \
+- ( (word) <= 0xff? byte_to_unary_table[word] + 24 : byte_to_unary_table[(word) >> 8] + 16 ) : \
+- ( (word) <= 0xffffff? byte_to_unary_table[word >> 16] + 8 : byte_to_unary_table[(word) >> 24] ) \
++ word > 0xffffff ? byte_to_unary_table[(word) >> 24] : \
++ !word ? 32 : \
++ word > 0xffff ? byte_to_unary_table[word >> 16] + 8 : \
++ word > 0xff ? byte_to_unary_table[(word) >> 8] + 16 : \
++ byte_to_unary_table[word] + 24 \
+ )
+-/* this alternate might be slightly faster on some systems/compilers: */
+-#define COUNT_ZERO_MSBS2(word) ( (word) <= 0xff ? byte_to_unary_table[word] + 24 : ((word) <= 0xffff ? byte_to_unary_table[(word) >> 8] + 16 : ((word) <= 0xffffff ? byte_to_unary_table[(word) >> 16] + 8 : byte_to_unary_table[(word) >> 24])) )
+-
+
+ /*
+ * This should be at least twice as large as the largest number of words
+Index: src/libFLAC/bitreader.c
+===================================================================
+RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
+retrieving revision 1.15
+diff -u -r1.15 bitreader.c
+--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15
++++ src/libFLAC/bitreader.c 14 Mar 2008 13:19:46 -0000
+@@ -149,6 +148,7 @@
+ FLAC__CPUInfo cpu_info;
+ };
+
++#if FLAC__BYTES_PER_WORD == 4 && FLAC__CPU_IA32
+ #ifdef _MSC_VER
+ /* OPT: an MSVC built-in would be better */
+ static _inline FLAC__uint32 local_swap32_(FLAC__uint32 x)
+@@ -173,6 +173,15 @@
+ done1:
+ }
+ }
++#elif __GNUC__
++static void local_swap32_block_(FLAC__uint32 *start, FLAC__uint32 len)
++{
++ FLAC__uint32 *end;
++
++ for(end = start + len; start < end; start++)
++ asm ("bswap %0" : "=r"(*start) : "0"(*start));
++}
++#endif
+ #endif
+
+ static FLaC__INLINE void crc16_update_word_(FLAC__BitReader *br, brword word)
+@@ -263,7 +272,7 @@
+ #if WORDS_BIGENDIAN
+ #else
+ end = (br->words*FLAC__BYTES_PER_WORD + br->bytes + bytes + (FLAC__BYTES_PER_WORD-1)) / FLAC__BYTES_PER_WORD;
+-# if defined(_MSC_VER) && (FLAC__BYTES_PER_WORD == 4)
++# if FLAC__CPU_IA32 && (__GNUC__ || defined(_MSC_VER)) && FLAC__BYTES_PER_WORD == 4
+ if(br->cpu_info.type == FLAC__CPUINFO_TYPE_IA32 && br->cpu_info.data.ia32.bswap) {
+ start = br->words;
+ local_swap32_block_(br->buffer + start, end - start);
+Index: src/libFLAC/bitreader.c
+===================================================================
+RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
+retrieving revision 1.15
+diff -u -r1.15 bitreader.c
+--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15
++++ src/libFLAC/bitreader.c 17 Mar 2008 15:42:57 -0000
+@@ -803,379 +812,144 @@
+ }
+
+ /* this is by far the most heavily used reader call. it ain't pretty but it's fast */
+-/* a lot of the logic is copied, then adapted, from FLAC__bitreader_read_unary_unsigned() and FLAC__bitreader_read_raw_uint32() */
+ FLAC__bool FLAC__bitreader_read_rice_signed_block(FLAC__BitReader *br, int vals[], unsigned nvals, unsigned parameter)
+-/* OPT: possibly faster version for use with MSVC */
+-#ifdef _MSC_VER
+ {
+- unsigned i;
+- unsigned uval = 0;
+- unsigned bits; /* the # of binary LSBs left to read to finish a rice codeword */
+-
+ /* try and get br->consumed_words and br->consumed_bits into register;
+ * must remember to flush them back to *br before calling other
+- * bitwriter functions that use them, and before returning */
+- register unsigned cwords;
+- register unsigned cbits;
++ * bitreader functions that use them, and before returning */
++ unsigned cwords, words, lsbs, msbs, x, y;
++ unsigned ucbits; /* keep track of the number of unconsumed bits in word */
++ brword b;
++ int *val, *end;
+
+ FLAC__ASSERT(0 != br);
+ FLAC__ASSERT(0 != br->buffer);
+ /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
+ FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
+ FLAC__ASSERT(parameter < 32);
+- /* the above two asserts also guarantee that the binary part never straddles more that 2 words, so we don't have to loop to read it */
+-
+- if(nvals == 0)
+- return true;
+-
+- cbits = br->consumed_bits;
+- cwords = br->consumed_words;
++ /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */
+
+- while(1) {
++ val = vals;
++ end = vals + nvals;
+
+- /* read unary part */
+- while(1) {
+- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
+- brword b = br->buffer[cwords] << cbits;
+- if(b) {
+-#if 0 /* slower, probably due to bad register allocation... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32
+- __asm {
+- bsr eax, b
+- not eax
+- and eax, 31
+- mov i, eax
+- }
+-#else
+- i = COUNT_ZERO_MSBS(b);
+-#endif
+- uval += i;
+- bits = parameter;
+- i++;
+- cbits += i;
+- if(cbits == FLAC__BITS_PER_WORD) {
+- crc16_update_word_(br, br->buffer[cwords]);
+- cwords++;
+- cbits = 0;
+- }
+- goto break1;
+- }
+- else {
+- uval += FLAC__BITS_PER_WORD - cbits;
+- crc16_update_word_(br, br->buffer[cwords]);
+- cwords++;
+- cbits = 0;
+- /* didn't find stop bit yet, have to keep going... */
+- }
+- }
+- /* at this point we've eaten up all the whole words; have to try
+- * reading through any tail bytes before calling the read callback.
+- * this is a repeat of the above logic adjusted for the fact we
+- * don't have a whole word. note though if the client is feeding
+- * us data a byte at a time (unlikely), br->consumed_bits may not
+- * be zero.
+- */
+- if(br->bytes) {
+- const unsigned end = br->bytes * 8;
+- brword b = (br->buffer[cwords] & (FLAC__WORD_ALL_ONES << (FLAC__BITS_PER_WORD-end))) << cbits;
+- if(b) {
+- i = COUNT_ZERO_MSBS(b);
+- uval += i;
+- bits = parameter;
+- i++;
+- cbits += i;
+- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
+- goto break1;
+- }
+- else {
+- uval += end - cbits;
+- cbits += end;
+- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
+- /* didn't find stop bit yet, have to keep going... */
+- }
+- }
+- /* flush registers and read; bitreader_read_from_client_() does
+- * not touch br->consumed_bits at all but we still need to set
+- * it in case it fails and we have to return false.
+- */
+- br->consumed_bits = cbits;
+- br->consumed_words = cwords;
+- if(!bitreader_read_from_client_(br))
++ if(parameter == 0) {
++ while(val < end) {
++ /* read the unary MSBs and end bit */
++ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
+ return false;
+- cwords = br->consumed_words;
+- }
+-break1:
+- /* read binary part */
+- FLAC__ASSERT(cwords <= br->words);
+-
+- if(bits) {
+- while((br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits < bits) {
+- /* flush registers and read; bitreader_read_from_client_() does
+- * not touch br->consumed_bits at all but we still need to set
+- * it in case it fails and we have to return false.
+- */
+- br->consumed_bits = cbits;
+- br->consumed_words = cwords;
+- if(!bitreader_read_from_client_(br))
+- return false;
+- cwords = br->consumed_words;
+- }
+- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
+- if(cbits) {
+- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
+- const unsigned n = FLAC__BITS_PER_WORD - cbits;
+- const brword word = br->buffer[cwords];
+- if(bits < n) {
+- uval <<= bits;
+- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-bits);
+- cbits += bits;
+- goto break2;
+- }
+- uval <<= n;
+- uval |= word & (FLAC__WORD_ALL_ONES >> cbits);
+- bits -= n;
+- crc16_update_word_(br, word);
+- cwords++;
+- cbits = 0;
+- if(bits) { /* if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
+- uval <<= bits;
+- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits));
+- cbits = bits;
+- }
+- goto break2;
+- }
+- else {
+- FLAC__ASSERT(bits < FLAC__BITS_PER_WORD);
+- uval <<= bits;
+- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits);
+- cbits = bits;
+- goto break2;
+- }
+- }
+- else {
+- /* in this case we're starting our read at a partial tail word;
+- * the reader has guaranteed that we have at least 'bits' bits
+- * available to read, which makes this case simpler.
+- */
+- uval <<= bits;
+- if(cbits) {
+- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
+- FLAC__ASSERT(cbits + bits <= br->bytes*8);
+- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-bits);
+- cbits += bits;
+- goto break2;
+- }
+- else {
+- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits);
+- cbits += bits;
+- goto break2;
+- }
+- }
+- }
+-break2:
+- /* compose the value */
+- *vals = (int)(uval >> 1 ^ -(int)(uval & 1));
+
+- /* are we done? */
+- --nvals;
+- if(nvals == 0) {
+- br->consumed_bits = cbits;
+- br->consumed_words = cwords;
+- return true;
++ *val++ = (int)(msbs >> 1) ^ -(int)(msbs & 1);
+ }
+
+- uval = 0;
+- ++vals;
+-
++ return true;
+ }
+-}
+-#else
+-{
+- unsigned i;
+- unsigned uval = 0;
+
+- /* try and get br->consumed_words and br->consumed_bits into register;
+- * must remember to flush them back to *br before calling other
+- * bitwriter functions that use them, and before returning */
+- register unsigned cwords;
+- register unsigned cbits;
+- unsigned ucbits; /* keep track of the number of unconsumed bits in the buffer */
++ FLAC__ASSERT(parameter > 0);
+
+- FLAC__ASSERT(0 != br);
+- FLAC__ASSERT(0 != br->buffer);
+- /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
+- FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
+- FLAC__ASSERT(parameter < 32);
+- /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */
++ cwords = br->consumed_words;
++ words = br->words;
+
+- if(nvals == 0)
+- return true;
++ /* if we've not consumed up to a partial tail word... */
++ if(cwords >= words) {
++ x = 0;
++ goto process_tail;
++ }
++
++ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
++ b = br->buffer[cwords] << br->consumed_bits; /* keep unconsumed bits aligned to left */
++
++ while(val < end) {
++ /* read the unary MSBs and end bit */
++ x = y = COUNT_ZERO_MSBS(b);
++ if(x == FLAC__BITS_PER_WORD) {
++ x = ucbits;
++ do {
++ /* didn't find stop bit yet, have to keep going... */
++ crc16_update_word_(br, br->buffer[cwords++]);
++ if (cwords >= words)
++ goto incomplete_msbs;
++ b = br->buffer[cwords];
++ y = COUNT_ZERO_MSBS(b);
++ x += y;
++ } while(y == FLAC__BITS_PER_WORD);
++ }
++ b <<= y;
++ b <<= 1; /* account for stop bit */
++ ucbits = (ucbits - x - 1) % FLAC__BITS_PER_WORD;
++ msbs = x;
++
++ /* read the binary LSBs */
++ x = b >> (FLAC__BITS_PER_WORD - parameter);
++ if(parameter <= ucbits) {
++ ucbits -= parameter;
++ b <<= parameter;
++ } else {
++ /* there are still bits left to read, they will all be in the next word */
++ crc16_update_word_(br, br->buffer[cwords++]);
++ if (cwords >= words)
++ goto incomplete_lsbs;
++ b = br->buffer[cwords];
++ ucbits += FLAC__BITS_PER_WORD - parameter;
++ x |= b >> ucbits;
++ b <<= FLAC__BITS_PER_WORD - ucbits;
++ }
++ lsbs = x;
+
+- cbits = br->consumed_bits;
+- cwords = br->consumed_words;
+- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
++ /* compose the value */
++ x = (msbs << parameter) | lsbs;
++ *val++ = (int)(x >> 1) ^ -(int)(x & 1);
+
+- while(1) {
++ continue;
+
+- /* read unary part */
+- while(1) {
+- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
+- brword b = br->buffer[cwords] << cbits;
+- if(b) {
+-#if 0 /* is not discernably faster... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32 && defined __GNUC__
+- asm volatile (
+- "bsrl %1, %0;"
+- "notl %0;"
+- "andl $31, %0;"
+- : "=r"(i)
+- : "r"(b)
+- );
+-#else
+- i = COUNT_ZERO_MSBS(b);
+-#endif
+- uval += i;
+- cbits += i;
+- cbits++; /* skip over stop bit */
+- if(cbits >= FLAC__BITS_PER_WORD) { /* faster way of testing if(cbits == FLAC__BITS_PER_WORD) */
+- crc16_update_word_(br, br->buffer[cwords]);
+- cwords++;
+- cbits = 0;
+- }
+- goto break1;
+- }
+- else {
+- uval += FLAC__BITS_PER_WORD - cbits;
+- crc16_update_word_(br, br->buffer[cwords]);
+- cwords++;
+- cbits = 0;
+- /* didn't find stop bit yet, have to keep going... */
+- }
+- }
+- /* at this point we've eaten up all the whole words; have to try
+- * reading through any tail bytes before calling the read callback.
+- * this is a repeat of the above logic adjusted for the fact we
+- * don't have a whole word. note though if the client is feeding
+- * us data a byte at a time (unlikely), br->consumed_bits may not
+- * be zero.
+- */
+- if(br->bytes) {
+- const unsigned end = br->bytes * 8;
+- brword b = (br->buffer[cwords] & ~(FLAC__WORD_ALL_ONES >> end)) << cbits;
+- if(b) {
+- i = COUNT_ZERO_MSBS(b);
+- uval += i;
+- cbits += i;
+- cbits++; /* skip over stop bit */
+- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
+- goto break1;
+- }
+- else {
+- uval += end - cbits;
+- cbits += end;
+- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
+- /* didn't find stop bit yet, have to keep going... */
+- }
++ /* at this point we've eaten up all the whole words */
++process_tail:
++ do {
++ if(0) {
++incomplete_msbs:
++ br->consumed_bits = 0;
++ br->consumed_words = cwords;
+ }
+- /* flush registers and read; bitreader_read_from_client_() does
+- * not touch br->consumed_bits at all but we still need to set
+- * it in case it fails and we have to return false.
+- */
+- br->consumed_bits = cbits;
+- br->consumed_words = cwords;
+- if(!bitreader_read_from_client_(br))
++
++ /* read the unary MSBs and end bit */
++ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
+ return false;
+- cwords = br->consumed_words;
+- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits + uval;
+- /* + uval to offset our count by the # of unary bits already
+- * consumed before the read, because we will add these back
+- * in all at once at break1
+- */
+- }
+-break1:
+- ucbits -= uval;
+- ucbits--; /* account for stop bit */
+-
+- /* read binary part */
+- FLAC__ASSERT(cwords <= br->words);
+-
+- if(parameter) {
+- while(ucbits < parameter) {
+- /* flush registers and read; bitreader_read_from_client_() does
+- * not touch br->consumed_bits at all but we still need to set
+- * it in case it fails and we have to return false.
+- */
+- br->consumed_bits = cbits;
++ msbs += x;
++ x = ucbits = 0;
++
++ if(0) {
++incomplete_lsbs:
++ br->consumed_bits = 0;
+ br->consumed_words = cwords;
+- if(!bitreader_read_from_client_(br))
+- return false;
+- cwords = br->consumed_words;
+- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
+- }
+- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
+- if(cbits) {
+- /* this also works when consumed_bits==0, it's just slower than necessary for that case */
+- const unsigned n = FLAC__BITS_PER_WORD - cbits;
+- const brword word = br->buffer[cwords];
+- if(parameter < n) {
+- uval <<= parameter;
+- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-parameter);
+- cbits += parameter;
+- }
+- else {
+- uval <<= n;
+- uval |= word & (FLAC__WORD_ALL_ONES >> cbits);
+- crc16_update_word_(br, word);
+- cwords++;
+- cbits = parameter - n;
+- if(cbits) { /* parameter > n, i.e. if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
+- uval <<= cbits;
+- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits));
+- }
+- }
+- }
+- else {
+- cbits = parameter;
+- uval <<= parameter;
+- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits);
+- }
+ }
+- else {
+- /* in this case we're starting our read at a partial tail word;
+- * the reader has guaranteed that we have at least 'parameter'
+- * bits available to read, which makes this case simpler.
+- */
+- uval <<= parameter;
+- if(cbits) {
+- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
+- FLAC__ASSERT(cbits + parameter <= br->bytes*8);
+- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-parameter);
+- cbits += parameter;
+- }
+- else {
+- cbits = parameter;
+- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits);
+- }
+- }
+- }
+
+- ucbits -= parameter;
+-
+- /* compose the value */
+- *vals = (int)(uval >> 1 ^ -(int)(uval & 1));
++ /* read the binary LSBs */
++ if(!FLAC__bitreader_read_raw_uint32(br, &lsbs, parameter - ucbits))
++ return false;
++ lsbs = x | lsbs;
+
+- /* are we done? */
+- --nvals;
+- if(nvals == 0) {
+- br->consumed_bits = cbits;
+- br->consumed_words = cwords;
+- return true;
+- }
++ /* compose the value */
++ x = (msbs << parameter) | lsbs;
++ *val++ = (int)(x >> 1) ^ -(int)(x & 1);
++ x = 0;
+
+- uval = 0;
+- ++vals;
++ cwords = br->consumed_words;
++ words = br->words;
++ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
++ b = br->buffer[cwords] << br->consumed_bits;
++ } while(cwords >= words && val < end);
++ }
+
++ if(ucbits == 0 && cwords < words) {
++ /* don't leave the head word with no unconsumed bits */
++ crc16_update_word_(br, br->buffer[cwords++]);
++ ucbits = FLAC__BITS_PER_WORD;
+ }
++
++ br->consumed_bits = FLAC__BITS_PER_WORD - ucbits;
++ br->consumed_words = cwords;
++
++ return true;
+ }
+-#endif
+
+ #if 0 /* UNUSED */
+ FLAC__bool FLAC__bitreader_read_golomb_signed(FLAC__BitReader *br, int *val, unsigned parameter)
diff --git a/src/patches/flac-1.2.1-cflags.patch b/src/patches/flac-1.2.1-cflags.patch
new file mode 100644
index 0000000..032fa5e
--- /dev/null
+++ b/src/patches/flac-1.2.1-cflags.patch
@@ -0,0 +1,45 @@
+diff -up flac-1.2.1/src/libFLAC/Makefile.am.cflags flac-1.2.1/src/libFLAC/Makefile.am
+--- flac-1.2.1/src/libFLAC/Makefile.am.cflags 2007-09-14 23:06:17.000000000 +0200
++++ flac-1.2.1/src/libFLAC/Makefile.am 2008-03-17 14:19:29.000000000 +0100
+@@ -41,7 +41,7 @@ CPUCFLAGS = -faltivec -force_cpusubtype_
+ else
+ # Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific
+ #@@@ PPC optimizations temporarily disabled
+-CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM
++CPUCFLAGS = -DFLAC__NO_ASM
+ endif
+ endif
+
+@@ -69,7 +69,7 @@ endif
+ endif
+ endif
+
+-libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@
++libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@ libFLAC_extracflags.la
+
+ SUBDIRS = $(ARCH_SUBDIRS) include .
+
+@@ -112,7 +112,10 @@ libFLAC_la_SOURCES = \
+ metadata_iterators.c \
+ metadata_object.c \
+ stream_decoder.c \
+- stream_encoder.c \
+ stream_encoder_framing.c \
+ window.c \
+ $(extra_ogg_sources)
++
++noinst_LTLIBRARIES = libFLAC_extracflags.la
++libFLAC_extracflags_la_SOURCES = stream_encoder.c
++libFLAC_extracflags_la_CFLAGS = $(AM_CFLAGS) -funroll-loops
+diff -up flac-1.2.1/configure.in.cflags flac-1.2.1/configure.in
+--- flac-1.2.1/configure.in.cflags 2007-09-13 17:48:42.000000000 +0200
++++ flac-1.2.1/configure.in 2008-03-17 14:17:08.000000000 +0100
+@@ -301,7 +301,7 @@ else
+ CPPFLAGS="-DNDEBUG $CPPFLAGS"
+ if test "x$GCC" = xyes; then
+ CPPFLAGS="-DFLaC__INLINE=__inline__ $CPPFLAGS"
+- CFLAGS="-O3 -funroll-loops -finline-functions -Wall -W -Winline $CFLAGS"
++ CFLAGS="-Wall -W -Winline $CFLAGS"
+ fi
+ fi
+
diff --git a/src/patches/flac-1.2.1-gcc43.patch b/src/patches/flac-1.2.1-gcc43.patch
new file mode 100644
index 0000000..7fdbf80
--- /dev/null
+++ b/src/patches/flac-1.2.1-gcc43.patch
@@ -0,0 +1,11 @@
+diff -up flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 flac-1.2.1/examples/cpp/encode/file/main.cpp
+--- flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 2007-09-13 17:58:03.000000000 +0200
++++ flac-1.2.1/examples/cpp/encode/file/main.cpp 2008-01-08 10:27:39.000000000 +0100
+@@ -29,6 +29,7 @@
+ #endif
+
+ #include <stdio.h>
++#include <string.h>
+ #include <stdlib.h>
+ #include "FLAC++/metadata.h"
+ #include "FLAC++/encoder.h"
diff --git a/src/patches/flac-1.2.1-hidesyms.patch b/src/patches/flac-1.2.1-hidesyms.patch
new file mode 100644
index 0000000..0f4c104
--- /dev/null
+++ b/src/patches/flac-1.2.1-hidesyms.patch
@@ -0,0 +1,39 @@
+diff -up flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms flac-1.2.1/src/libFLAC/include/private/ogg_helper.h
+--- flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms 2007-02-02 07:22:40.000000000 +0100
++++ flac-1.2.1/src/libFLAC/include/private/ogg_helper.h 2008-01-29 15:27:13.000000000 +0100
+@@ -35,9 +35,13 @@
+ #include <ogg/ogg.h>
+ #include "FLAC/stream_encoder.h" /* for FLAC__StreamEncoder */
+
++__attribute__((__visibility__("hidden")))
+ void simple_ogg_page__init(ogg_page *page);
++__attribute__((__visibility__("hidden")))
+ void simple_ogg_page__clear(ogg_page *page);
++__attribute__((__visibility__("hidden")))
+ FLAC__bool simple_ogg_page__get_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderReadCallback read_callback, void *client_data);
++__attribute__((__visibility__("hidden")))
+ FLAC__bool simple_ogg_page__set_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderWriteCallback write_callback, void *client_data);
+
+ #endif
+diff -up flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms flac-1.2.1/src/libFLAC/include/private/bitreader.h
+--- flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms 2007-07-10 22:22:19.000000000 +0200
++++ flac-1.2.1/src/libFLAC/include/private/bitreader.h 2008-01-29 15:27:13.000000000 +0100
+@@ -95,5 +95,6 @@ FLAC__bool FLAC__bitreader_read_golomb_u
+ FLAC__bool FLAC__bitreader_read_utf8_uint32(FLAC__BitReader *br, FLAC__uint32 *val, FLAC__byte *raw, unsigned *rawlen);
+ FLAC__bool FLAC__bitreader_read_utf8_uint64(FLAC__BitReader *br, FLAC__uint64 *val, FLAC__byte *raw, unsigned *rawlen);
+
++__attribute__((__visibility__("hidden")))
+ FLAC__bool bitreader_read_from_client_(FLAC__BitReader *br);
+ #endif
+diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm
+--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms 2008-01-29 15:27:13.000000000 +0100
++++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 15:28:32.000000000 +0100
+@@ -34,7 +34,7 @@
+
+ data_section
+
+-cglobal precompute_partition_info_sums_32bit_asm_ia32_
++cglobal precompute_partition_info_sums_32bit_asm_ia32_:function hidden
+
+ code_section
+
diff --git a/src/patches/flac-1.2.1-tests.patch b/src/patches/flac-1.2.1-tests.patch
new file mode 100644
index 0000000..89c5921
--- /dev/null
+++ b/src/patches/flac-1.2.1-tests.patch
@@ -0,0 +1,41 @@
+diff -up flac-1.2.1/test/test_seeking.sh.tests flac-1.2.1/test/test_seeking.sh
+--- flac-1.2.1/test/test_seeking.sh.tests 2007-09-11 09:33:04.000000000 +0200
++++ flac-1.2.1/test/test_seeking.sh 2008-01-29 13:52:03.000000000 +0100
+@@ -103,7 +103,7 @@ tiny_seek_count=100
+ if [ "$FLAC__TEST_LEVEL" -gt 1 ] ; then
+ small_seek_count=10000
+ else
+- small_seek_count=100000
++ small_seek_count=100
+ fi
+
+ for suffix in '' '-s' ; do
+diff -up flac-1.2.1/test/test_streams.sh.tests flac-1.2.1/test/test_streams.sh
+--- flac-1.2.1/test/test_streams.sh.tests 2007-06-16 21:58:39.000000000 +0200
++++ flac-1.2.1/test/test_streams.sh 2008-03-17 13:57:39.000000000 +0100
+@@ -39,6 +39,10 @@ if [ x"$FLAC__TEST_LEVEL" = x ] ; then
+ FLAC__TEST_LEVEL=1
+ fi
+
++if [ "$FLAC__TEST_LEVEL" -eq 0 ] ; then
++ exit 0
++fi
++
+ flac --help 1>/dev/null 2>/dev/null || die "ERROR can't find flac executable"
+
+ run_flac ()
+diff -up flac-1.2.1/src/test_streams/main.c.tests flac-1.2.1/src/test_streams/main.c
+--- flac-1.2.1/src/test_streams/main.c.tests 2007-08-31 07:54:49.000000000 +0200
++++ flac-1.2.1/src/test_streams/main.c 2008-01-29 13:53:46.000000000 +0100
+@@ -898,9 +898,9 @@ int main(int argc, char *argv[])
+ if(!generate_noise("noise.raw", 65536 * 8 * 3)) return 1;
+ if(!generate_noise("noise8m32.raw", 32)) return 1;
+ if(!generate_wackywavs()) return 1;
+- for(channels = 1; channels <= 8; channels++) {
++ for(channels = 1; channels <= 2; channels++) {
+ unsigned bits_per_sample;
+- for(bits_per_sample = 4; bits_per_sample <= 24; bits_per_sample++) {
++ for(bits_per_sample = 8; bits_per_sample <= 24; bits_per_sample += 8) {
+ static const unsigned nsamples[] = { 1, 111, 4777 } ;
+ unsigned samples;
+ for(samples = 0; samples < sizeof(nsamples)/sizeof(nsamples[0]); samples++) {
hooks/post-receive
--
IPFire 2.x development tree
reply other threads:[~2012-08-08 8:49 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120808084953.6E12820094@argus.ipfire.org \
--to=git@ipfire.org \
--cc=ipfire-scm@lists.ipfire.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox