From 4e794c509becfd7e2bddfddc1205dc81397a48bd Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 26 Mar 2010 19:18:21 +0100 Subject: Inclusion of Long Descriptions in the Packages files can be set now also in TreeDefaults and Tree to support generation of archives which should support and which shouldn't support splitted out Translation-en files in the same run. --- doc/apt-ftparchive.1.xml | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'doc/apt-ftparchive.1.xml') diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml index f88dbe631..e639924ce 100644 --- a/doc/apt-ftparchive.1.xml +++ b/doc/apt-ftparchive.1.xml @@ -289,7 +289,20 @@ Sets the output Sources file. Defaults to $(DIST)/$(SECTION)/source/Sources - + + Translation + + Set the output Translation-en master file with the long descriptions if they + should be not included in the Packages file. Defaults to + $(DIST)/$(SECTION)/i18n/Translation-en + + + LongDescription + + Sets if long descriptions should be included in the Packages file or split + out into a master Translation-en file. + + InternalPrefix Sets the path prefix that causes a symlink to be @@ -371,7 +384,13 @@ for i in Sections do architectures that appear under search section. The special architecture 'source' is used to indicate that this tree has a source archive. - + + LongDescription + + Sets if long descriptions should be included in the Packages file or split + out into a master Translation-en file. + + BinOverride Sets the binary override file. The override file @@ -568,8 +587,8 @@ for i in Sections do This configuration option defaults to "true" and should only be set to "false" if the Archive generated with &apt-ftparchive; also provides - Translation files. Note that it is currently not possible to create these - files with apt-ftparchive. + Translation files. Note that the Translation-en + master file can only be created in the generate command. -- cgit v1.2.3-70-g09d2 From 34f1d96cf5657b5e34cd9880dccfa2028fa16b13 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 26 Mar 2010 22:38:50 +0100 Subject: Switch the TranslationWriter to use MultiCompress to be able to generate the compressed files as we want them and to prevent the file to be replaced without a reason which could save us from steady redownloads of a file with the same content. --- doc/apt-ftparchive.1.xml | 20 +++++++++++++------- ftparchive/apt-ftparchive.cc | 13 ++++++++----- ftparchive/writer.cc | 12 ++++++++---- ftparchive/writer.h | 6 ++++-- 4 files changed, 33 insertions(+), 18 deletions(-) (limited to 'doc/apt-ftparchive.1.xml') diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml index e639924ce..5bf47f32a 100644 --- a/doc/apt-ftparchive.1.xml +++ b/doc/apt-ftparchive.1.xml @@ -224,7 +224,13 @@ This is similar to Packages::Compress except that it controls the compression for the Contents files. - + + Translation::Compress + + This is similar to Packages::Compress + except that it controls the compression for the Translation-en master file. + + DeLinkLimit Specifies the number of kilobytes to delink (and @@ -238,6 +244,12 @@ defaults to 0644. All index files are set to this mode with no regard to the umask. + + LongDescription + + Sets if long descriptions should be included in the Packages file or split + out into a master Translation-en file. + @@ -297,12 +309,6 @@ $(DIST)/$(SECTION)/i18n/Translation-en - LongDescription - - Sets if long descriptions should be included in the Packages file or split - out into a master Translation-en file. - - InternalPrefix Sets the path prefix that causes a symlink to be diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc index f3e91d90d..46831b385 100644 --- a/ftparchive/apt-ftparchive.cc +++ b/ftparchive/apt-ftparchive.cc @@ -134,8 +134,6 @@ void PackageMap::GetGeneral(Configuration &Setup,Configuration &Block) PkgExt = Block.Find("Packages::Extensions", Setup.Find("Default::Packages::Extensions",".deb").c_str()); - Permissions = Setup.FindI("Default::FileMode",0644); - if (FLFile.empty() == false) FLFile = flCombine(Setup.Find("Dir::FileListDir"),FLFile); @@ -458,8 +456,11 @@ void LoadTree(vector &PkgList,Configuration &Setup) string DFLFile = Setup.Find("TreeDefault::FileList", ""); string DSFLFile = Setup.Find("TreeDefault::SourceFileList", ""); - bool const LongDescription = Setup.FindB("TreeDefault::LongDescription", + int const Permissions = Setup.FindI("Default::FileMode",0644); + + bool const LongDescription = Setup.FindB("Default::LongDescription", _config->FindB("APT::FTPArchive::LongDescription", true)); + string const TranslationCompress = Setup.Find("Default::Translation::Compress",". gzip").c_str(); // Process 'tree' type sections const Configuration::Item *Top = Setup.Tree("tree"); @@ -479,13 +480,15 @@ void LoadTree(vector &PkgList,Configuration &Setup) {"$(SECTION)",&Section}, {"$(ARCH)",&Arch}, {}}; + mode_t const Perms = Block.FindI("FileMode", Permissions); bool const LongDesc = Block.FindB("LongDescription", LongDescription); TranslationWriter *TransWriter; if (DTrans.empty() == false && LongDesc == false) { string const TranslationFile = flCombine(Setup.FindDir("Dir::ArchiveDir"), SubstVar(Block.Find("Translation", DTrans.c_str()), Vars)); - TransWriter = new TranslationWriter(TranslationFile); + string const TransCompress = Block.Find("Translation::Compress", TranslationCompress); + TransWriter = new TranslationWriter(TranslationFile, TransCompress, Perms); } else TransWriter = NULL; @@ -495,7 +498,7 @@ void LoadTree(vector &PkgList,Configuration &Setup) while (ParseQuoteWord(Archs,Arch) == true) { PackageMap Itm; - + Itm.Permissions = Perms; Itm.BinOverride = SubstVar(Block.Find("BinOverride"),Vars); Itm.InternalPrefix = SubstVar(Block.Find("InternalPrefix",DIPrfx.c_str()),Vars); diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index b395903b7..45a8d212b 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -499,13 +499,15 @@ bool PackagesWriter::DoPackage(string FileName) // TranslationWriter::TranslationWriter - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Create a Translation-Master file for this Packages file */ -TranslationWriter::TranslationWriter(string const &File) : Output(NULL), +TranslationWriter::TranslationWriter(string const &File, string const &TransCompress, + mode_t const &Permissions) : Output(NULL), RefCounter(0) { if (File.empty() == true) return; - Output = fopen(File.c_str(), "w"); + Comp = new MultiCompress(File, TransCompress, Permissions); + Output = Comp->Input; } /*}}}*/ // TranslationWriter::DoPackage - Process a single package /*{{{*/ @@ -536,8 +538,10 @@ bool TranslationWriter::DoPackage(string const &Pkg, string const &Desc, /* */ TranslationWriter::~TranslationWriter() { - if (Output != NULL) - fclose(Output); + if (Comp == NULL) + return; + + delete Comp; } /*}}}*/ diff --git a/ftparchive/writer.h b/ftparchive/writer.h index 2afd1af1f..3123a7f46 100644 --- a/ftparchive/writer.h +++ b/ftparchive/writer.h @@ -22,6 +22,7 @@ #include #include "cachedb.h" +#include "multicompress.h" #include "override.h" #include "apt-ftparchive.h" @@ -75,6 +76,7 @@ class FTWScanner class TranslationWriter { + MultiCompress *Comp; FILE *Output; std::set Included; unsigned short RefCounter; @@ -85,8 +87,8 @@ class TranslationWriter unsigned short GetRefCounter() const { return RefCounter; }; bool DoPackage(string const &Pkg, string const &Desc, string const &MD5); - TranslationWriter(string const &File); - TranslationWriter() : Output(NULL), RefCounter(0) {}; + TranslationWriter(string const &File, string const &TransCompress, mode_t const &Permissions); + TranslationWriter() : Comp(NULL), Output(NULL), RefCounter(0) {}; ~TranslationWriter(); }; -- cgit v1.2.3-70-g09d2 From e1dd65c9f1274621142a20148f23dbd074ac33af Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 13 May 2010 17:39:21 +0200 Subject: * doc/apt.ent - add entities for the current oldstable/stable/testing codenames * doc/sources.list.5.xml: - use stable-codename instead of stable in the examples (Closes: #531492) * doc/apt_preferences.5.xml: - adapt some examples here to use current codenames as well --- debian/changelog | 6 ++++++ doc/apt-ftparchive.1.xml | 2 +- doc/apt.conf.5.xml | 5 +++-- doc/apt.ent | 4 ++++ doc/apt_preferences.5.xml | 20 ++++++++++---------- doc/sources.list.5.xml | 8 ++++---- 6 files changed, 28 insertions(+), 17 deletions(-) (limited to 'doc/apt-ftparchive.1.xml') diff --git a/debian/changelog b/debian/changelog index 8a6424ebc..0902e79c8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,12 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low - remove the keyrings count limit by using vector magic * contrib/mmap.cc: - clarify "MMap reached size limit" error message, thanks Ivan Masár! + * doc/apt.ent + - add entities for the current oldstable/stable/testing codenames + * doc/sources.list.5.xml: + - use stable-codename instead of stable in the examples (Closes: #531492) + * doc/apt_preferences.5.xml: + - adapt some examples here to use current codenames as well [ Jari Aalto ] * debian/rules: diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml index 5bf47f32a..a3ac45bd3 100644 --- a/doc/apt-ftparchive.1.xml +++ b/doc/apt-ftparchive.1.xml @@ -363,7 +363,7 @@ The Tree section takes a scope tag which sets the $(DIST) variable and defines the root of the tree (the path is prefixed by ArchiveDir). - Typically this is a setting such as dists/woody. + Typically this is a setting such as dists/&stable-codename;. All of the settings defined in the TreeDefault section can be use in a Tree section as well as three new variables. diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml index c13ad4867..fe005e0f1 100644 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@ -150,8 +150,9 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; Default-Release - Default release to install packages from if more than one - version available. Contains release name, codename or release version. Examples: 'stable', 'testing', 'unstable', 'lenny', 'squeeze', '4.0', '5.0*'. See also &apt-preferences;. + Default release to install packages from if more than one + version available. Contains release name, codename or release version. Examples: 'stable', 'testing', + 'unstable', '&stable-codename;', '&testing-codename;', '4.0', '5.0*'. See also &apt-preferences;. Ignore-Hold diff --git a/doc/apt.ent b/doc/apt.ent index c463f7811..be769e232 100644 --- a/doc/apt.ent +++ b/doc/apt.ent @@ -392,3 +392,7 @@ This is done on purpose, to avoid losing content when the translation is lagging behind the original content. "> + + + + diff --git a/doc/apt_preferences.5.xml b/doc/apt_preferences.5.xml index 77b7776e8..5f8f9fded 100644 --- a/doc/apt_preferences.5.xml +++ b/doc/apt_preferences.5.xml @@ -218,11 +218,11 @@ Pin-Priority: 50 The following record assigns a high priority to all package versions -belonging to any distribution whose Codename is "squeeze". +belonging to any distribution whose Codename is "&testing-codename;". Package: * -Pin: release n=squeeze +Pin: release n=&testing-codename; Pin-Priority: 900 @@ -355,7 +355,7 @@ APT priorities: The Release file is normally found in the directory .../dists/dist-name: for example, .../dists/stable/Release, -or .../dists/woody/Release. +or .../dists/&stable-codename;/Release. It consists of a single multi-line record which applies to all of the packages in the directory tree below its parent. Unlike the Packages file, nearly all of the lines in a Release @@ -383,14 +383,14 @@ Pin: release a=stable the Codename: line names the codename to which all the packages in the directory tree belong. For example, the line -"Codename: squeeze" +"Codename: &testing-codename;" specifies that all of the packages in the directory tree below the parent of the Release file belong to a version named -squeeze. Specifying this value in the APT preferences file +&testing-codename;. Specifying this value in the APT preferences file would require the line: -Pin: release n=squeeze +Pin: release n=&testing-codename; @@ -590,9 +590,9 @@ the example configurations above. Explanation: Uninstall or do not install any Debian-originated package versions -Explanation: other than those in the distribution codenamed with squeeze or sid +Explanation: other than those in the distribution codenamed with &testing-codename; or sid Package: * -Pin: release n=squeeze +Pin: release n=&testing-codename; Pin-Priority: 900 Explanation: Debian unstable is always codenamed with sid @@ -608,7 +608,7 @@ Pin-Priority: -10 With a suitable &sources-list; file and the above preferences file, any of the following commands will cause APT to upgrade to the -latest version(s) in the release codenamed with squeeze. +latest version(s) in the release codenamed with &testing-codename;. apt-get install package-name @@ -620,7 +620,7 @@ apt-get dist-upgrade The following command will cause APT to upgrade the specified package to the latest version from the sid distribution. Thereafter, apt-get upgrade will upgrade -the package to the most recent squeeze version if that is +the package to the most recent &testing-codename; version if that is more recent than the installed version, otherwise, to the most recent sid version if that is more recent than the installed version. diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml index c71ae6bdd..b0ff42b59 100644 --- a/doc/sources.list.5.xml +++ b/doc/sources.list.5.xml @@ -111,8 +111,8 @@ Some examples: -deb http://http.us.debian.org/debian stable main contrib non-free -deb http://http.us.debian.org/debian dists/stable-updates/ +deb http://ftp.debian.org/debian &stable-codename; main contrib non-free +deb http://security.debian.org/ &stable-codename;/updates main contrib non-free @@ -206,8 +206,8 @@ deb http://http.us.debian.org/debian dists/stable-updates/ deb http://archive.debian.org/debian-archive hamm main Uses FTP to access the archive at ftp.debian.org, under the debian - directory, and uses only the stable/contrib area. - deb ftp://ftp.debian.org/debian stable contrib + directory, and uses only the &stable-codename;/contrib area. + deb ftp://ftp.debian.org/debian &stable-codename; contrib Uses FTP to access the archive at ftp.debian.org, under the debian directory, and uses only the unstable/contrib area. If this line appears as -- cgit v1.2.3-70-g09d2 From c99e48ec26e693d9aa4a2a9f868284f7aa49784d Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 9 Jun 2010 00:12:14 +0200 Subject: * ftparchive/writer.cc: - add ValidTime option to generate a Valid-Until header in Release file --- debian/changelog | 2 ++ doc/apt-ftparchive.1.xml | 3 ++- ftparchive/writer.cc | 10 ++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) (limited to 'doc/apt-ftparchive.1.xml') diff --git a/debian/changelog b/debian/changelog index 2a40d084e..fa0e667e7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -47,6 +47,8 @@ apt (0.7.26~exp5) experimental; urgency=low * apt-pkg/contrib/strutl.cc: - split StrToTime() into HTTP1.1 and FTP date parser methods and use strptime() instead of some selfmade scanf mangling + * ftparchive/writer.cc: + - add ValidTime option to generate a Valid-Until header in Release file [ Michael Vogt ] * methods/http.{cc,h}: diff --git a/doc/apt-ftparchive.1.xml b/doc/apt-ftparchive.1.xml index a3ac45bd3..549aa6a34 100644 --- a/doc/apt-ftparchive.1.xml +++ b/doc/apt-ftparchive.1.xml @@ -122,7 +122,8 @@ e.g. APT::FTPArchive::Release::Origin. The supported fields are: Origin, Label, Suite, Version, Codename, Date, - Architectures, Components, Description. + Valid-Until, Architectures, + Components, Description. diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index 6cda29b21..650eec57c 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -924,6 +924,15 @@ ReleaseWriter::ReleaseWriter(string const &DB) datestr[0] = '\0'; } + time_t const validuntil = now + _config->FindI("APT::FTPArchive::Release::ValidTime", 0); + char validstr[128]; + if (now == validuntil || + strftime(validstr, sizeof(validstr), "%a, %d %b %Y %H:%M:%S UTC", + gmtime(&validuntil)) == 0) + { + datestr[0] = '\0'; + } + map Fields; Fields["Origin"] = ""; Fields["Label"] = ""; @@ -931,6 +940,7 @@ ReleaseWriter::ReleaseWriter(string const &DB) Fields["Version"] = ""; Fields["Codename"] = ""; Fields["Date"] = datestr; + Fields["Valid-Until"] = validstr; Fields["Architectures"] = ""; Fields["Components"] = ""; Fields["Description"] = ""; -- cgit v1.2.3-70-g09d2