Procházet zdrojové kódy

merged from lp:~donkult/apt/sid

Michael Vogt před 15 roky
rodič
revize
ec78b27738

+ 2 - 1
apt-pkg/packagemanager.cc

@@ -598,7 +598,8 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate)
    
    for (PrvIterator P = instVer.ProvidesList();
 	P.end() == false; ++P)
-      CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion());
+      if (Pkg->Group != P.OwnerPkg()->Group)
+	 CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion());
 
    List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States);
 

+ 1 - 1
apt-pkg/pkgcache.cc

@@ -632,7 +632,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const
 	    continue;
 	 
 	 if (IsNegative() == true &&
-	     ParentPkg() == I.OwnerPkg())
+	     ParentPkg()->Group == I.OwnerPkg()->Group)
 	    continue;
 	 
 	 Size++;

+ 10 - 0
debian/changelog

@@ -1,3 +1,13 @@
+apt (0.8.15.7) UNRELEASED; urgency=low
+
+  [ David Kalnischkies ]
+  * apt-pkg/packagemanager.cc, apt-pkg/pkgcache.cc:
+    - ignore "self"-conflicts for all architectures of a package
+      instead of just for the architecture of the package locked at
+      in the ordering of installations too (Closes: #802901)
+
+ -- David Kalnischkies <kalnischkies@gmail.com>  Wed, 17 Aug 2011 11:08:02 +0200
+
 apt (0.8.15.6) unstable; urgency=low
 
   [ Michael Vogt ]

+ 0 - 37
test/conf.cc

@@ -1,37 +0,0 @@
-#include <apt-pkg/configuration.h>
-#include <apt-pkg/error.h>
-
-using namespace std;
-
-int main(int argc,const char *argv[])
-{
-   Configuration Cnf;
-   
-   ReadConfigFile(Cnf,argv[1],true);
-   
-   // Process 'simple-key' type sections
-   const Configuration::Item *Top = Cnf.Tree("simple-key");
-   for (Top = (Top == 0?0:Top->Child); Top != 0; Top = Top->Next)
-   {
-      Configuration Block(Top);
-      
-      string VendorID = Top->Tag;
-      string FingerPrint = Block.Find("Fingerprint");
-      string Name = Block.Find("Name"); // Description?
-      
-      if (FingerPrint.empty() == true || Name.empty() == true)
-	 _error->Error("Block %s is invalid",VendorID.c_str());
-      
-      cout << VendorID << ' ' << FingerPrint << ' ' << Name << endl;
-   }   
-	 
-   // Print any errors or warnings found during parsing
-   if (_error->empty() == false)
-   {
-      bool Errors = _error->PendingError();
-      _error->DumpErrors();
-      return Errors == true?100:0;
-   }
-   
-   return 0;
-}

+ 0 - 23
test/conf_clear.cc

@@ -1,23 +0,0 @@
-#include <apt-pkg/configuration.h>
-#include <apt-pkg/error.h>
-
-using namespace std;
-
-int main(int argc,const char *argv[])
-{
-   Configuration Cnf;
-
-   cout << "adding elements" << endl;
-   Cnf.Set("APT::Keep-Fds::",28);
-   Cnf.Set("APT::Keep-Fds::",17);
-   Cnf.Set("APT::Keep-Fds::",47);
-   Cnf.Dump();
-
-   cout << "Removing  elements" << endl;
-   Cnf.Clear("APT::Keep-Fds",17);
-   Cnf.Clear("APT::Keep-Fds",28);
-   Cnf.Clear("APT::Keep-Fds",47);
-   Cnf.Dump();
-
-   return 0;
-}

+ 5 - 0
test/integration/framework

@@ -612,6 +612,11 @@ changetowebserver() {
 	if which weborf > /dev/null; then
 		weborf -xb aptarchive/ 2>&1 > /dev/null &
 		addtrap "kill $!;"
+	elif which gatling > /dev/null; then
+		cd aptarchive
+		gatling -p 8080 -F -S 2>&1 > /dev/null &
+		addtrap "kill $!;"
+		cd - > /dev/null
 	elif which lighttpd > /dev/null; then
 		echo "server.document-root = \"$(readlink -f ./aptarchive)\"
 server.port = 8080

+ 24 - 0
test/integration/test-ubuntu-bug-802901-multiarch-early-remove

@@ -0,0 +1,24 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libgl1-mesa-glx' 'amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+insertpackage 'unstable' 'libgl1-mesa-glx' 'i386,amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+
+setupaptarchive
+
+testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+  libgl1-mesa-glx:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libgl1-mesa-glx:i386 (2.0 unstable [i386])
+Conf libgl1-mesa-glx:i386 (2.0 unstable [i386])' aptget install libgl1-mesa-glx:i386 -s

+ 78 - 0
test/libapt/configuration_test.cc

@@ -0,0 +1,78 @@
+#include <apt-pkg/configuration.h>
+
+#include <string>
+#include <vector>
+
+#include "assert.h"
+
+int main(int argc,const char *argv[]) {
+	Configuration Cnf;
+	std::vector<std::string> fds;
+
+	Cnf.Set("APT::Keep-Fds::",28);
+	Cnf.Set("APT::Keep-Fds::",17);
+	Cnf.Set("APT::Keep-Fds::2",47);
+	Cnf.Set("APT::Keep-Fds::","broken");
+	fds = Cnf.FindVector("APT::Keep-Fds");
+	equals(fds[0], "28");
+	equals(fds[1], "17");
+	equals(fds[2], "47");
+	equals(fds[3], "broken");
+	equals(fds.size(), 4);
+	equals(Cnf.Exists("APT::Keep-Fds::2"), true);
+	equals(Cnf.Find("APT::Keep-Fds::2"), "47");
+	equals(Cnf.FindI("APT::Keep-Fds::2"), 47);
+	equals(Cnf.Exists("APT::Keep-Fds::3"), false);
+	equals(Cnf.Find("APT::Keep-Fds::3"), "");
+	equals(Cnf.FindI("APT::Keep-Fds::3", 56), 56);
+	equals(Cnf.Find("APT::Keep-Fds::3", "not-set"), "not-set");
+
+	Cnf.Clear("APT::Keep-Fds::2");
+	fds = Cnf.FindVector("APT::Keep-Fds");
+	equals(fds[0], "28");
+	equals(fds[1], "17");
+	equals(fds[2], "");
+	equals(fds[3], "broken");
+	equals(fds.size(), 4);
+	equals(Cnf.Exists("APT::Keep-Fds::2"), true);
+
+	Cnf.Clear("APT::Keep-Fds",28);
+	fds = Cnf.FindVector("APT::Keep-Fds");
+	equals(fds[0], "17");
+	equals(fds[1], "");
+	equals(fds[2], "broken");
+	equals(fds.size(), 3);
+
+	Cnf.Clear("APT::Keep-Fds","");
+	equals(Cnf.Exists("APT::Keep-Fds::2"), false);
+
+	Cnf.Clear("APT::Keep-Fds",17);
+	Cnf.Clear("APT::Keep-Fds","broken");
+	fds = Cnf.FindVector("APT::Keep-Fds");
+	equals(fds.empty(), true);
+
+	Cnf.Set("APT::Keep-Fds::",21);
+	Cnf.Set("APT::Keep-Fds::",42);
+	fds = Cnf.FindVector("APT::Keep-Fds");
+	equals(fds[0], "21");
+	equals(fds[1], "42");
+	equals(fds.size(), 2);
+
+	Cnf.Clear("APT::Keep-Fds");
+	fds = Cnf.FindVector("APT::Keep-Fds");
+	equals(fds.empty(), true);
+
+	Cnf.CndSet("APT::Version", 42);
+	Cnf.CndSet("APT::Version", "66");
+	equals(Cnf.Find("APT::Version"), "42");
+	equals(Cnf.FindI("APT::Version"), 42);
+	equals(Cnf.Find("APT::Version", "33"), "42");
+	equals(Cnf.FindI("APT::Version", 33), 42);
+	equals(Cnf.Find("APT2::Version", "33"), "33");
+	equals(Cnf.FindI("APT2::Version", 33), 33);
+
+	//FIXME: Test for configuration file parsing;
+	// currently only integration/ tests test them implicitly
+
+	return 0;
+}

+ 1 - 1
test/libapt/globalerror_test.cc

@@ -101,7 +101,7 @@ int main(int argc,char *argv[])
 	longText.clear();
 	for (size_t i = 0; i < 50; ++i)
 		longText.append("РезийбёбAZ");
-	equals(_error->Warning(longText.c_str()), false);
+	equals(_error->Warning("%s", longText.c_str()), false);
 	equals(_error->PopMessage(text), false);
 	equals(text, longText);
 

+ 12 - 0
test/libapt/makefile

@@ -52,3 +52,15 @@ PROGRAM = StrUtil${BASENAME}
 SLIBS = -lapt-pkg
 SOURCE = strutil_test.cc
 include $(PROGRAM_H)
+
+# test the URI parsing stuff
+PROGRAM = URI${BASENAME}
+SLIBS = -lapt-pkg
+SOURCE = uri_test.cc
+include $(PROGRAM_H)
+
+# test the Configuration class
+PROGRAM = Configuration${BASENAME}
+SLIBS = -lapt-pkg
+SOURCE = configuration_test.cc
+include $(PROGRAM_H)

+ 112 - 0
test/libapt/uri_test.cc

@@ -0,0 +1,112 @@
+#include <apt-pkg/strutl.h>
+
+#include "assert.h"
+
+int main() {
+	// Basic stuff
+	{
+	URI U("http://www.debian.org:90/temp/test");
+	equals("http", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(90, U.Port);
+	equals("www.debian.org", U.Host);
+	equals("/temp/test", U.Path);
+	} {
+	URI U("http://jgg:foo@ualberta.ca/blah");
+	equals("http", U.Access);
+	equals("jgg", U.User);
+	equals("foo", U.Password);
+	equals(0, U.Port);
+	equals("ualberta.ca", U.Host);
+	equals("/blah", U.Path);
+	} {
+	URI U("file:/usr/bin/foo");
+	equals("file", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(0, U.Port);
+	equals("", U.Host);
+	equals("/usr/bin/foo", U.Path);
+	} {
+	URI U("cdrom:Moo Cow Rom:/debian");
+	equals("cdrom", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(0, U.Port);
+	equals("Moo Cow Rom", U.Host);
+	equals("/debian", U.Path);
+	} {
+	URI U("gzip:./bar/cow");
+	equals("gzip", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(0, U.Port);
+	equals(".", U.Host);
+	equals("/bar/cow", U.Path);
+	} {
+	URI U("ftp:ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb");
+	equals("ftp", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(0, U.Port);
+	equals("ftp.fr.debian.org", U.Host);
+	equals("/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", U.Path);
+	}
+
+	// RFC 2732 stuff
+	{
+	URI U("http://[1080::8:800:200C:417A]/foo");
+	equals("http", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(0, U.Port);
+	equals("1080::8:800:200C:417A", U.Host);
+	equals("/foo", U.Path);
+	} {
+	URI U("http://[::FFFF:129.144.52.38]:80/index.html");
+	equals("http", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(80, U.Port);
+	equals("::FFFF:129.144.52.38", U.Host);
+	equals("/index.html", U.Path);
+	} {
+	URI U("http://[::FFFF:129.144.52.38:]:80/index.html");
+	equals("http", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(80, U.Port);
+	equals("::FFFF:129.144.52.38:", U.Host);
+	equals("/index.html", U.Path);
+	} {
+	URI U("http://[::FFFF:129.144.52.38:]/index.html");
+	equals("http", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(0, U.Port);
+	equals("::FFFF:129.144.52.38:", U.Host);
+	equals("/index.html", U.Path);
+	}
+	/* My Evil Corruption of RFC 2732 to handle CDROM names! Fun for
+	   the whole family! */
+	{
+	URI U("cdrom:[The Debian 1.2 disk, 1/2 R1:6]/debian/");
+	equals("cdrom", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(0, U.Port);
+	equals("The Debian 1.2 disk, 1/2 R1:6", U.Host);
+	equals("/debian/", U.Path);
+	} {
+	URI U("cdrom:Foo Bar Cow/debian/");
+	equals("cdrom", U.Access);
+	equals("", U.User);
+	equals("", U.Password);
+	equals(0, U.Port);
+	equals("Foo Bar Cow", U.Host);
+	equals("/debian/", U.Path);
+	}
+
+	return 0;
+}

+ 0 - 18
test/makefile

@@ -11,12 +11,6 @@ SLIBS =
 SOURCE = mthdcat.cc
 include $(PROGRAM_H)
 
-# Program for testing methods
-PROGRAM=uritest
-SLIBS = -lapt-pkg
-SOURCE = uri.cc
-include $(PROGRAM_H)
-
 # Scratch program to test incomplete code fragments in
 PROGRAM=scratch-test
 SLIBS = -lapt-inst -lapt-pkg
@@ -31,18 +25,6 @@ LIB_MAKES = apt-pkg/makefile apt-inst/makefile
 SOURCE = testextract.cc
 include $(PROGRAM_H)
 
-# Program for testing the config file parser
-PROGRAM=conftest_clear
-SLIBS = -lapt-pkg
-SOURCE = conf_clear.cc
-include $(PROGRAM_H)
-
-# Program for testing the config file parser
-PROGRAM=conftest
-SLIBS = -lapt-pkg
-SOURCE = conf.cc
-include $(PROGRAM_H)
-
 # Program for testing the tar/deb extractor
 PROGRAM=testdeb
 SLIBS = -lapt-pkg -lapt-inst

+ 0 - 34
test/uri.cc

@@ -1,34 +0,0 @@
-#include <apt-pkg/strutl.h>
-#include <stdio.h>
-
-void Test(const char *Foo)
-{
-   URI U(Foo);
-   
-   printf("%s a='%s' u='%s' p='%s' port='%u'\n   h='%s' p='%s'\n",
-	  Foo,U.Access.c_str(),U.User.c_str(),U.Password.c_str(),
-	  U.Port,U.Host.c_str(),U.Path.c_str());
-}
-
-int main()
-{
-   // Basic stuff
-   Test("http://www.debian.org:90/temp/test");
-   Test("http://jgg:foo@ualberta.ca/blah");
-   Test("file:/usr/bin/foo");
-   Test("cdrom:Moo Cow Rom:/debian");
-   Test("gzip:./bar/cow");
-	   
-   // RFC 2732 stuff
-   Test("http://[1080::8:800:200C:417A]/foo");
-   Test("http://[::FFFF:129.144.52.38]:80/index.html");
-   Test("http://[::FFFF:129.144.52.38:]:80/index.html");
-   Test("http://[::FFFF:129.144.52.38:]/index.html");
-   
-   /* My Evil Corruption of RFC 2732 to handle CDROM names! Fun for 
-      the whole family! */
-   Test("cdrom:[The Debian 1.2 disk, 1/2 R1:6]/debian/");
-   Test("cdrom:Foo Bar Cow/debian/");
-      
-   Test("ftp:ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb");
-}