]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/commitdiff
Merge remote-tracking branch 'origin/next' into glibc-update2
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 22 Aug 2012 10:23:11 +0000 (12:23 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 22 Aug 2012 10:23:11 +0000 (12:23 +0200)
20 files changed:
config/minidlna/minidlna.conf [new file with mode: 0644]
config/rootfiles/common/nasm
config/rootfiles/core/62/filelists/files
config/rootfiles/packages/flac [new file with mode: 0644]
config/rootfiles/packages/libexif [new file with mode: 0644]
config/rootfiles/packages/minidlna [new file with mode: 0644]
html/cgi-bin/connections.cgi
lfs/flac [new file with mode: 0644]
lfs/icecc
lfs/libexif [new file with mode: 0644]
lfs/minidlna [new file with mode: 0644]
lfs/nasm
make.sh
src/patches/flac-1.2.1-asm.patch [new file with mode: 0644]
src/patches/flac-1.2.1-bitreader.patch [new file with mode: 0644]
src/patches/flac-1.2.1-cflags.patch [new file with mode: 0644]
src/patches/flac-1.2.1-gcc43.patch [new file with mode: 0644]
src/patches/flac-1.2.1-hidesyms.patch [new file with mode: 0644]
src/patches/flac-1.2.1-tests.patch [new file with mode: 0644]
src/patches/icecream-0.9.7-platform-arm.patch [new file with mode: 0644]

diff --git a/config/minidlna/minidlna.conf b/config/minidlna/minidlna.conf
new file mode 100644 (file)
index 0000000..0a1813c
--- /dev/null
@@ -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=.
index 8f208500562927c2bb6ff0d3cb370a841ebab368..9d3e19623126770162d8c0f5ab810a6bafda8774 100644 (file)
@@ -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
index 409e5fe8ac4e0442392c03e5efbd9d5d44e33c72..89987a1b6e0e2b4fee96de2ba887013893938295 100644 (file)
@@ -1,2 +1,4 @@
 etc/system-release
 etc/issue
+srv/web/ipfire/cgi-bin/connections.cgi
+usr/lib/gconv
diff --git a/config/rootfiles/packages/flac b/config/rootfiles/packages/flac
new file mode 100644 (file)
index 0000000..d5ca870
--- /dev/null
@@ -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 (file)
index 0000000..9efbc1f
--- /dev/null
@@ -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 (file)
index 0000000..e53330e
--- /dev/null
@@ -0,0 +1,2 @@
+etc/minidlna.conf
+usr/sbin/minidlna
index fbd7fcd7cd5adbd325f20d7330644e97edcf254d..1edf3e5d437ed7f4237de3b33a045232fd9f77d4 100644 (file)
@@ -133,6 +133,11 @@ if ($netsettings{'BLUE_DEV'}) {
        }
 }
 
+# Add Orange Firewall Interface
+push(@network, $netsettings{'ORANGE_ADDRESS'});
+push(@masklen, "255.255.255.255" );
+push(@colour, ${Header::colourfw} );
+
 # Add Orange Network
 if ($netsettings{'ORANGE_DEV'}) {
        push(@network, $netsettings{'ORANGE_NETADDRESS'});
@@ -326,9 +331,13 @@ foreach my $line (@conntrack) {
 
        # Source and destination.
        my $sip;
+       my $sip_ret;
        my $dip;
+       my $dip_ret;
        my $sport;
+       my $sport_ret;
        my $dport;
+       my $dport_ret;
        my @packets;
        my @bytes;
 
@@ -344,16 +353,32 @@ foreach my $line (@conntrack) {
 
                switch ($key) {
                        case "src" {
-                               $sip = $val;
+                               if ($sip == "") {
+                                       $sip = $val;
+                               } else {
+                                       $dip_ret = $val;
+                               }
                        }
                        case "dst" {
-                               $dip = $val;
+                               if ($dip == "") {
+                                       $dip = $val;
+                               } else {
+                                       $sip_ret = $val;
+                               }
                        }
                        case "sport" {
-                               $sport = $val;
+                               if ($sport == "") {
+                                       $sport = $val;
+                               } else {
+                                       $dport_ret = $val;
+                               }
                        }
                        case "dport" {
-                               $dport = $val;
+                               if ($dport == "") {
+                                       $dport = $val;
+                               } else {
+                                       $sport_ret = $val;
+                               }
                        }
                        case "packets" {
                                push(@packets, $val);
@@ -370,17 +395,11 @@ foreach my $line (@conntrack) {
        my $sserv = '';
        if ($sport < 1024) {
                $sserv = uc(getservbyport($sport, lc($l4proto)));
-               if ($sserv ne '') {
-                       $sserv = "&nbsp;($sserv)";
-               }
        }
 
        my $dserv = '';
        if ($dport < 1024) {
                $dserv = uc(getservbyport($dport, lc($l4proto)));
-               if ($dserv ne '') {
-                       $dserv = "&nbsp;($dserv)";
-               }
        }
 
        my $bytes_in = format_bytes($bytes[0]);
@@ -389,6 +408,49 @@ foreach my $line (@conntrack) {
        # Format TTL
        $ttl = format_time($ttl);
 
+       my $sip_extra;
+       if ($sip ne $sip_ret) {
+               $sip_extra = "<font color='#FFFFFF'>&gt;</font> ";
+               $sip_extra .= "<a href='/cgi-bin/ipinfo.cgi?ip=$sip_ret'>";
+               $sip_extra .= " <font color='#FFFFFF'>$sip_ret</font>";
+               $sip_extra .= "</a>";
+       }
+
+       my $dip_extra;
+       if ($dip ne $dip_ret) {
+               $dip_extra = "<font color='#FFFFFF'>&gt;</font> ";
+               $dip_extra .= "<a href='/cgi-bin/ipinfo.cgi?ip=$dip_ret'>";
+               $dip_extra .= " <font color='#FFFFFF'>$dip_ret</font>";
+               $dip_extra .= "</a>";
+       }
+
+
+       my $sport_extra;
+       if ($sport ne $sport_ret) {
+               my $sserv_ret = '';
+               if ($sport_ret < 1024) {
+                       $sserv_ret = uc(getservbyport($sport_ret, lc($l4proto)));
+               }
+
+               $sport_extra = "<font color='#FFFFFF'>&gt;</font> ";
+               $sport_extra .= "<a href='http://isc.sans.org/port_details.php?port=$sport_ret' target='top' title='$sserv_ret'>";
+               $sport_extra .= " <font color='#FFFFFF'>$sport_ret</font>";
+               $sport_extra .= "</a>";
+       }
+
+       my $dport_extra;
+       if ($dport ne $dport_ret) {
+               my $dserv_ret = '';
+               if ($dport_ret < 1024) {
+                       $dserv_ret = uc(getservbyport($dport_ret, lc($l4proto)));
+               }
+
+               $dport_extra = "<font color='#FFFFFF'>&gt;</font> ";
+               $dport_extra .= "<a href='http://isc.sans.org/port_details.php?port=$dport_ret' target='top' title='$dserv_ret'>";
+               $dport_extra .= " <font color='#FFFFFF'>$dport_ret</font>";
+               $dport_extra .= "</a>";
+       }
+
        print <<END;
        <tr>
                <td align='center'>$l4proto</td>
@@ -396,21 +458,25 @@ foreach my $line (@conntrack) {
                        <a href='/cgi-bin/ipinfo.cgi?ip=$sip'>
                                <font color='#FFFFFF'>$sip</font>
                        </a>
+                       $sip_extra
                </td>
                <td align='center' bgcolor='$sip_colour'>
-                       <a href='http://isc.sans.org/port_details.php?port=$sport' target='top'>
-                               <font color='#FFFFFF'>$sport$sserv</font>
+                       <a href='http://isc.sans.org/port_details.php?port=$sport' target='top' title='$sserv'>
+                               <font color='#FFFFFF'>$sport</font>
                        </a>
+                       $sport_extra
                </td>
                <td align='center' bgcolor='$dip_colour'>
                        <a href='/cgi-bin/ipinfo.cgi?ip=$dip'>
                                <font color='#FFFFFF'>$dip</font>
                        </a>
+                       $dip_extra
                </td>
                <td align='center' bgcolor='$dip_colour'>
-                       <a href='http://isc.sans.org/port_details.php?port=$dport' target='top'>
-                               <font color='#FFFFFF'>$dport$dserv</font>
+                       <a href='http://isc.sans.org/port_details.php?port=$dport' target='top' title='$dserv'>
+                               <font color='#FFFFFF'>$dport</font>
                        </a>
+                       $dport_extra
                </td>
                <td align='center'>
                        $bytes_in / $bytes_out
diff --git a/lfs/flac b/lfs/flac
new file mode 100644 (file)
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)
index d661b193b4f0a9b2d7bb8f4dce97e118eb8df210..9c9651cde4f6afbe68a08a389fe16bcf826f8f00 100644 (file)
--- a/lfs/icecc
+++ b/lfs/icecc
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 0.9.6
+VER        = 0.9.7
 
 THISAPP    = icecc-$(VER)
 DL_FILE    = $(THISAPP).tar.bz2
@@ -32,7 +32,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = icecc
-PAK_VER    = 2
+PAK_VER    = 3
 
 DEPS       = ""
 
@@ -44,7 +44,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c6dacb3f28eade45f603a99245cde4fd
+$(DL_FILE)_MD5 = c06900c2f4011428d0d48826a04f74fb
 
 install : $(TARGET)
 
@@ -78,6 +78,7 @@ $(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/icecream-rename-scheduler.patch
+       cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/icecream-0.9.7-platform-arm.patch
        cd $(DIR_APP) && ./configure \
                                --prefix=/opt/icecream
        cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
diff --git a/lfs/libexif b/lfs/libexif
new file mode 100644 (file)
index 0000000..e39508d
--- /dev/null
@@ -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 (file)
index 0000000..d93a5c2
--- /dev/null
@@ -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)
index 9d5ad08208b0fc4a0bc55977859d7784a8c4c3d6..f6aeac7a8fca79659e2f01f4aba4e6e6ce8ed4a0 100644 (file)
--- a/lfs/nasm
+++ b/lfs/nasm
 
 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 b827b6fdbb386a6fde002562c18d60e83f8e039b..450ee003b463d79ef0a3d946a4b17d4d30cea0fe 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -483,6 +483,7 @@ buildipfire() {
   ipfiremake libnl
   ipfiremake libidn
   ipfiremake libjpeg
+  ipfiremake libexif
   ipfiremake libpng
   ipfiremake libtiff
   ipfiremake libart
@@ -625,6 +626,7 @@ buildipfire() {
   ipfiremake libogg
   ipfiremake libvorbis
   ipfiremake libdvbpsi
+  ipfiremake flac
   ipfiremake lame
   ipfiremake sox
   ipfiremake libshout
@@ -756,6 +758,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 (file)
index 0000000..932a761
--- /dev/null
@@ -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 (file)
index 0000000..9d47af3
--- /dev/null
@@ -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 (file)
index 0000000..032fa5e
--- /dev/null
@@ -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 (file)
index 0000000..7fdbf80
--- /dev/null
@@ -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 (file)
index 0000000..0f4c104
--- /dev/null
@@ -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 (file)
index 0000000..89c5921
--- /dev/null
@@ -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++) {
diff --git a/src/patches/icecream-0.9.7-platform-arm.patch b/src/patches/icecream-0.9.7-platform-arm.patch
new file mode 100644 (file)
index 0000000..53402f0
--- /dev/null
@@ -0,0 +1,22 @@
+Index: services/scheduler.cpp
+===================================================================
+--- services/scheduler.cpp     (revision 1310078)
++++ services/scheduler.cpp     (working copy)
+@@ -52,7 +52,7 @@
+ #include "config.h"
+ #include "bench.h"
+-#define DEBUG_SCHEDULER 0
++#define DEBUG_SCHEDULER 1
+ /* TODO:
+    * leak check
+@@ -613,6 +613,8 @@
+       platform_map.insert( make_pair( string( "ppc" ), string( "ppc64" ) ) );
+       platform_map.insert( make_pair( string( "s390" ), string( "s390x" ) ) );
++
++      platform_map.insert( make_pair( string( "armv5tel"), string( "armv7l" ) ) );
+     }
+   multimap<string, string>::const_iterator end = platform_map.upper_bound( target );