From: "Johannes Huber" <johu@gmx.de>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/kde:master commit in: app-misc/strigi/, app-misc/strigi/files/
Date: Fri, 19 Aug 2011 15:37:36 +0000 (UTC) [thread overview]
Message-ID: <2780f3d1a0f2bb00f07c11f41ea91f76feef9e93.j0hu@gentoo> (raw)
commit: 2780f3d1a0f2bb00f07c11f41ea91f76feef9e93
Author: Johannes Huber <johu <AT> gmx <DOT> de>
AuthorDate: Fri Aug 19 12:55:22 2011 +0000
Commit: Johannes Huber <johu <AT> gmx <DOT> de>
CommitDate: Fri Aug 19 12:55:22 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/kde.git;a=commit;h=2780f3d1
[app-misc/strigi] Fix build with clucene-2.3
---
app-misc/strigi/files/strigi-0.7.5-clucene23.patch | 207 ++++++++++++++++++++
app-misc/strigi/files/strigi-0.7.5-ffmpeg.patch | 166 ++++++++++++++++
app-misc/strigi/strigi-0.7.5-r3.ebuild | 94 +++++++++
3 files changed, 467 insertions(+), 0 deletions(-)
diff --git a/app-misc/strigi/files/strigi-0.7.5-clucene23.patch b/app-misc/strigi/files/strigi-0.7.5-clucene23.patch
new file mode 100644
index 0000000..0316671
--- /dev/null
+++ b/app-misc/strigi/files/strigi-0.7.5-clucene23.patch
@@ -0,0 +1,207 @@
+diff -upr strigi-0.7.5.orig/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexreader.cpp strigi-0.7.5/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexreader.cpp
+--- strigi-0.7.5.orig/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexreader.cpp 2011-06-02 11:29:26.000000000 +0200
++++ strigi-0.7.5/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexreader.cpp 2011-08-18 02:43:46.000000000 +0200
+@@ -56,7 +56,6 @@ using lucene::document::DocumentFieldEnu
+ using Strigi::IndexedDocument;
+ using Strigi::Variant;
+ using Strigi::FieldRegister;
+-typedef boost::shared_ptr<lucene::index::Term> LuceneTerm;
+
+ using namespace std;
+
+@@ -101,9 +100,9 @@ public:
+ CLuceneIndexReader& reader;
+ Private(CLuceneIndexReader& r) :reader(r) {}
+
+- static LuceneTerm createTerm(const wchar_t* name, const string& value);
+- static LuceneTerm createKeywordTerm(const wchar_t* name, const string& value);
+- static LuceneTerm createWildCardTerm(const wchar_t* name, const string& value);
++ static Term* createTerm(const wchar_t* name, const string& value);
++ static Term* createKeywordTerm(const wchar_t* name, const string& value);
++ static Term* createWildCardTerm(const wchar_t* name, const string& value);
+ Query* createQuery(const Strigi::Query& query);
+ Query* createSimpleQuery(const Strigi::Query& query);
+ static Query* createSingleFieldQuery(const string& field,
+@@ -187,12 +186,12 @@ CLuceneIndexReader::mapId(const char* id
+ }
+ #endif
+
+-LuceneTerm
++Term*
+ CLuceneIndexReader::Private::createWildCardTerm(const wchar_t* name,
+ const string& value) {
+- return LuceneTerm(_CLNEW Term(name, utf8toucs2(value).c_str()));
++ return _CLNEW Term(name, utf8toucs2(value).c_str());
+ }
+-LuceneTerm
++Term*
+ CLuceneIndexReader::Private::createTerm(const wchar_t* name,
+ const string& value) {
+ wstring v = utf8toucs2(value);
+@@ -206,16 +205,15 @@ CLuceneIndexReader::Private::createTerm(
+ } else {
+ tv = v.c_str();
+ }
+- LuceneTerm t(_CLNEW Term(name, tv));
++ Term* t = _CLNEW Term(name, tv);
+ _CLDELETE(ts);
+ return t;
+ }
+-LuceneTerm
++Term*
+ CLuceneIndexReader::Private::createKeywordTerm(const wchar_t* name,
+ const string& value) {
+ wstring v = utf8toucs2(value);
+- LuceneTerm t(_CLNEW Term(name, v.c_str()));
+- return t;
++ return _CLNEW Term(name, v.c_str());
+ }
+ BooleanQuery*
+ CLuceneIndexReader::Private::createBooleanQuery(const Strigi::Query& query) {
+@@ -249,25 +247,24 @@ CLuceneIndexReader::Private::createSingl
+ const Strigi::Query& query) {
+ wstring fieldname = mapId(field.c_str());
+ Query* q;
+- LuceneTerm t;
+- LuceneTerm nullTerm;
++ Term* t;
+ const string& val = query.term().string();
+ switch (query.type()) {
+ case Strigi::Query::LessThan:
+ t = createTerm(fieldname.c_str(), val.c_str());
+- q = _CLNEW RangeQuery(nullTerm, t, false);
++ q = _CLNEW RangeQuery(0, t, false);
+ break;
+ case Strigi::Query::LessThanEquals:
+ t = createTerm(fieldname.c_str(), query.term().string());
+- q = _CLNEW RangeQuery(nullTerm, t, true);
++ q = _CLNEW RangeQuery(0, t, true);
+ break;
+ case Strigi::Query::GreaterThan:
+ t = createTerm(fieldname.c_str(), query.term().string());
+- q = _CLNEW RangeQuery(t, nullTerm, false);
++ q = _CLNEW RangeQuery(t, 0, false);
+ break;
+ case Strigi::Query::GreaterThanEquals:
+ t = createTerm(fieldname.c_str(), query.term().string());
+- q = _CLNEW RangeQuery(t, nullTerm, true);
++ q = _CLNEW RangeQuery(t, 0, true);
+ break;
+ case Strigi::Query::Keyword:
+ t = createKeywordTerm(fieldname.c_str(), query.term().string());
+@@ -282,6 +279,7 @@ CLuceneIndexReader::Private::createSingl
+ q = _CLNEW TermQuery(t);
+ }
+ }
++ _CLDECDELETE(t);
+ return q;
+ }
+ Query*
+@@ -584,12 +582,13 @@ CLuceneIndexReader::documentId(const str
+ if (reader == NULL) return -1;
+ int64_t id = -1;
+
+- LuceneTerm term(_CLNEW Term(mapId(Private::systemlocation()), utf8toucs2( uri ).c_str()));
++ Term* term = _CLNEW Term(mapId(Private::systemlocation()), utf8toucs2( uri ).c_str());
+ TermDocs* docs = reader->termDocs(term);
+ if (docs->next()) {
+ id = docs->doc();
+ }
+ _CLDELETE(docs);
++ _CLDECDELETE(term);
+
+ if (id != -1 && reader->isDeleted((int32_t)id)) {
+ id = -1;
+@@ -770,12 +769,13 @@ CLuceneIndexReader::keywords(const strin
+ const wchar_t* prefixtext = prefix.c_str();
+ string::size_type prefixLen = prefix.length();
+ vector<string>::const_iterator i;
+- LuceneTerm lastTerm;
++ Term* lastTerm;
+ for (i = fn.begin(); i != fn.end() && s.size() << max; ++i) {
+ wstring fieldname(utf8toucs2(*i));
+- LuceneTerm term(_CLNEW Term(fieldname.c_str(), prefix.c_str()));
++ Term* term = _CLNEW Term(fieldname.c_str(), prefix.c_str());
+ TermEnum* enumerator = reader->terms(term);
+ do {
++ _CLDECDELETE(lastTerm);
+ lastTerm = enumerator->term();
+ if (lastTerm) {
+ if (prefixLen > lastTerm->textLength()
+@@ -786,7 +786,9 @@ CLuceneIndexReader::keywords(const strin
+ s.insert(lastTerm->text());
+ }
+ } while (enumerator->next() && s.size() < max);
++ _CLDECDELETE(term);
+ }
++ _CLDECDELETE(lastTerm);
+
+ k.reserve(s.size());
+ set<wstring>::const_iterator j;
+diff -upr strigi-0.7.5.orig/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexwriter.cpp strigi-0.7.5/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexwriter.cpp
+--- strigi-0.7.5.orig/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexwriter.cpp 2011-06-02 11:29:26.000000000 +0200
++++ strigi-0.7.5/libstreamanalyzer/plugins/indexers/clucenengindexer/cluceneindexwriter.cpp 2011-08-18 02:43:46.000000000 +0200
+@@ -45,7 +45,6 @@ using lucene::util::BitSet;
+ using lucene::util::Reader;
+ using namespace std;
+ using namespace Strigi;
+-typedef boost::shared_ptr<lucene::index::Term> LuceneTerm;
+
+ struct CLuceneDocData {
+ lucene::document::Document doc;
+@@ -219,18 +218,19 @@ void
+ CLuceneIndexWriter::deleteEntry(const string& entry, lucene::index::IndexWriter* writer, lucene::index::IndexReader* reader) {
+ wstring path(utf8toucs2(entry));
+ {
+- LuceneTerm t(_CLNEW Term(systemlocation(), path.c_str()));
++ Term* t = _CLNEW Term(systemlocation(), path.c_str());
+ writer->deleteDocuments(t);
++ _CLDECDELETE(t);
+ }
+ {
+- LuceneTerm t(_CLNEW Term(parentlocation(), path.c_str()));
++ Term* t = _CLNEW Term(parentlocation(), path.c_str());
+ writer->deleteDocuments(t);
+-
++ _CLDECDELETE(t);
+ }
+ {
+ // delete all deeper nested files
+ wstring v = utf8toucs2(entry+"/");
+- LuceneTerm t(_CLNEW Term(parentlocation(), v.c_str()));
++ Term* t(_CLNEW Term(parentlocation(), v.c_str()));
+ PrefixFilter* filter = _CLNEW PrefixFilter(t);
+ BitSet* b = filter->bits(reader);
+ _CLDELETE(filter);
+@@ -241,6 +241,7 @@ CLuceneIndexWriter::deleteEntry(const st
+ }
+ }
+ _CLDELETE(b);
++ _CLDECDELETE(t);
+ }
+ }
+ void
+diff -upr strigi-0.7.5.orig/libstreamanalyzer/plugins/indexers/clucenengindexer/indexdump/indexdump.cpp strigi-0.7.5/libstreamanalyzer/plugins/indexers/clucenengindexer/indexdump/indexdump.cpp
+--- strigi-0.7.5.orig/libstreamanalyzer/plugins/indexers/clucenengindexer/indexdump/indexdump.cpp 2011-06-02 11:29:26.000000000 +0200
++++ strigi-0.7.5/libstreamanalyzer/plugins/indexers/clucenengindexer/indexdump/indexdump.cpp 2011-08-18 02:43:46.000000000 +0200
+@@ -40,7 +40,6 @@ using lucene::search::HitCollector;
+ using lucene::util::BitSet;
+ using lucene::document::DocumentFieldEnumeration;
+ using lucene::index::IndexReader;
+-typedef boost::shared_ptr<lucene::index::Term> LuceneTerm;
+
+ std::string
+ t2a(const TCHAR* t) {
+@@ -68,10 +67,11 @@ indexdump(const char* dir) {
+ }
+ }
+ TermEnum* terms = indexreader->terms();
+- LuceneTerm t;
++ Term* t = 0;
+ while (terms->next()) {
+ t = terms->term();
+ printf("%s: %s\n", t2a(t->field()).c_str(), t2a(t->text()).c_str());
++ _CLDECDELETE(t);
+ }
+ }
+ int
diff --git a/app-misc/strigi/files/strigi-0.7.5-ffmpeg.patch b/app-misc/strigi/files/strigi-0.7.5-ffmpeg.patch
new file mode 100644
index 0000000..ee1bfc0
--- /dev/null
+++ b/app-misc/strigi/files/strigi-0.7.5-ffmpeg.patch
@@ -0,0 +1,166 @@
+diff -ruN strigi-0.7.5.orig/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp strigi-0.7.5/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp
+--- strigi-0.7.5.orig/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp 2011-06-02 11:29:26.000000000 +0200
++++ strigi-0.7.5/libstreamanalyzer/plugins/endplugins/ffmpegendanalyzer.cpp 2011-08-02 23:25:04.936181179 +0200
+@@ -1,6 +1,7 @@
+ /* This file is part of Strigi Desktop Search
+ *
+ * Copyright (C) 2010 Evgeny Egorochkin <phreedom.stdin@gmail.com>
++ * Copyright (C) 2011 Tirtha Chatterjee <tirtha.p.chatterjee@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+@@ -348,7 +349,7 @@
+ if ((size = in->size()) >= 0)
+ ar.addValue(factory->durationProperty, (uint32_t)(size/(fc->bit_rate/8)));
+ }
+- if(fc->nb_streams==1 && fc->streams[0]->codec->codec_type == CODEC_TYPE_AUDIO) {
++ if(fc->nb_streams==1 && fc->streams[0]->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
+ ar.addValue(factory->typeProperty, NFO "Audio");
+ ar.addValue(factory->typeProperty, NMM_DRAFT "MusicPiece");
+ } else {
+@@ -359,7 +360,7 @@
+ const AVStream &stream = *fc->streams[i];
+ const AVCodecContext &codec = *stream.codec;
+
+- if (codec.codec_type == CODEC_TYPE_AUDIO || codec.codec_type == CODEC_TYPE_VIDEO) {
++ if (codec.codec_type == AVMEDIA_TYPE_AUDIO || codec.codec_type == AVMEDIA_TYPE_VIDEO) {
+ const string streamuri = ar.newAnonymousUri();
+ ar.addValue(factory->hasPartProperty, streamuri);
+ ar.addTriplet(streamuri, partOfPropertyName, ar.path());
+@@ -370,8 +371,16 @@
+ outs << (stream.duration * stream.time_base.num / stream.time_base.den);
+ ar.addTriplet(streamuri, durationPropertyName,outs.str());
+ }
+- if (size_t len = strlen(stream.language)) {
+- ar.addTriplet(streamuri, languagePropertyName, string(stream.language, len));
++
++ //FIXME we must stop using the deprecated fuction av_metadata_get and use
++ // av_dict_get once we are able to detect the version of FFMpeg being used
++ // using version macros. same goes for all occurences of this function.
++ AVMetadataTag *entry = av_metadata_get(stream.metadata, "language", NULL, 0);
++ if (entry != NULL) {
++ const char *languageValue = entry->value;
++ if (size_t len = strlen(languageValue)) {
++ ar.addTriplet(streamuri, languagePropertyName, string(languageValue, len));
++ }
+ }
+ const AVCodec *p = avcodec_find_decoder(codec.codec_id);
+ if (p) {
+@@ -408,7 +417,7 @@
+ ar.addTriplet(streamuri, bitratePropertyName, outs.str());
+ }
+
+- if (codec.codec_type == CODEC_TYPE_AUDIO) {
++ if (codec.codec_type == AVMEDIA_TYPE_AUDIO) {
+
+ ar.addTriplet(streamuri, typePropertyName, audioClassName);
+ if (codec.channels) {
+@@ -458,36 +467,83 @@
+ }
+
+ // Tags
+-
+- if (int32_t len = strlen(fc->title)) {
+- ar.addValue(factory->titleProperty, string(fc->title, len) );
++
++ AVMetadataTag *entry = av_metadata_get(fc->metadata, "title", NULL, 0);
++ if (entry != NULL)
++ {
++ const char *titleValue = entry->value;
++ if (int32_t len = strlen(titleValue)) {
++ ar.addValue(factory->titleProperty, string(titleValue, len) );
++ }
++ }
++
++ entry = av_metadata_get(fc->metadata, "author", NULL, 0);
++ if (entry != NULL)
++ {
++ const char *authorValue = entry->value;
++ if (int32_t len = strlen(authorValue)) {
++ const string creatoruri = ar.newAnonymousUri();
++ ar.addValue(factory->creatorProperty, creatoruri);
++ ar.addTriplet(creatoruri, typePropertyName, contactClassName);
++ ar.addTriplet(creatoruri, fullnamePropertyName, string(authorValue, len) );
++ }
++ }
++
++ entry = av_metadata_get(fc->metadata, "copyright", NULL, 0);
++ if (entry != NULL)
++ {
++ const char *copyrightValue = entry->value;
++ if (int32_t len = strlen(copyrightValue)) {
++ ar.addValue(factory->copyrightProperty, string(copyrightValue, len) );
++ }
+ }
+- if (int32_t len = strlen(fc->author)) {
+- const string creatoruri = ar.newAnonymousUri();
+- ar.addValue(factory->creatorProperty, creatoruri);
+- ar.addTriplet(creatoruri, typePropertyName, contactClassName);
+- ar.addTriplet(creatoruri, fullnamePropertyName, string(fc->author, len) );
+- }
+- if (int32_t len = strlen(fc->copyright)) {
+- ar.addValue(factory->copyrightProperty, string(fc->copyright, len) );
+- }
+- if (int32_t len = strlen(fc->comment)) {
+- ar.addValue(factory->commentProperty, string(fc->comment, len) );
+- }
+- if (int32_t len = strlen(fc->album)) {
+- const string album = ar.newAnonymousUri();
+- ar.addValue(factory->albumProperty, album);
++
++ entry = av_metadata_get(fc->metadata, "comment", NULL, 0);
++ if (entry != NULL)
++ {
++ const char *commentValue = entry->value;
++ if (int32_t len = strlen(commentValue)) {
++ ar.addValue(factory->commentProperty, string(commentValue, len) );
++ }
++ }
++
++ entry = av_metadata_get(fc->metadata, "album", NULL, 0);
++ if (entry != NULL)
++ {
++ const char *albumValue = entry->value;
++ if (int32_t len = strlen(albumValue)) {
++ const string album = ar.newAnonymousUri();
++ ar.addValue(factory->albumProperty, album);
+ ar.addTriplet(album, typePropertyName, albumClassName);
+- ar.addTriplet(album, titlePropertyName, string(fc->album, len) );
++ ar.addTriplet(album, titlePropertyName, string(albumValue, len) );
++ }
+ }
+- if (int32_t len = strlen(fc->genre)) {
+- ar.addValue(factory->genreProperty, string(fc->genre, len) );
++
++ entry = av_metadata_get(fc->metadata, "genre", NULL, 0);
++ if (entry != NULL)
++ {
++ const char *genreValue = entry->value;
++ if (int32_t len = strlen(genreValue)) {
++ ar.addValue(factory->genreProperty, string(genreValue, len) );
++ }
+ }
+- if (fc->track) {
+- ar.addValue(factory->trackProperty, fc->track);
++
++ entry = av_metadata_get(fc->metadata, "track", NULL, 0);
++ if (entry != NULL)
++ {
++ const char *trackValue = entry->value;
++ if (int32_t len = strlen(trackValue)) {
++ ar.addValue(factory->trackProperty, string(trackValue, len) );
++ }
+ }
+- if (fc->year) {
+- ar.addValue(factory->createdProperty, fc->year);
++
++ entry = av_metadata_get(fc->metadata, "year", NULL, 0);
++ if (entry != NULL)
++ {
++ const char *yearValue = entry->value;
++ if (int32_t len = strlen(yearValue)) {
++ ar.addValue(factory->createdProperty, string(yearValue, len) );
++ }
+ }
+
+ av_close_input_stream(fc);
diff --git a/app-misc/strigi/strigi-0.7.5-r3.ebuild b/app-misc/strigi/strigi-0.7.5-r3.ebuild
new file mode 100644
index 0000000..b80205a
--- /dev/null
+++ b/app-misc/strigi/strigi-0.7.5-r3.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=4
+
+if [[ "${PV}" != "9999" ]]; then
+ SRC_URI="http://www.vandenoever.info/software/${PN}/${P}.tar.bz2"
+ KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux"
+else
+ EGIT_REPO_URI="git://anongit.kde.org/strigi"
+ GIT_ECLASS="git-2"
+ EGIT_HAS_SUBMODULES="true"
+ KEYWORDS=""
+fi
+
+inherit cmake-utils ${GIT_ECLASS}
+
+DESCRIPTION="Fast crawling desktop search engine with Qt4 GUI"
+HOMEPAGE="http://strigi.sourceforge.net/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="clucene +dbus debug exif fam ffmpeg hyperestraier inotify log +qt4 test"
+
+COMMONDEPEND="
+ app-arch/bzip2:0
+ dev-libs/libxml2:2
+ sys-libs/zlib:0
+ virtual/libiconv
+ clucene? ( >=dev-cpp/clucene-0.9.21[-debug] )
+ dbus? (
+ sys-apps/dbus
+ qt4? ( x11-libs/qt-dbus:4 )
+ )
+ exif? ( >=media-gfx/exiv2-0.17 )
+ fam? ( virtual/fam )
+ ffmpeg? ( virtual/ffmpeg )
+ hyperestraier? ( app-text/hyperestraier )
+ log? ( >=dev-libs/log4cxx-0.10.0 )
+ qt4? (
+ x11-libs/qt-core:4
+ x11-libs/qt-gui:4
+ )
+"
+DEPEND="${COMMONDEPEND}
+ test? ( dev-util/cppunit )"
+RDEPEND="${COMMONDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.7.5-no-qt4.patch"
+ "${FILESDIR}/${PN}-0.7.5-ffmpeg.patch"
+ "${FILESDIR}/${PN}-0.7.5-clucene23.patch"
+)
+
+src_configure() {
+ # Enabled: POLLING (only reliable way to check for files changed.)
+ # Disabled: xine - recommended upstream to keep it this way
+ mycmakeargs=(
+ -DENABLE_POLLING=ON
+ -DFORCE_DEPS=ON
+ -DENABLE_CPPUNIT=OFF
+ -DENABLE_REGENERATEXSD=OFF
+ -DENABLE_XINE=OFF
+ $(cmake-utils_use_enable clucene)
+ $(cmake-utils_use_enable dbus)
+ $(cmake-utils_use_enable exif EXIV2)
+ $(cmake-utils_use_enable fam)
+ $(cmake-utils_use_enable ffmpeg)
+ $(cmake-utils_use_enable hyperestraier)
+ $(cmake-utils_use_enable inotify)
+ $(cmake-utils_use_enable log LOG4CXX)
+ $(cmake-utils_use_enable qt4)
+ $(cmake-utils_use_enable test CPPUNIT)
+ )
+
+ if use qt4; then
+ mycmakeargs+=(-DENABLE_DBUS=ON)
+ fi
+
+ cmake-utils_src_configure
+}
+
+pkg_postinst() {
+ if ! use clucene && ! use hyperestraier; then
+ echo
+ elog "Because you didn't enable either of the available backends:"
+ elog "clucene or hyperestraier, strigi may not be functional."
+ elog "If you intend to use standalone strigi indexer (not needed for KDE),"
+ elog "be sure to reinstall app-misc/strigi with either clucene (recommended)"
+ elog "or hyperestraier (unreliable) USE flag enabled."
+ echo
+ fi
+}
next reply other threads:[~2011-08-19 15:37 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-19 15:37 Johannes Huber [this message]
-- strict thread matches above, loose matches on Subject: below --
2013-02-25 12:07 [gentoo-commits] proj/kde:master commit in: app-misc/strigi/, app-misc/strigi/files/ Michael Palimaka
2012-11-05 3:14 Patrick Lauer
2012-10-30 13:39 Michael Palimaka
2011-10-02 10:03 Johannes Huber
2011-09-25 19:12 Andreas Hüttel
2011-07-13 22:49 Johannes Huber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2780f3d1a0f2bb00f07c11f41ea91f76feef9e93.j0hu@gentoo \
--to=johu@gmx.de \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox