summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog2
-rw-r--r--doc/apt-ftparchive.1.xml13
-rw-r--r--ftparchive/writer.cc21
-rw-r--r--ftparchive/writer.h1
-rwxr-xr-xtest/libapt/run-tests.sh10
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