Debian Weekly News - E-Mail-Seite

Datum: Son, 10. Jan 1999 13:31:09 -0500
Von: Ben Collins <bmc@visi.net>
An: debian-devel@lists.debian.org
Cc: debian-dpkg@lists.debian.org
Betreff: Source-Depends-Implementation
X-Mailer: Mutt 0.95i
X-Mailing-List: <debian-devel@lists.debian.org> archive/latest/24697

Dies ist ein kleiner Hack an dpkg-source und controllib.pl, um ein
Source-Depends-Feld im allgemeinen Teil der »control«-Datei zu
ermöglichen. Ich bin danach gefragt worden und hier ist es somit,
falls jemand die Richtlinien für die Verwendung schreiben möchte.

Meiner Meinung nach sollte nichts von der »base«-Liste im
Source-Depends-Feld auftauchen. Nur nicht-Standard -devs und
spezielle Binärpakete (z.B. sgml, tetex, nasm). Es gibt auch keine
Versionierung im Source-Depends-Feld, da ich nicht glaubte, dass dies
notwendig sei. Sie mögen es anders empfinden.

Die gesamte Funktionalität besteht darin, das Source-Depends-Feld in
die .dsc-Datei aufzunehmen. Dies kann später von apt oder dbuild/buildd
dazu verwendet werden zu verifizieren, dass alle zum Bau benötigten
Pakete installiert sind. Ich lasse auch »dpkg-source -x« die Liste
überprüfen, um sicherzustellen, dass alles installiert ist; andernfalls
wird nur eine Warnung ausgegeben.

Den Hack den ich zum Überprüfen, ob ein Paket installiert ist, verwendet
habe, ist »dpkg -l $buildpackage«. Es gibt wahrscheinlich eine bessere
Methode, also tun Sie sich keinen Zwang bei der Korrektur an. Auch habe
ich keine Fehlerüberprüfung für den Feld-Inhalt (fehlende »,« und so
etwas) eingebaut.

Die einzige notwendige Änderung in controllib.pl bestand darin, das
Source-Depends-Feld zu der Liste der Felder, die ein zweiten
Großbuchstaben brauchten, hinzuzufügen.

Ich überlasse es Euch Leuten, ob dies Ihre Bedürfnisse erfüllt oder
nicht, und Ian, ob dies den Weg in die Quellen von dpkg findet oder nicht.

--
-----    -- - -------- --------- ----  -------  -----  - - ---   --------
Ben Collins <b.m.collins@larc.nasa.gov>                  Debian GNU/Linux
UnixGroup Admin - Jordan Systems Inc.                 bcollins@debian.org
------ -- ----- - - -------   ------- -- Die Wahl der GNU Generation

--- dpkg-1.4.1/debian/changelog
+++ dpkg-1.4.1.1/debian/changelog
@@ -1,3 +1,9 @@
+dpkg (1.4.1.1) unstable; urgency=low
+
+  * Modified dpkg-source to enable using Source-Depends
+
+ -- Ben Collins <bcollins@debian.org>  Sun, 10 Jan 1999 11:36:15 -0500
+
 dpkg (1.4.1) unstable; urgency=low

   * Maintainer release by IWJ.
--- dpkg-1.4.1/scripts/controllib.pl
+++ dpkg-1.4.1.1/scripts/controllib.pl
@@ -1,7 +1,8 @@

 $parsechangelog= 'dpkg-parsechangelog';

-grep($capit{lc $_}=$_, qw(Pre-Depends Standards-Version Installed-Size));
+grep($capit{lc $_}=$_, qw(Pre-Depends Standards-Version Installed-Size
+     Source-Depends));

 $substvar{'Format'}= 1.5;
 $substvar{'Newline'}= "\n";
--- dpkg-1.4.1/scripts/dpkg-source.pl
+++ dpkg-1.4.1.1/scripts/dpkg-source.pl
@@ -1,7 +1,7 @@

 my $dpkglibdir = ".";
-my $version = "1.3.0"; # This line modified by Makefile
+my $version = "1.3.1"; # This line modified by Makefile

 my @filesinarchive;
 my %dirincluded;
@@ -51,7 +51,8 @@

 $i = 100;
 grep ($fieldimps {$_} = $i--,
-      qw (Source Version Binary Maintainer Architecture Standards-Version));
+      qw (Source Version Binary Maintainer Architecture Standards-Version
+	  Source-Depends));

 while (@ARGV && $ARGV[0] =~ m/^-/) {
     $_=shift(@ARGV);
@@ -146,7 +147,7 @@
                 $f{$_}= $v;
             } elsif (m/^(Package|Essential|Pre-Depends|Depends|Provides)$/ ||
                      m/^(Recommends|Suggests|Optional|Conflicts|Replaces)$/ ||
-                     m/^(Description|Section|Priority)$/ ||
+                     m/^(Description|Section|Priority|Source-Depends)$/ ||
                      m/^X[CS]+-/i) {
             } else {
                 &unknown("package's section of control info file");
@@ -155,7 +156,7 @@
             if (m/^Source$/) {
                 &setsourcepackage;
-            } elsif (m/^Version$/) {
+            } elsif (m/^Version$|^Source-Depends$/) {
                 $f{$_}= $v;
             } elsif (s/^X[BS]*C[BS]*-//i) {
                 $f{$_}= $v;
@@ -476,6 +477,15 @@
     $sourcepackage =~ m/^[0-9a-z]./ ||
         &error("source package name is too short or starts with non-alphanum");

+    $sourcedepends = $fi{'S Source-Depends'};
+    if ($sourcedepends ne "") {
+	for $buildpackage (split(',', $sourcedepends)) {
+	    $temp = `dpkg -l $buildpackage`;
+	    if ($temp eq "") {
+		&warn("Source-Depends: $buildpackage is not installed");
+	    }
+	}
+    }
     $version= $fi{'S Version'};
     $version =~ m/[^-+:.0-9a-zA-Z]/ &&
         &error("version number contains illegal character \`$&'");

Wenn Sie diesen Newsletter wöchentlich in Ihrer Mailbox haben wollen, abonnieren Sie die Mailingliste debian-news-german.

Hier gibt es ältere Ausgaben dieser Nachrichtenseite.

Diese Ausgabe der wöchentlichen Debian-Nachrichten wurde von Joey Hess erstellt.