reassign 153661 apt
tag 153661 + patch
thanks

The fact that apt doesn't support pinning by codename is a missing feature in 
apt, as the field is available in the Release file.  I've created a patch that 
adds pinning by codename with n=  It probably requires an ABI bump.
diff -urN apt-0.6.46.4/apt-pkg/cacheiterators.h apt-0.6.46.4.new/apt-pkg/cacheiterators.h
--- apt-0.6.46.4/apt-pkg/cacheiterators.h	2006-12-04 06:37:34.000000000 -0800
+++ apt-0.6.46.4.new/apt-pkg/cacheiterators.h	2007-01-03 02:58:56.914687712 -0800
@@ -291,6 +291,7 @@
    inline const char *Version() const {return File->Version == 0?0:Owner->StrP + File->Version;};
    inline const char *Origin() const {return File->Origin == 0?0:Owner->StrP + File->Origin;};
    inline const char *Label() const {return File->Label == 0?0:Owner->StrP + File->Label;};
+   inline const char *Codename() const {return File->Codename == 0?0:Owner->StrP + File->Codename;};
    inline const char *Site() const {return File->Site == 0?0:Owner->StrP + File->Site;};
    inline const char *Architecture() const {return File->Architecture == 0?0:Owner->StrP + File->Architecture;};
    inline const char *IndexType() const {return File->IndexType == 0?0:Owner->StrP + File->IndexType;};
diff -urN apt-0.6.46.4/apt-pkg/deb/deblistparser.cc apt-0.6.46.4.new/apt-pkg/deb/deblistparser.cc
--- apt-0.6.46.4/apt-pkg/deb/deblistparser.cc	2006-12-04 06:37:35.000000000 -0800
+++ apt-0.6.46.4.new/apt-pkg/deb/deblistparser.cc	2007-01-03 02:40:14.253495180 -0800
@@ -593,6 +593,8 @@
       FileI->Label = WriteUniqString(Start,Stop - Start);
    if (Section.Find("Architecture",Start,Stop) == true)
       FileI->Architecture = WriteUniqString(Start,Stop - Start);
+   if (Section.Find("Codename",Start,Stop) == true)
+      FileI->Codename = WriteUniqString(Start,Stop - Start);
    
    if (Section.FindFlag("NotAutomatic",FileI->Flags,
 			pkgCache::Flag::NotAutomatic) == false)
diff -urN apt-0.6.46.4/apt-pkg/pkgcache.cc apt-0.6.46.4.new/apt-pkg/pkgcache.cc
--- apt-0.6.46.4/apt-pkg/pkgcache.cc	2006-12-04 06:37:34.000000000 -0800
+++ apt-0.6.46.4.new/apt-pkg/pkgcache.cc	2007-01-03 03:12:56.321924112 -0800
@@ -596,6 +596,8 @@
       Res = Res + (Res.empty() == true?"l=":",l=")  + Label();
    if (Component() != 0)
       Res = Res + (Res.empty() == true?"c=":",c=")  + Component();
+   if (Codename() != 0)
+      Res = Res + (Res.empty() == true?"n=":",n=")  + Codename();
    return Res;
 }
 									/*}}}*/
diff -urN apt-0.6.46.4/apt-pkg/pkgcache.h apt-0.6.46.4.new/apt-pkg/pkgcache.h
--- apt-0.6.46.4/apt-pkg/pkgcache.h	2006-12-04 06:37:34.000000000 -0800
+++ apt-0.6.46.4.new/apt-pkg/pkgcache.h	2007-01-03 02:43:10.072938954 -0800
@@ -212,6 +212,7 @@
    map_ptrloc Version;         // Stringtable
    map_ptrloc Origin;          // Stringtable
    map_ptrloc Label;           // Stringtable
+   map_ptrloc Codename;        // Stringtable
    map_ptrloc Architecture;    // Stringtable
    map_ptrloc Site;            // Stringtable
    map_ptrloc IndexType;       // Stringtable
diff -urN apt-0.6.46.4/apt-pkg/versionmatch.cc apt-0.6.46.4.new/apt-pkg/versionmatch.cc
--- apt-0.6.46.4/apt-pkg/versionmatch.cc	2006-12-04 06:37:34.000000000 -0800
+++ apt-0.6.46.4.new/apt-pkg/versionmatch.cc	2007-01-03 03:26:38.200428031 -0800
@@ -101,6 +101,8 @@
 	    RelLabel = Fragments[J]+2;
 	 else if (stringcasecmp(Fragments[J],Fragments[J]+2,"c=") == 0)
 	    RelComponent = Fragments[J]+2;
+	 else if (stringcasecmp(Fragments[J],Fragments[J]+2,"n=") == 0)
+	    RelCodename = Fragments[J]+2;
       }
       
       if (RelVerStr.end()[-1] == '*')
@@ -178,7 +180,7 @@
       
       if (RelVerStr.empty() == true && RelOrigin.empty() == true &&
 	  RelArchive.empty() == true && RelLabel.empty() == true &&
-	  RelComponent.empty() == true)
+	  RelComponent.empty() == true && RelCodename.empty() == true)
 	 return false;
       
       if (RelVerStr.empty() == false)
@@ -203,6 +205,10 @@
 	 if (File->Component == 0 ||
 	     stringcasecmp(RelComponent,File.Component()) != 0)
 	    return false;
+      if (RelCodename.empty() == false)
+	 if (File->Codename == 0 ||
+	     stringcasecmp(RelCodename,File.Codename()) != 0)
+	    return false;
       return true;
    }
    
diff -urN apt-0.6.46.4/apt-pkg/versionmatch.h apt-0.6.46.4.new/apt-pkg/versionmatch.h
--- apt-0.6.46.4/apt-pkg/versionmatch.h	2006-12-04 06:37:34.000000000 -0800
+++ apt-0.6.46.4.new/apt-pkg/versionmatch.h	2007-01-03 02:46:26.902266151 -0800
@@ -20,6 +20,8 @@
       Archive (a=)
       Label (l=)
       Component (c=)
+      Codename (n=)
+
    If there are no equals signs in the string then it is scanned in short
    form - if it starts with a number it is Version otherwise it is an 
    Archive.
@@ -53,6 +55,7 @@
    string RelArchive;
    string RelLabel;
    string RelComponent;
+   string RelCodename;
    bool MatchAll;
    
    // Origin Matching
diff -urN apt-0.6.46.4/debian/changelog apt-0.6.46.4.new/debian/changelog
--- apt-0.6.46.4/debian/changelog	2006-12-04 08:33:54.000000000 -0800
+++ apt-0.6.46.4.new/debian/changelog	2007-01-03 03:31:11.429887326 -0800
@@ -1,3 +1,9 @@
+apt (0.6.46.5) unstable; urgency=low
+
+  * Add n= Release file match for the Codename: field (closes: #153661)
+
+ -- Ryan Murray <[EMAIL PROTECTED]>  Wed,  3 Jan 2007 03:30:47 -0800
+
 apt (0.6.46.4) unstable; urgency=high
 
   * ack NMU (closes: #401017)

Attachment: signature.asc
Description: PGP signature



Reply via email to