diff options
-rw-r--r-- | debian/changelog | 2 | ||||
-rw-r--r-- | doc/apt-ftparchive.1.xml | 13 | ||||
-rw-r--r-- | ftparchive/writer.cc | 21 | ||||
-rw-r--r-- | ftparchive/writer.h | 1 | ||||
-rwxr-xr-x | test/libapt/run-tests.sh | 10 |
5 files changed, 43 insertions, 4 deletions
diff --git a/debian/changelog b/debian/changelog index c4a6d0705..0696541a7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -83,6 +83,8 @@ apt (0.7.25) UNRELEASED; urgency=low thanks Carl Chenet! (Closes: #521289) - print an error and exit if python-apt is not installed, thanks Carl Chenet! (Closes: #521284) + * ftparchive/writer.{cc,h}: + - add APT::FTPArchive::LongDescription to be able to disable them [ Chris Leick ] * doc/ various manpages: diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml index d4d77c68e..d47df957a 100644 --- a/doc/apt-ftparchive.1.xml +++ b/doc/apt-ftparchive.1.xml @@ -15,7 +15,7 @@ &apt-email; &apt-product; <!-- The last update date --> - <date>29 February 2004</date> + <date>17 August 2009</date> </refentryinfo> <refmeta> @@ -543,7 +543,16 @@ for i in Sections do Make the caching databases read only. Configuration Item: <literal>APT::FTPArchive::ReadOnlyDB</literal>.</para></listitem> </varlistentry> - + + <varlistentry><term><option>APT::FTPArchive::LongDescription</option></term> + <listitem><para> + This configuration option defaults to "<literal>true</literal>" and should only be set to + <literal>"false"</literal> if the Archive generated with &apt-ftparchive; also provides + <filename>Translation</filename> files. Note that it is currently not possible to create these + files with <command>apt-ftparchive</command>. + </para></listitem> + </varlistentry> + &apt-commonoptions; </variablelist> diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index 293e851f5..b2ebdca8a 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -308,6 +308,7 @@ PackagesWriter::PackagesWriter(string DB,string Overrides,string ExtOverrides, DoSHA256 = _config->FindB("APT::FTPArchive::SHA256",true); DoContents = _config->FindB("APT::FTPArchive::Contents",true); NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false); + LongDescription = _config->FindB("APT::FTPArchive::LongDescription",true); if (Db.Loaded() == false) DoContents = false; @@ -414,10 +415,18 @@ bool PackagesWriter::DoPackage(string FileName) NewFileName = FileName; if (PathPrefix.empty() == false) NewFileName = flCombine(PathPrefix,NewFileName); - + + /* Configuration says we don't want to include the long Description + in the package file - instead we want to ship a separated file */ + string desc; + if (LongDescription == false) { + desc = Tags.FindS("Description").append("\n"); + OverItem->FieldOverride["Description"] = desc.substr(0, desc.find('\n')).c_str(); + } + // This lists all the changes to the fields we are going to make. // (7 hardcoded + maintainer + suggests + end marker) - TFRewriteData Changes[6+2+OverItem->FieldOverride.size()+1]; + TFRewriteData Changes[6+2+OverItem->FieldOverride.size()+1+1]; unsigned int End = 0; SetTFRewriteData(Changes[End++], "Size", Size); @@ -429,6 +438,14 @@ bool PackagesWriter::DoPackage(string FileName) SetTFRewriteData(Changes[End++], "Status", 0); SetTFRewriteData(Changes[End++], "Optional", 0); + string DescriptionMd5; + if (LongDescription == false) { + MD5Summation descmd5; + descmd5.Add(desc.c_str()); + DescriptionMd5 = descmd5.Result().Value(); + SetTFRewriteData(Changes[End++], "Description-md5", DescriptionMd5.c_str()); + } + // Rewrite the maintainer field if necessary bool MaintFailed; string NewMaint = OverItem->SwapMaint(Tags.FindS("Maintainer"),MaintFailed); diff --git a/ftparchive/writer.h b/ftparchive/writer.h index 6e161c752..e76438900 100644 --- a/ftparchive/writer.h +++ b/ftparchive/writer.h @@ -86,6 +86,7 @@ class PackagesWriter : public FTWScanner bool DoSHA256; bool NoOverride; bool DoContents; + bool LongDescription; // General options string PathPrefix; diff --git a/test/libapt/run-tests.sh b/test/libapt/run-tests.sh new file mode 100755 index 000000000..365bbe215 --- /dev/null +++ b/test/libapt/run-tests.sh @@ -0,0 +1,10 @@ +#!/bin/sh +echo "Compiling the tests ..." +make +echo "Running all testcases ..." +PATH=$(pwd)/../../build/bin +for testapp in $(/bin/ls ${PATH}/*_libapt_test) +do + echo -n "Testing with \033[1;35m$(/usr/bin/basename ${testapp})\033[0m ... " + LD_LIBRARY_PATH=${PATH} ${testapp} && echo "\033[1;32mOKAY\033[0m" || echo "\033[1;31mFAILED\033[0m" +done |