summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schauer <josch@debian.org>2016-11-09 15:28:15 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2016-11-09 16:18:54 +0100
commitc5f22e483cc0f31f2938874370ac776e40792069 (patch)
treeff6f63b7fd4f6cd84908c7b4d890e5872b64f002
parent9444da765692b9f49a06720b5a75a168d6552c1c (diff)
add support for Build-Depends/Conflicts-Arch
These new enum values might cause "interesting" behaviour in tools not expecting them – like an old apt would think a Build-Conflicts-Arch is some sort of Build-Depends – but that can't reasonably be avoided and effects only packages using B-D/C-A so if there is any breakage the tools can easily be adapted. The APT_PKG_RELEASE number is increased so that libapt users can detect the availability of these new enum fields via: #if APT_PKG_ABI > 500 || (APT_PKG_ABI == 500 && APT_PKG_RELEASE >= 1) Closes: #837395
-rw-r--r--apt-pkg/contrib/macros.h2
-rw-r--r--apt-pkg/deb/debsrcrecords.cc8
-rw-r--r--apt-pkg/srcrecords.cc4
-rw-r--r--apt-pkg/srcrecords.h3
-rw-r--r--apt-private/private-source.cc4
5 files changed, 14 insertions, 7 deletions
diff --git a/apt-pkg/contrib/macros.h b/apt-pkg/contrib/macros.h
index 2727fd81f..bc1f523ea 100644
--- a/apt-pkg/contrib/macros.h
+++ b/apt-pkg/contrib/macros.h
@@ -165,7 +165,7 @@
// See also buildlib/libversion.mak
#define APT_PKG_MAJOR 5
#define APT_PKG_MINOR 0
-#define APT_PKG_RELEASE 0
+#define APT_PKG_RELEASE 1
#define APT_PKG_ABI ((APT_PKG_MAJOR * 100) + APT_PKG_MINOR)
#endif
diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc
index d296161d6..5f0a75cd9 100644
--- a/apt-pkg/deb/debsrcrecords.cc
+++ b/apt-pkg/deb/debsrcrecords.cc
@@ -103,14 +103,16 @@ bool debSrcRecordParser::BuildDepends(std::vector<pkgSrcRecords::Parser::BuildDe
unsigned int I;
const char *Start, *Stop;
BuildDepRec rec;
- const char *fields[] = {"Build-Depends",
+ const char *fields[] = {"Build-Depends",
"Build-Depends-Indep",
"Build-Conflicts",
- "Build-Conflicts-Indep"};
+ "Build-Conflicts-Indep",
+ "Build-Depends-Arch",
+ "Build-Conflicts-Arch"};
BuildDeps.clear();
- for (I = 0; I < 4; I++)
+ for (I = 0; I < 6; I++)
{
if (ArchOnly && (I == 1 || I == 3))
continue;
diff --git a/apt-pkg/srcrecords.cc b/apt-pkg/srcrecords.cc
index 53d7e604d..a76604a8d 100644
--- a/apt-pkg/srcrecords.cc
+++ b/apt-pkg/srcrecords.cc
@@ -139,7 +139,9 @@ const char *pkgSrcRecords::Parser::BuildDepType(unsigned char const &Type)
const char *fields[] = {"Build-Depends",
"Build-Depends-Indep",
"Build-Conflicts",
- "Build-Conflicts-Indep"};
+ "Build-Conflicts-Indep",
+ "Build-Depends-Arch",
+ "Build-Conflicts-Arch"};
if (unlikely(Type >= sizeof(fields)/sizeof(fields[0])))
return "";
return fields[Type];
diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h
index 9cc58c5b4..a3c8444de 100644
--- a/apt-pkg/srcrecords.h
+++ b/apt-pkg/srcrecords.h
@@ -56,7 +56,8 @@ APT_IGNORE_DEPRECATED_POP
public:
enum BuildDep {BuildDepend=0x0,BuildDependIndep=0x1,
- BuildConflict=0x2,BuildConflictIndep=0x3};
+ BuildConflict=0x2,BuildConflictIndep=0x3,
+ BuildDependArch=0x4,BuildConflictArch=0x5};
struct BuildDepRec
{
diff --git a/apt-private/private-source.cc b/apt-private/private-source.cc
index fab1b4532..1e819a668 100644
--- a/apt-private/private-source.cc
+++ b/apt-private/private-source.cc
@@ -620,7 +620,9 @@ static void WriteBuildDependencyPackage(std::ostringstream &buildDepsPkgFile,
for (auto const &dep: Dependencies)
{
std::string * type;
- if (dep.Type == pkgSrcRecords::Parser::BuildConflict || dep.Type == pkgSrcRecords::Parser::BuildConflictIndep)
+ if (dep.Type == pkgSrcRecords::Parser::BuildConflict ||
+ dep.Type == pkgSrcRecords::Parser::BuildConflictIndep ||
+ dep.Type == pkgSrcRecords::Parser::BuildConflictArch)
type = &conflicts;
else
type = &depends;