summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2012-11-07 20:42:01 +0000
committerMike Frysinger <vapier@gentoo.org>2012-11-07 20:42:01 +0000
commit3b3e32ff196f81e40d416a4b04f683d9f9220c63 (patch)
treefee77c15207f28b9c7610d84580ec62cb1b41b85 /net-misc/mediatomb
parentSlot gstreamer dependencies in preparation for gstreamer-1.0. (diff)
downloadhistorical-3b3e32ff196f81e40d416a4b04f683d9f9220c63.tar.gz
historical-3b3e32ff196f81e40d416a4b04f683d9f9220c63.tar.bz2
historical-3b3e32ff196f81e40d416a4b04f683d9f9220c63.zip
Fix inotify and hard links. Add support for caching thumbnails.
Package-Manager: portage-2.2.0_alpha142/cvs/Linux x86_64 Manifest-Sign-Key: 0xFB7C4156
Diffstat (limited to 'net-misc/mediatomb')
-rw-r--r--net-misc/mediatomb/ChangeLog9
-rw-r--r--net-misc/mediatomb/Manifest31
-rw-r--r--net-misc/mediatomb/files/mediatomb-0.12.1-inotify-hard-links.patch34
-rw-r--r--net-misc/mediatomb/files/mediatomb-0.12.1-thumb-cache.patch233
-rw-r--r--net-misc/mediatomb/mediatomb-0.12.1-r4.ebuild136
5 files changed, 428 insertions, 15 deletions
diff --git a/net-misc/mediatomb/ChangeLog b/net-misc/mediatomb/ChangeLog
index 133f9260bedb..7220a163c0cd 100644
--- a/net-misc/mediatomb/ChangeLog
+++ b/net-misc/mediatomb/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for net-misc/mediatomb
# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/mediatomb/ChangeLog,v 1.38 2012/10/04 03:52:25 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/mediatomb/ChangeLog,v 1.39 2012/11/07 20:41:56 vapier Exp $
+
+*mediatomb-0.12.1-r4 (07 Nov 2012)
+
+ 07 Nov 2012; Mike Frysinger <vapier@gentoo.org>
+ +files/mediatomb-0.12.1-inotify-hard-links.patch,
+ +files/mediatomb-0.12.1-thumb-cache.patch, +mediatomb-0.12.1-r4.ebuild:
+ Fix inotify and hard links. Add support for caching thumbnails.
04 Oct 2012; Mike Frysinger <vapier@gentoo.org> mediatomb-0.12.1-r3.ebuild:
Require newer spidermonkey #437038 by BT.
diff --git a/net-misc/mediatomb/Manifest b/net-misc/mediatomb/Manifest
index f8b1d77dd49b..5cfffb086682 100644
--- a/net-misc/mediatomb/Manifest
+++ b/net-misc/mediatomb/Manifest
@@ -6,34 +6,37 @@ AUX mediatomb-0.12.0.config 6180 SHA256 cb43e92639e5e53908567c050c9a2fc0e5c349fd
AUX mediatomb-0.12.0.initd 541 SHA256 8dfe99d619a3384b2fb9105051daae1fc6c88402364d4203b21344f766a6b696 SHA512 5aab06ea989986350f6002f67946a9abd0e3c4ec538f4b143454ed92fc5384344db862cf190b632f6b343b4e5fa268b55922ec1eafa3859705185c14af066e47 WHIRLPOOL c07afad49c46c633e32ac33a82de8316fc0ccf2dbdb65662f79bcf40b4a5e991ca710648537278f4e6eb82afd34b47df22c713b86ca6bececf79183126cfdac8
AUX mediatomb-0.12.1-gcc46.patch 297 SHA256 58379e733518bc5ef61fee9156d430ef283278eb3a69f6bdad4cad794df75146 SHA512 d200eaa003b2054f1d0ed07ae4c3660903fb4355d745573941bf2a6fe4dbff24c360ae758d062fab84ddea1a6388f70b79ac2f7c37beb74115a12794b238879a WHIRLPOOL 5b7773b014c939d566137ba3a0098c3d103acdb8b45f8fc8b198efb204cd0a89a8320313e33c0ddffd67dc68017aa8382ddf0fc84668a445a3215d41a687f1bb
AUX mediatomb-0.12.1-gcc47.patch 4128 SHA256 ddcfa266ecb57f522575b42b2f96171eb4e0d634a61bafd2d03ac0d672f7f166 SHA512 8b9f9748be42b172f420f49aaf929bc9ca7e94e0924f8147fb4bed72e299cfdc308378f2a76905a1ce7734899b851938f6b7721a7d30375644448c59c6bfcbdd WHIRLPOOL ba05083c138157a8d02ec6208e8f0c9bc9c0339df6de5407b5f7fe60cfb7c2a4da0ed02c0a06fa6e494eed3402e232d49d8839663c77d90f23422c0b06dba43d
+AUX mediatomb-0.12.1-inotify-hard-links.patch 1483 SHA256 7a7475305d0d5376884e31c5220e9cad281a401a5ee6a4cf4243f084e9975832 SHA512 f9062fc0fa86045b325bbc38a9b31142c1d6e6227e2560f6429390917f675e5d9b3e4910b957b9bf3337b88f79cd2f66353fcd5460218a619303342670592206 WHIRLPOOL 4945f0bf2e21054764c8eeeebb398d3a8817b518f2ad1063ebc8464d73fb1a8dfae4d0d6d871726731fbb225c3d4a2d0155896e068dd9e444ac3d884b4b479d9
AUX mediatomb-0.12.1-libav7.patch 1983 SHA256 c6523e8bf5e2da89b7475d6777ef9bffe7d089752ef2f7b27b5e39a4130fb0ff SHA512 afe40ee21c21d2e5cc97b7df84e1805da490a0f74135aada4294ded078205a0f625e8f92391acef72f5610d8b19ae2d52a53aff051a0f9c65e16d31239d6e66a WHIRLPOOL 34f8111a3e31027a96505e39380e1779810f0b73203b28a9046e223493a7bf2460d11335be06646012ed9577e92023d91e0bc46b55d0ab9b9c2be04bc95aaf25
AUX mediatomb-0.12.1-libextractor.patch 21074 SHA256 19f71fc190683056bb5f920a012bb06f10ea8c8680702fa1e5f166293aaf14bd SHA512 c71f872b98f8928baf5c53e5dad59efea622429f8b9e8b257afef53f263b7090fc986dc29e68a2d6164f60c1b74080804b4550b99f5613533001246a5336a77f WHIRLPOOL fb6c4331215d1cf13542627f0b961515e0c6aee4e7d10fb8228b06a4db71f75dd0a7276678b74a175c313d081a58e74734d11dd4620e3234da2054e450332be7
AUX mediatomb-0.12.1-libmp4v2.patch 5893 SHA256 d39c2f9aab051c5447461718fd0ec72cf5982f6c920a4a985a50831f34babe84 SHA512 8e712c13de6e129a9a0b0805fc00c3af92bc3cedb583fa3e068c27d57ed52ad3b4c777bd92a6b073e2fee88376a28ce4d2467e97ab8ae2f9ea3ed7a64a0e45d3 WHIRLPOOL 6d8c1c06db3aed67f920f40176cd389ac84d7294b78ec5ca3f61920977fde8cbe49dac6bffe1050f97aca15af5fa4a743d947e3cba8f6a3ef9b0370bff7dac67
AUX mediatomb-0.12.1-mozjs185.patch 22839 SHA256 3960961f1fbe46baff3956ea2fa94b4dc193c0d278b8646cda1f4cee26812f59 SHA512 df66b6818ec28aae494b12c50981cc9b2762796a4af6f2c9d1dc813148f2fd97c8816851a3fb871213e88dcd1a331a06fae9f20a23df9302c9b41f2446fbd28c WHIRLPOOL 5191c0a823e2b9b054c9a5ec9b8d1f92dc5038bee9e0043e13d10b92740f3f69c05cffcb1dcb67273ad1d8443149f2e6a36d70638e37fd28346ec0ddf642cc9f
AUX mediatomb-0.12.1-mozjs187.patch 8019 SHA256 4f502ead6b2620d188b2e8eeb01e353960d0527ffa46edb7dd73793d2e1343e2 SHA512 dc647eb34e508ac3ccdfc578b30e181da5aad60677a912e7a02967226a22e9f61f3123d84422c9ccd27cbba451b928b939cab3550286342bb662a319b097c66b WHIRLPOOL c09ccd53ca0d619e71e7a1fe3fb223896c8176f212b489012bdc6f5e894ac375622168448225b6cf0527ce527e426a26360ea22a520a4c66bc1a804ed0eb616a
AUX mediatomb-0.12.1-system-uuid.patch 954 SHA256 ec6ad3d71a7ea9ed3adb284aaa6bf57f435f05738f4e20d1f49eefa7e8051780 SHA512 68ac4bca71ac5f2e52daffb58d54199ddc87a7cfd02b89e93bc0c1b4496b95f6c82c0d362d36f37d3a9076c3bfb5d018df809fb485ca687923e5e1b78e6bf4bf WHIRLPOOL 88adbe3f19493314609dea727c6b57b272095396358a14921e966cf3cfab86a3754fe5321d855b3980f7c22a38bf7c18d774b58a60f8a82abed945dc047b24f9
+AUX mediatomb-0.12.1-thumb-cache.patch 8315 SHA256 425a78297827ab2f5a2cdfbe03ad588329df243a4e1016b5edd9c67a4c9aa204 SHA512 37f9ce5f5a5fad93d3772f874d98ff5d3e9e4d745e7caea4aa3b2815aaad8aeaf9cbe649381df1f3f87b6fd5f4c6a2a5c795235d6b60ef70340d2196419b419b WHIRLPOOL def05bec402846a6d576f1a3956ed748d7d82273b003cee93f5b02b0cb34f9e39c270db7827f2b191edefbb316fec6b86a8042edab1a7c382fe6b70c85643067
AUX mediatomb-0.12.1.initd 954 SHA256 7a12a5e4aac11e1e3abae9522ecea10527c813b12b51258f47518868c23c94c4 SHA512 6d8e3f95a8342e5a8097f17f1b44a52afad6c89cff59b8cbe8ccc947bdc41e4c20ecfc0f40fee3b64617b240b7f5d3d8e9c1c129eeb9cf5a7686982cdfddafe9 WHIRLPOOL 7d019d5f13278b3bf8755b79bb191beeaed7daf5843a24aa0bbe67dda6aa029b71171a0276322836c0ffaa5f43f0c39b0af1f0cb8f242667748b01e097ba4de0
DIST mediatomb-0.12.1.tar.gz 1240612 SHA256 31163c34a7b9d1c9735181737cb31306f29f1f2a0335fb4f53ecccf8f62f11cd SHA512 36e7269a532a79c91b4ea7be36f92cbefa913a1f856e422e46fe2b97ee7a569dd20c38b0cbe651a8e7faacde892ea18f3cac66c3c0737480c44f9b9bc3a45438 WHIRLPOOL 6a9e294aa9f8f40850863a86bae4fd6a81d198d7f4cf34d67a6a0cd568c387ef0f0bd5a3524c7bc05cb304f4e86dd0c12dc773bd1034c1924af6919cc740177b
DIST mediatomb_0.12.1-4.debian.tar.gz 34161 SHA256 b1e48d01f4f99362ef554c9220df21c48f6b76ad716e29427948a524e5c84d90 SHA512 21f876de3ec0b24bfcb37d387b5337d574f2e62e12944547f0a2e69e34532e296097fd04cce9941e994c3823a7bb863172db4fc3024d490f2a2359b7f0adb079 WHIRLPOOL ad38bc64411f1aac25672c522b862401897f0e4225ea21bab317a1c3311ef87a3e688f6ea1abb5a30eeb4cb3165dabbbff158eb5d4267dba901a54f15017078d
EBUILD mediatomb-0.12.1-r1.ebuild 3792 SHA256 f2e6e0aca325d095d92f6f6bba51b398461151ebbb6495fff5da1719bd0a3c48 SHA512 07fd3cf9d22e5f28525dceae5889b60e5846e14bfd4abd0b5ea893b7c6e99caad7f67285bab147f3dc9b7b0e6ce48c2185dd99dc134c8b7016bdebd27164441d WHIRLPOOL aad1ca88de7d922d25dbc7dd1278c337dd7e4e90ac1e891cf7d60986f110b524400835c03bdd10493d99b216680c3be3a78bc527baad994ba591f1276ef74866
EBUILD mediatomb-0.12.1-r2.ebuild 3889 SHA256 923070cbdadb4f1b04e604371734a28f3a6db7ae3270e27c880dddd432e5cb06 SHA512 33217cf659c746244293bbcfdcec90e6499cba612cbbfe8d12f425be383cd28ee24a928ebfafb239bb47eebade6fc75821295ac0bc3972c8f720f12b0cf00d95 WHIRLPOOL 6ba2c8038eb3213ed552a6772d9782b45f5cfa69a46912d55dd273fcb2df8927edcb94523077d1aa45d8fbe14dc07686aec45f76de648df181d5691702c62488
EBUILD mediatomb-0.12.1-r3.ebuild 4113 SHA256 5c16826cfedc24d7428f47e19295c533f2706cc8c66597f16073b867214429bc SHA512 910146f4c7c768d0f2d7d766ada937b332f509984ec9c4a69f7e1493292d5f433dfc5a428afca97081b49b09af93e361199b145b5e6f88a7ff96a56f20d962f1 WHIRLPOOL 29689bc441ff1d0550ee3ca76cdf6fd7e0225c5aef680bd20ab763b31f4bbbee10595b74879356167359f9d06d42e008df6595168b948d61c6695e430e4e3fd8
-MISC ChangeLog 6939 SHA256 8e6ca95c392fcbb32a5b3ac49b7c1d330965b11a63231375d8e73f690c15c648 SHA512 be618c09fd7f04775b0c183b0cfacbf3a324264ea0affdbc703b96ef3a0d6e58412ce67c85097e00f21ab58c7930daaf382eb0a6f904d44b3cf7552dec509725 WHIRLPOOL aba146b7d192a1e8946d09a7cf47483e031c7c0e5da202b0c21e2e7d91d4dc72305936c9ccdada88bdfc0979956d308644ae63e5603a468c63c74f8358d56eb9
+EBUILD mediatomb-0.12.1-r4.ebuild 4210 SHA256 6faef12c499320937470f6b882682c61158538e1ff90d42ba179dd453e9958fb SHA512 6efa0610f465e6a53a7d5ce86485cfe7c88bcc1dbf4104b35abfe0783a239304173a40978377faa25164978605d5807150147a15ca7be6220f5dd31c0fc2fcce WHIRLPOOL 89233e7c10813a6322af67f28957549f940a58c49db09144545ae0bf9d145f023b33c6ed3f6d305b52f5388ec362d01c6d137f33b21a9734de113a95b4994c08
+MISC ChangeLog 7219 SHA256 516233a32a1d99307925fdf036519f3ab813dff895b5d02d29a8b5c0d35c0b05 SHA512 59eeefaa29d40aeca036638ff94f0870374c9103c2d0804eadc26be1c3e8b7a6d094f27b3b5b0fa67ac0babb82b064dac99e2bd1385acd9bfa31857f9a79c926 WHIRLPOOL 3a32f4ae46e4ee3c1aa0cef7f6e6d8f0ede2e12661ef25e66e77d5fa6e48d0080ec5e0c302e83e6245539b0c5245797437dba6a82d22d4cb50b3f71d38634cd1
MISC metadata.xml 868 SHA256 1d1c5d3778c67556255786a5082e7c45b598a2edf20159b6e337ed04ebe15bd4 SHA512 a20d44b05d6a4ebf31deed0289a4d7f0d96a8a1ff370a4bbec1d1f8b5b12823a047e846a95e24fd0e47c0020478d3ff0402642309a8fb8554db841db2fa89e05 WHIRLPOOL c68c00fe9cf9902c4c3a4edef9d223b6a68627c1c26aede016aaed4b7d8f7bcae6e280a9ddf8dea435e53c017a56eec303b3aab0d72bae0ca2c59e063d8f1720
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
-iQIcBAEBCAAGBQJQbQf7AAoJELEHsLL7fEFWJy4QAJJUU3LlHPvCxVSyhm/gr9cK
-zNhRSTirb40dRtIoYoFtcMOM0p/pkLFJyNv/qOIDVTxdkWzsN1Y8h83dq++DHpKY
-NAoGricx+wPnsz3iHG5M2lR2Thf4YRcG3vTFJkXW5tiJxskj1AU9iQ+uCpKdEFEG
-1LBVxD+dbLU4i1TCqzzI8g8/o+TqQ3uOHsipC6riFsb8S7yQmlETS4y+R8hVvMWe
-cSvRgA9KOZResRMS6cY7dK1GXlq0YqB0MKAEJS+4UEf6K+Hap3K/LP3hc5qHnbL3
-doOLHiym0cFX++PRTu9mSxZnRgyziRF/jtNSGlCq1VHb9iii+W88iuavwtvxYvpD
-N8n1SD7hkIvPQ1pwosri7jfVQISDuw6Di1oQii3e3QegFKxjHV/8T6RLqJCU46mV
-rxOpAlt7dTMF+iS2DOOtiTUwDYR70NtbfEhxNElC7+a624RaxsWivZC8V/Lb8vHi
-bsCsDOw8Drcw8OH9j+/81UI1MY5nRRE43UsEsmW2oacfwG5KAzp65oGTguSn9Gtv
-L6mlUL4UOxE8FwWyx2avF6dzlQkc6hVP6bAYCkbcbk7MSQdutuw8uOkaFrSFmE3i
-p06R9JviT3NZGuhjL5VFLRilFNzIVBxcgy5H9bj9aAeFsuW8AL9L8miKje3C4J7J
-9iYoDH7t3yI9i0AUft0u
-=mIXa
+iQIcBAEBCAAGBQJQmsfKAAoJELEHsLL7fEFWqr0P/19Il0ZNN8KrBWALGsZEAz7J
+IUSH9uQCwsWeWoiRJddv72by4KwhhD3HbrwMykHWyLw3ry1u5Bffva33/z9x59Qk
+Rwd9sGo8pDZB1Y5v5mxtlX06NFHLXShGo/v2cEOXPuUe+rFye4U1P9ujLhSD/4vd
+RAMj+H2rYB0DDZdapnTQlWlbbQe0cowtyo7/DDKuHnBAlI88bS74tnQeIOkhntw5
+GswNLgduymGo7HMvkcZScMf6+jKNklFwjbbMtDXCJywngCCcIebGZgNWbEekbI+R
+Ung3nUMs9vxlhQktn5A+7eNpF4N+Pbotq6ttSOhPpzdYQ+tTewN5m2OyNaGDb5i9
+1/T2TppSLaBcILX6Vrg6Gqosrdm1kTda4SIV9ufk+l3DU1jZa/pq6+bK80CRBpex
+GE/CTvf4zKcARMzuUotq5r9FlqKH11Co89MIcz2J7+YELbnFXqt0izA2aF6L8u1I
+hy9GbTpEE0nd9F1OZyBSQAIIYmtw+lS1xsmphEgnY8PRqlHM6MFOfJzgbqIBgeC6
+I551QhpR9KeP9j1HUczRgctaWjUV0MyVt7FoDuNzBU2iT3IGHJ9XpOUro4TR66JS
+fqLxVed+S2SRabbXNYRvtayAGPqTCDKlGHgYuklsfjT+rIT6BeFlCFHJGl2OnDhd
+ccoenN7JKTIW4XOckTuO
+=8zer
-----END PGP SIGNATURE-----
diff --git a/net-misc/mediatomb/files/mediatomb-0.12.1-inotify-hard-links.patch b/net-misc/mediatomb/files/mediatomb-0.12.1-inotify-hard-links.patch
new file mode 100644
index 000000000000..af9a887befe0
--- /dev/null
+++ b/net-misc/mediatomb/files/mediatomb-0.12.1-inotify-hard-links.patch
@@ -0,0 +1,34 @@
+make sure new hard links get processed like new files by handling
+the IN_CREATE flag properly
+
+patch by Mike Frysinger
+
+--- a/src/autoscan_inotify.cc
++++ b/src/autoscan_inotify.cc
+@@ -281,7 +284,7 @@
+ }
+ }
+
+- if (adir != nil && mask & (IN_DELETE | IN_DELETE_SELF | IN_MOVE_SELF | IN_CLOSE_WRITE | IN_MOVED_FROM | IN_MOVED_TO | IN_UNMOUNT))
++ if (adir != nil && mask & (IN_DELETE | IN_DELETE_SELF | IN_MOVE_SELF | IN_CLOSE_WRITE | IN_MOVED_FROM | IN_MOVED_TO | IN_UNMOUNT | IN_CREATE))
+ {
+ String fullPath;
+ if (mask & IN_ISDIR)
+@@ -289,7 +292,7 @@
+ else
+ fullPath = path;
+
+- if (! (mask & IN_MOVED_TO))
++ if (! (mask & (IN_MOVED_TO | IN_CREATE)))
+ {
+ log_debug("deleting %s\n", fullPath.c_str());
+
+@@ -312,7 +315,7 @@
+ if (objectID != INVALID_OBJECT_ID)
+ cm->removeObject(objectID);
+ }
+- if (mask & (IN_CLOSE_WRITE | IN_MOVED_TO))
++ if (mask & (IN_CLOSE_WRITE | IN_MOVED_TO | IN_CREATE))
+ {
+ log_debug("adding %s\n", path.c_str());
+ // path, recursive, async, hidden, low priority, cancellable
diff --git a/net-misc/mediatomb/files/mediatomb-0.12.1-thumb-cache.patch b/net-misc/mediatomb/files/mediatomb-0.12.1-thumb-cache.patch
new file mode 100644
index 000000000000..5b26de0f271a
--- /dev/null
+++ b/net-misc/mediatomb/files/mediatomb-0.12.1-thumb-cache.patch
@@ -0,0 +1,233 @@
+http://sourceforge.net/tracker/?func=detail&aid=3291468&group_id=129766&atid=715782
+
+[PATCH] Add the cache feature of ffmpegthumbnailer.
+
+I want the cache feature of ffmpegthumbnailer because my machine
+is not powerful :-(
+So I created this patch for the cache feature.
+
+This patch adds a new option "cache-dir" in config.xml.
+If not specifying any string, the cache feature is disable.
+And specifying some directory, the cache feature is enable
+and the cache files will be created under the directory.
+
+Signed-off-by: Ken'ichi Ohmichi <ken1ohmichi@gmail.com>
+---
+diff --git a/src/common.h b/src/common.h
+index d1998b3..358f4d1 100644
+--- a/src/common.h
++++ b/src/common.h
+@@ -367,6 +367,8 @@
+ #define DEFAULT_FFMPEGTHUMBNAILER_FILMSTRIP_OVERLAY YES
+ #define DEFAULT_FFMPEGTHUMBNAILER_WORKAROUND_BUGS NO
+ #define DEFAULT_FFMPEGTHUMBNAILER_IMAGE_QUALITY 8
++ #define DEFAULT_FFMPEGTHUMBNAILER_CACHE_DIR_ENABLED YES
++ #define DEFAULT_FFMPEGTHUMBNAILER_CACHE_DIR ""
+ #endif
+
+ #if defined(HAVE_LASTFMLIB)
+diff --git a/src/config_manager.cc b/src/config_manager.cc
+index 8c975f8..2902090 100644
+--- a/src/config_manager.cc
++++ b/src/config_manager.cc
+@@ -1873,6 +1873,24 @@ void ConfigManager::validate(String serverhome)
+
+ NEW_INT_OPTION(temp_int);
+ SET_INT_OPTION(CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_IMAGE_QUALITY);
++
++ temp = getOption("/server/extended-runtime-options/ffmpegthumbnailer/"
++ "cache-dir", DEFAULT_FFMPEGTHUMBNAILER_CACHE_DIR);
++
++ NEW_OPTION(temp);
++ SET_OPTION(CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_CACHE_DIR);
++
++ temp = getOption("/server/extended-runtime-options/ffmpegthumbnailer/"
++ "cache-dir/attribute::enabled",
++ DEFAULT_FFMPEGTHUMBNAILER_CACHE_DIR_ENABLED);
++
++ if (!validateYesNo(temp))
++ throw _Exception(_("Error in config file: "
++ "invalid \"enabled\" attribute value in "
++ "ffmpegthumbnailer <cache-dir> tag"));
++
++ NEW_BOOL_OPTION(temp == YES ? true : false);
++ SET_BOOL_OPTION(CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_CACHE_DIR_ENABLED);
+ }
+ #endif
+
+diff --git a/src/config_manager.h b/src/config_manager.h
+index 52b9842..a447a60 100644
+--- a/src/config_manager.h
++++ b/src/config_manager.h
+@@ -110,6 +110,8 @@ typedef enum
+ CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_FILMSTRIP_OVERLAY,
+ CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_WORKAROUND_BUGS,
+ CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_IMAGE_QUALITY,
++ CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_CACHE_DIR_ENABLED,
++ CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_CACHE_DIR,
+ #endif
+ CFG_SERVER_EXTOPTS_MARK_PLAYED_ITEMS_ENABLED,
+ CFG_SERVER_EXTOPTS_MARK_PLAYED_ITEMS_STRING_MODE_PREPEND,
+diff --git a/src/metadata/ffmpeg_handler.cc b/src/metadata/ffmpeg_handler.cc
+index a637d9c..8e7ef23 100644
+--- a/src/metadata/ffmpeg_handler.cc
++++ b/src/metadata/ffmpeg_handler.cc
+@@ -50,6 +50,9 @@
+ // INT64_C is not defined in ffmpeg/avformat.h but is needed
+ // macro defines included via autoconfig.h
+ #include <stdint.h>
++#include <sys/stat.h>
++#include <errno.h>
++#include <string.h>
+
+ //#ifdef FFMPEG_NEEDS_EXTERN_C
+ extern "C"
+@@ -279,6 +282,118 @@ void FfmpegHandler::fillMetadata(Ref<CdsItem> item)
+ av_close_input_file(pFormatCtx);
+ }
+
++static bool _mkdir(const char *path)
++{
++ int ret = mkdir(path, 0777);
++
++ if (ret == 0) {
++ // Make sure we are +x in case of restrictive umask that strips +x.
++ struct stat st;
++ if (stat(path, &st)) {
++ log_warning("could not stat(%s): %s\n", path, strerror(errno));
++ return -1;
++ }
++ mode_t xbits = S_IXUSR | S_IXGRP | S_IXOTH;
++ if (!(st.st_mode & xbits)) {
++ if (chmod(path, st.st_mode | xbits)) {
++ log_warning("could not chmod(%s, +x): %s\n", path, strerror(errno));
++ return -1;
++ }
++ }
++ }
++
++ return ret;
++}
++
++static bool makeThumbnailCacheDir(String& path)
++{
++ char *path_temp = strdup(path.c_str());
++ char *last_slash = strrchr(path_temp, '/');
++ char *slash = last_slash;
++ bool ret = false;
++
++ if (!last_slash)
++ return ret;
++
++ // Assume most dirs exist, so scan backwards first.
++ // Avoid stat/access checks due to TOCTOU races.
++ errno = 0;
++ for (slash = last_slash; slash > path_temp; --slash) {
++ if (*slash != '/')
++ continue;
++ *slash = '\0';
++ if (_mkdir(path_temp) == 0) {
++ // Now we can forward scan.
++ while (slash < last_slash) {
++ *slash = DIR_SEPARATOR;
++ if (_mkdir(path_temp) < 0)
++ // Allow EEXIST in case of someone else doing `mkdir`.
++ if (errno != EEXIST)
++ goto done;
++ slash += strlen(slash);
++ }
++ if (slash == last_slash)
++ ret = true;
++ break;
++ } else if (errno == EEXIST) {
++ ret = true;
++ break;
++ } else if (errno != ENOENT) {
++ break;
++ }
++ }
++
++ done:
++ free(path_temp);
++ return ret;
++}
++
++static String getThumbnailCacheFilePath(String& movie_filename, bool create)
++{
++ Ref<ConfigManager> cfg = ConfigManager::getInstance();
++ String cache_dir = cfg->getOption(CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_CACHE_DIR);
++
++ if (cache_dir.length() == 0) {
++ String home_dir = cfg->getOption(CFG_SERVER_HOME);
++ cache_dir = home_dir + "/cache-dir";
++ }
++
++ cache_dir = cache_dir + movie_filename + "-thumb.jpg";
++ if (create && !makeThumbnailCacheDir(cache_dir))
++ cache_dir = "";
++ return cache_dir;
++}
++
++static bool readThumbnailCacheFile(String movie_filename, uint8_t **ptr_img, size_t *size_img)
++{
++ String path = getThumbnailCacheFilePath(movie_filename, false);
++ FILE *fp = fopen(path.c_str(), "rb");
++ if (!fp)
++ return false;
++
++ size_t bytesRead;
++ uint8_t buffer[1024];
++ *ptr_img = NULL;
++ *size_img = 0;
++ while ((bytesRead = fread(buffer, 1, sizeof(buffer), fp)) > 0) {
++ *ptr_img = (uint8_t *)realloc(*ptr_img, *size_img + bytesRead);
++ memcpy(*ptr_img + *size_img, buffer, bytesRead);
++ *size_img += bytesRead;
++ }
++ fclose(fp);
++ return true;
++}
++
++static void writeThumbnailCacheFile(String movie_filename, uint8_t *ptr_img, int size_img)
++{
++ String path = getThumbnailCacheFilePath(movie_filename, true);
++ FILE *fp = fopen(path.c_str(), "wb");
++ if (!fp)
++ return;
++ fwrite(ptr_img, sizeof(uint8_t), size_img, fp);
++ fclose(fp);
++}
++
+ Ref<IOHandler> FfmpegHandler::serveContent(Ref<CdsItem> item, int resNum, off_t *data_size)
+ {
+ *data_size = -1;
+@@ -288,6 +403,18 @@ Ref<IOHandler> FfmpegHandler::serveContent(Ref<CdsItem> item, int resNum, off_t
+ if (!cfg->getBoolOption(CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_ENABLED))
+ return nil;
+
++ if (cfg->getBoolOption(CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_CACHE_DIR_ENABLED)) {
++ uint8_t *ptr_image;
++ size_t size_image;
++ if (readThumbnailCacheFile(item->getLocation(),
++ &ptr_image, &size_image)) {
++ *data_size = (off_t)size_image;
++ Ref<IOHandler> h(new MemIOHandler(ptr_image, size_image));
++ free(ptr_image);
++ log_debug("Returning cached thumbnail for file: %s\n", item->getLocation().c_str());
++ return h;
++ }
++ }
+ #ifdef FFMPEGTHUMBNAILER_OLD_API
+ video_thumbnailer *th = create_thumbnailer();
+ image_data *img = create_image_data();
+@@ -318,6 +445,10 @@ Ref<IOHandler> FfmpegHandler::serveContent(Ref<CdsItem> item, int resNum, off_t
+ #endif // old api
+ throw _Exception(_("Could not generate thumbnail for ") +
+ item->getLocation());
++ if (cfg->getBoolOption(CFG_SERVER_EXTOPTS_FFMPEGTHUMBNAILER_CACHE_DIR_ENABLED)) {
++ writeThumbnailCacheFile(item->getLocation(),
++ img->image_data_ptr, img->image_data_size);
++ }
+
+ *data_size = (off_t)img->image_data_size;
+ Ref<IOHandler> h(new MemIOHandler((void *)img->image_data_ptr,
diff --git a/net-misc/mediatomb/mediatomb-0.12.1-r4.ebuild b/net-misc/mediatomb/mediatomb-0.12.1-r4.ebuild
new file mode 100644
index 000000000000..c51fd556fdc1
--- /dev/null
+++ b/net-misc/mediatomb/mediatomb-0.12.1-r4.ebuild
@@ -0,0 +1,136 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/mediatomb/mediatomb-0.12.1-r4.ebuild,v 1.1 2012/11/07 20:41:56 vapier Exp $
+
+EAPI="4"
+inherit autotools eutils linux-info user
+
+DEB_VER="4"
+DESCRIPTION="MediaTomb is an open source UPnP MediaServer"
+HOMEPAGE="http://www.mediatomb.cc/"
+SRC_URI="mirror://sourceforge/mediatomb/${P}.tar.gz
+ mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${PV}-${DEB_VER}.debian.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~x86"
+IUSE="+curl debug +exif +ffmpeg id3tag inotify +javascript lastfm libextractor +magic +mp4 mysql +sqlite +taglib thumbnail +zlib"
+REQUIRED_USE="
+ || ( mysql sqlite )
+ taglib? ( !id3tag ) id3tag? ( !taglib )
+"
+
+DEPEND="mysql? ( virtual/mysql )
+ id3tag? ( media-libs/id3lib )
+ javascript? ( >=dev-lang/spidermonkey-1.8.5 )
+ dev-libs/expat
+ taglib? ( media-libs/taglib )
+ sqlite? ( >=dev-db/sqlite-3 )
+ lastfm? ( >=media-libs/lastfmlib-0.4 )
+ exif? ( media-libs/libexif )
+ libextractor? ( media-libs/libextractor )
+ mp4? ( >=media-libs/libmp4v2-1.9.1_p479:0 )
+ ffmpeg? ( virtual/ffmpeg )
+ thumbnail? ( media-video/ffmpegthumbnailer[jpeg] )
+ curl? ( net-misc/curl )
+ magic? ( sys-apps/file )
+ sys-apps/util-linux
+ zlib? ( sys-libs/zlib )
+ virtual/libiconv"
+RDEPEND="${DEPEND}"
+
+pkg_setup() {
+ if use inotify ; then
+ if ! linux_config_exists || ! linux_chkconfig_present INOTIFY_USER ; then
+ ewarn "Please enable Inotify support in your kernel:"
+ ewarn " File systems --->"
+ ewarn " [*] Inotify support for userspace"
+ fi
+ fi
+ enewgroup mediatomb
+ enewuser mediatomb -1 -1 /dev/null mediatomb
+}
+
+src_prepare() {
+ local p dd="${WORKDIR}"/debian/patches
+ sed -i -r '/^[-+]{3} /s:[.][.]/::' "${dd}"/* || die
+ for p in $(<"${dd}"/series) ; do
+ epatch "${dd}"/${p}
+ done
+ epatch "${FILESDIR}"/${P}-libmp4v2.patch
+ epatch "${FILESDIR}"/${P}-system-uuid.patch #270830
+ if has_version ">=dev-lang/spidermonkey-1.8.7" ; then
+ epatch "${FILESDIR}"/${P}-mozjs187.patch #435394
+ fi
+ epatch "${FILESDIR}"/${P}-libextractor.patch #435394
+ epatch "${FILESDIR}"/${P}-inotify-hard-links.patch
+ epatch "${FILESDIR}"/${P}-thumb-cache.patch
+ eautoreconf
+}
+
+src_configure() {
+ local myconf=()
+ if use thumbnail ; then
+ elog "libextrator does not work with thumbnail, disabling libextrator"
+ myconf+=( --enable-ffmpegthumbnailer --enable-ffmpeg --disable-libextractor )
+ elif ! use thumbnail && use ffmpeg && use libextractor ; then
+ elog "libextrator does not work with ffmpeg, disabling libextrator"
+ myconf+=( --disable-ffmpegthumbnailer --enable-ffmpeg --disable-libextractor )
+ else
+ myconf+=(
+ $(use_enable thumbnail ffmpegthumbnailer)
+ $(use_enable ffmpeg)
+ $(use_enable libextractor)
+ )
+ fi
+
+ econf \
+ $(use_enable curl) $(use_enable curl youtube) \
+ $(use_enable debug tombdebug) \
+ $(use_enable exif libexif) \
+ $(use_enable id3tag id3lib) \
+ $(use_enable inotify) \
+ $(use_enable javascript libjs) \
+ $(use_enable lastfm lastfmlib) \
+ $(use_enable magic libmagic) \
+ $(use_enable mp4 libmp4v2) \
+ $(use_enable mysql) \
+ $(use_enable sqlite sqlite3) \
+ $(use_enable taglib) \
+ $(use_enable zlib) \
+ --enable-external-transcoding \
+ --enable-protocolinfo-extension \
+ "${myconf[@]}"
+}
+
+src_install() {
+ default
+
+ newinitd "${FILESDIR}"/${PN}-0.12.1.initd ${PN}
+ use mysql || sed -i -e "/use mysql/d" "${ED}"/etc/init.d/${PN}
+ newconfd "${FILESDIR}"/${PN}-0.12.0.confd ${PN}
+
+ insinto /etc/mediatomb
+ newins "${FILESDIR}/${PN}-0.12.0.config" config.xml
+ fperms 0600 /etc/mediatomb/config.xml
+ fowners mediatomb:mediatomb /etc/mediatomb/config.xml
+
+ keepdir /var/lib/mediatomb
+ fowners mediatomb:mediatomb /var/lib/mediatomb
+}
+
+pkg_postinst() {
+ if use mysql ; then
+ elog "MediaTomb has been built with MySQL support and needs"
+ elog "to be configured before being started."
+ elog "For more information, please consult the MediaTomb"
+ elog "documentation: http://mediatomb.cc/pages/documentation"
+ elog
+ fi
+
+ elog "To configure MediaTomb edit:"
+ elog "/etc/mediatomb/config.xml"
+ elog
+ elog "The MediaTomb web interface can be reached at (after the service is started):"
+ elog "http://localhost:49152/"
+}