X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/7a3e9e0a41d468b67509fa805df075abc6429fa5..cce08fb5aca7dd01706cecea845b183dc62b1717:/ftparchive/apt-ftparchive.cc diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc index 60fe740b5..d514ea16e 100644 --- a/ftparchive/apt-ftparchive.cc +++ b/ftparchive/apt-ftparchive.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: apt-ftparchive.cc,v 1.7 2003/07/18 14:12:07 mdz Exp $ +// $Id: apt-ftparchive.cc,v 1.8.2.3 2004/01/02 22:01:48 mdz Exp $ /* ###################################################################### apt-scanpackages - Efficient work-alike for dpkg-scanpackages @@ -10,10 +10,6 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#ifdef __GNUG__ -#pragma implementation "apt-ftparchive.h" -#endif - #include "apt-ftparchive.h" #include @@ -56,6 +52,9 @@ struct PackageMap string BinCacheDB; string BinOverride; string ExtraOverride; + + // We generate for this given arch + string Arch; // Stuff for the Source File string SrcFile; @@ -158,11 +157,12 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) // Create a package writer object. PackagesWriter Packages(flCombine(CacheDir,BinCacheDB), flCombine(OverrideDir,BinOverride), - flCombine(OverrideDir,ExtraOverride)); + flCombine(OverrideDir,ExtraOverride), + Arch); if (PkgExt.empty() == false && Packages.SetExts(PkgExt) == false) return _error->Error(_("Package extension list is too long")); if (_error->PendingError() == true) - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); Packages.PathPrefix = PathPrefix; Packages.DirStrip = ArchiveDir; @@ -176,7 +176,7 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) PkgCompress,Permissions); Packages.Output = Comp.Input; if (_error->PendingError() == true) - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); c0out << ' ' << BaseDir << ":" << flush; @@ -199,7 +199,7 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) if (Comp.Finalize(Size) == false) { c0out << endl; - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); } if (Size != 0) @@ -223,6 +223,7 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) return !_error->PendingError(); } + /*}}}*/ // PackageMap::GenSources - Actually generate a Source file /*{{{*/ // --------------------------------------------------------------------- @@ -248,7 +249,7 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats) if (SrcExt.empty() == false && Sources.SetExts(SrcExt) == false) return _error->Error(_("Source extension list is too long")); if (_error->PendingError() == true) - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); Sources.PathPrefix = PathPrefix; Sources.DirStrip = ArchiveDir; @@ -262,7 +263,7 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats) SrcCompress,Permissions); Sources.Output = Comp.Input; if (_error->PendingError() == true) - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); c0out << ' ' << BaseDir << ":" << flush; @@ -284,7 +285,7 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats) if (Comp.Finalize(Size) == false) { c0out << endl; - return _error->Error(_("Error Processing directory %s"),BaseDir.c_str()); + return _error->Error(_("Error processing directory %s"),BaseDir.c_str()); } if (Size != 0) @@ -393,7 +394,7 @@ bool PackageMap::GenContents(Configuration &Setup, if (Comp.Finalize(Size) == false || _error->PendingError() == true) { c0out << endl; - return _error->Error(_("Error Processing Contents %s"), + return _error->Error(_("Error processing contents %s"), this->Contents.c_str()); } @@ -488,6 +489,7 @@ void LoadTree(vector &PkgList,Configuration &Setup) Itm.BaseDir = SubstVar(Block.Find("Directory",DDir.c_str()),Vars); Itm.PkgFile = SubstVar(Block.Find("Packages",DPkg.c_str()),Vars); Itm.Tag = SubstVar("$(DIST)/$(SECTION)/$(ARCH)",Vars); + Itm.Arch = Arch; Itm.Contents = SubstVar(Block.Find("Contents",DContents.c_str()),Vars); Itm.ContentsHead = SubstVar(Block.Find("Contents::Header",DContentsH.c_str()),Vars); Itm.FLFile = SubstVar(Block.Find("FileList",DFLFile.c_str()),Vars); @@ -551,6 +553,7 @@ bool ShowHelp(CommandLine &CmdL) "Commands: packages binarypath [overridefile [pathprefix]]\n" " sources srcpath [overridefile [pathprefix]]\n" " contents path\n" + " release path\n" " generate config [groups]\n" " clean config\n" "\n" @@ -568,9 +571,9 @@ bool ShowHelp(CommandLine &CmdL) "\n" "The 'packages' and 'sources' command should be run in the root of the\n" "tree. BinaryPath should point to the base of the recursive search and \n" - "override file should contian the override flags. Pathprefix is\n" + "override file should contain the override flags. Pathprefix is\n" "appended to the filename fields if present. Example usage from the \n" - "debian archive:\n" + "Debian archive:\n" " apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n" " dists/potato/main/binary-i386/Packages\n" "\n" @@ -583,7 +586,7 @@ bool ShowHelp(CommandLine &CmdL) " --no-delink Enable delinking debug mode\n" " --contents Control contents file generation\n" " -c=? Read this configuration file\n" - " -o=? Set an arbitary configuration option") << endl; + " -o=? Set an arbitrary configuration option") << endl; return true; } @@ -671,6 +674,30 @@ bool SimpleGenSources(CommandLine &CmdL) return true; } + /*}}}*/ +// SimpleGenRelease - Generate a Release file for a directory tree /*{{{*/ +// --------------------------------------------------------------------- +bool SimpleGenRelease(CommandLine &CmdL) +{ + if (CmdL.FileSize() < 2) + return ShowHelp(CmdL); + + string Dir = CmdL.FileList[1]; + + ReleaseWriter Release(""); + Release.DirStrip = Dir; + + if (_error->PendingError() == true) + return false; + + if (Release.RecursiveScan(Dir) == false) + return false; + + Release.Finish(); + + return true; +} + /*}}}*/ // Generate - Full generate, using a config file /*{{{*/ // --------------------------------------------------------------------- @@ -887,6 +914,7 @@ int main(int argc, const char *argv[]) CommandLine::Dispatch Cmds[] = {{"packages",&SimpleGenPackages}, {"contents",&SimpleGenContents}, {"sources",&SimpleGenSources}, + {"release",&SimpleGenRelease}, {"generate",&Generate}, {"clean",&Clean}, {"help",&ShowHelp},