Bug#749854: Allow bootstrapping without texlive and gtk-doc-tools

Peter Pentchev roam at ringlet.net
Fri May 30 09:16:32 UTC 2014


Source: libtasn1-6
Version: 3.6-1
Severity: wishlist
Tags: patch

Hi,

Thanks for your work on maintaing libtasn1 in Debian!

As part of this year's "Bootstrappable Debian" Google Summer of Code
project I took a look at it to break a circular build dependency as
noted in the "Feedback Arc Set" section of
http://bootstrap.debian.net/amd64/ and, more specifically, at
http://bootstrap.debian.net/source/libtasn1-6_3.5-2.html
- texlive-latex-base depends on texlive-binaries
- texlive-binaries depends on libgs9
- libgs9 depends on libcups2
- libcups2 depends on libgnutls28
- libgnutls28 depends on libtasn1-6

What do you think about the attached patches that, only for the case of
building in the "stage1" profile designed for bootstrapping, disable the
rebuild of the PDF documentation so that libtasn1-6 no longer
build-depends on texlive-latex-base?

The first patch moves the PDF, HTML and info documentation into a brand
new package, libtasn1-6-doc.  The goal here is to be able to disable the
build at package granularity level: no matter what profile we're
building in, if we build a binary package it should have the same
contents as if it were built in any other profile (including the default
one).  So to disable the PDF documentation build, we move the PDF
documentation to a package that may be omitted entirely.

The second patch modifies the rules file to not build the -doc package
if the DEB_BUILD_PROFILES variable contains the word "stage1".  This is
done in a way that is compatible with the current Debian archive
infrastructure; this change may be uploaded now, even before the changes
to sbuild, apt, dpkg, etc are present in a stable release.  The
modification of the control file to add the <!profile.stage1> and the
"Build-Profiles: !stage1" notations will be sent in a separate bug
report.

Thanks again for your work on libtasn1 and on Debian in general!

-- System Information:
Debian Release: jessie/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'stable'), (500, 'oldstable')
Architecture: i386 (i686)
Foreign Architectures: amd64

Kernel: Linux 3.14-1-686-pae (SMP w/4 CPU cores)
Locale: LANG=bg_BG.UTF-8, LC_CTYPE=bg_BG.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

-- no debconf information

-- 
Peter Pentchev	roam at ringlet.net roam at FreeBSD.org p.penchev at storpool.com
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint 2EE7 A7A5 17FC 124C F115  C354 651E EFB0 2527 DF13
I've heard that this sentence is a rumor.
-------------- next part --------------
From ca737332d95e9105fb7cd85c93aa926ad8122e0a Mon Sep 17 00:00:00 2001
From: Peter Pentchev <roam at ringlet.net>
Date: Thu, 29 May 2014 14:06:39 +0300
Subject: [PATCH 1/2] Move the PDF, HTML and info to libtasn1-6-doc.

Break out all the non-manpage documentation into a new package.
To avoid user astonishment, let libtasn1-6-dev recommend the new -doc
package so that the documentation will most probably remain installed.

The main goal is to be able to run a modified build, e.g. in a "stage1"
bootstrapping profile, that has fewer dependencies and does not build
the documentation at all, but produces the same non-doc binary packages.
---
 debian/control                 | 20 ++++++++++++++++++++
 debian/libtasn1-6-dev.doc-base | 13 -------------
 debian/libtasn1-6-dev.info     |  1 -
 debian/libtasn1-6-dev.install  |  3 ---
 debian/libtasn1-6-dev.links    |  1 -
 debian/libtasn1-6-doc.doc-base | 13 +++++++++++++
 debian/libtasn1-6-doc.info     |  1 +
 debian/libtasn1-6-doc.install  |  3 +++
 debian/libtasn1-6-doc.links    |  1 +
 debian/rules                   |  2 +-
 10 files changed, 39 insertions(+), 19 deletions(-)
 delete mode 100644 debian/libtasn1-6-dev.doc-base
 delete mode 100644 debian/libtasn1-6-dev.info
 delete mode 100644 debian/libtasn1-6-dev.links
 create mode 100644 debian/libtasn1-6-doc.doc-base
 create mode 100644 debian/libtasn1-6-doc.info
 create mode 100644 debian/libtasn1-6-doc.install
 create mode 100644 debian/libtasn1-6-doc.links

diff --git a/debian/control b/debian/control
index 5ad6d3e..4d45777 100644
--- a/debian/control
+++ b/debian/control
@@ -14,6 +14,7 @@ Package: libtasn1-6-dev
 Section: libdevel
 Architecture: any
 Depends: libtasn1-6 (= ${binary:Version}), ${misc:Depends}
+Recommends: libtasn1-6-doc (= ${source:Version})
 Conflicts: libtasn1-dev
 Provides: libtasn1-dev
 Priority: optional
@@ -29,6 +30,25 @@ Description: Manage ASN.1 structures (development)
  .
  This package contains header files and libraries for static linking.
 
+Package: libtasn1-6-doc
+Section: doc
+Architecture: all
+Depends: ${misc:Depends}
+Breaks: libtasn1-6-dev (<< 3.6-2)
+Replaces: libtasn1-6-dev (<< 3.6-2)
+Priority: optional
+Description: Manage ASN.1 structures (documentation)
+ Manage ASN1 (Abstract Syntax Notation One) structures.
+ The main features of this library are:
+   * on-line ASN1 structure management that doesn't require any C code
+     file generation.
+   * off-line ASN1 structure management with C code file generation
+     containing an array.
+   * DER (Distinguish Encoding Rules) encoding
+   * no limits for INTEGER and ENUMERATED values
+ .
+ This package contains the documentation for developing with libtasn1.
+
 Package: libtasn1-6-dbg
 Section: debug
 Architecture: any
diff --git a/debian/libtasn1-6-dev.doc-base b/debian/libtasn1-6-dev.doc-base
deleted file mode 100644
index b41da7a..0000000
--- a/debian/libtasn1-6-dev.doc-base
+++ /dev/null
@@ -1,13 +0,0 @@
-Document: libtasn1
-Title: Manual for Libtasn1
-Author: Fabio Fiorina, Simon Josefsson
-Abstract: This manual is for Libtasn1, which is a library for Abstract
- Syntax Notation One (ASN.1) and Distinguish Encoding Rules (DER) manipulation.
-Section: Programming/C
-
-Format: PDF
-Files: /usr/share/doc/libtasn1-6-dev/libtasn1.pdf
-
-Format: info
-Index: /usr/share/info/libtasn1.info.gz
-Files: /usr/share/info/libtasn1.info*
diff --git a/debian/libtasn1-6-dev.info b/debian/libtasn1-6-dev.info
deleted file mode 100644
index 18ab22d..0000000
--- a/debian/libtasn1-6-dev.info
+++ /dev/null
@@ -1 +0,0 @@
-debian/tmp/usr/share/info/*info*
diff --git a/debian/libtasn1-6-dev.install b/debian/libtasn1-6-dev.install
index dcb646b..5b6a11b 100644
--- a/debian/libtasn1-6-dev.install
+++ b/debian/libtasn1-6-dev.install
@@ -1,8 +1,5 @@
-../../doc/libtasn1.pdf usr/share/doc/libtasn1-6-dev
-../../doc/fdl-1.3.texi usr/share/doc/libtasn1-6-dev
 usr/include/*
 usr/lib/*/lib*.a
 usr/lib/*/lib*.so
 usr/lib/*/pkgconfig/*.pc
 usr/share/man/man3/*
-usr/share/gtk-doc/html
diff --git a/debian/libtasn1-6-dev.links b/debian/libtasn1-6-dev.links
deleted file mode 100644
index 1f0dfd1..0000000
--- a/debian/libtasn1-6-dev.links
+++ /dev/null
@@ -1 +0,0 @@
-usr/share/gtk-doc/html/libtasn1 usr/share/doc/libtasn1-6-dev/reference
diff --git a/debian/libtasn1-6-doc.doc-base b/debian/libtasn1-6-doc.doc-base
new file mode 100644
index 0000000..36813d0
--- /dev/null
+++ b/debian/libtasn1-6-doc.doc-base
@@ -0,0 +1,13 @@
+Document: libtasn1
+Title: Manual for Libtasn1
+Author: Fabio Fiorina, Simon Josefsson
+Abstract: This manual is for Libtasn1, which is a library for Abstract
+ Syntax Notation One (ASN.1) and Distinguish Encoding Rules (DER) manipulation.
+Section: Programming/C
+
+Format: PDF
+Files: /usr/share/doc/libtasn1-6-doc/libtasn1.pdf
+
+Format: info
+Index: /usr/share/info/libtasn1.info.gz
+Files: /usr/share/info/libtasn1.info*
diff --git a/debian/libtasn1-6-doc.info b/debian/libtasn1-6-doc.info
new file mode 100644
index 0000000..18ab22d
--- /dev/null
+++ b/debian/libtasn1-6-doc.info
@@ -0,0 +1 @@
+debian/tmp/usr/share/info/*info*
diff --git a/debian/libtasn1-6-doc.install b/debian/libtasn1-6-doc.install
new file mode 100644
index 0000000..d47a4a8
--- /dev/null
+++ b/debian/libtasn1-6-doc.install
@@ -0,0 +1,3 @@
+../../doc/libtasn1.pdf usr/share/doc/libtasn1-6-doc
+../../doc/fdl-1.3.texi usr/share/doc/libtasn1-6-doc
+usr/share/gtk-doc/html
diff --git a/debian/libtasn1-6-doc.links b/debian/libtasn1-6-doc.links
new file mode 100644
index 0000000..15ede1f
--- /dev/null
+++ b/debian/libtasn1-6-doc.links
@@ -0,0 +1 @@
+usr/share/gtk-doc/html/libtasn1 usr/share/doc/libtasn1-6-doc/reference
diff --git a/debian/rules b/debian/rules
index b4917b3..2410d23 100755
--- a/debian/rules
+++ b/debian/rules
@@ -18,7 +18,7 @@ DEB_DH_INSTALL_SOURCEDIR = debian/tmp
 DEB_DH_MAKESHLIBS_ARGS_ALL := -V 'libtasn1-6 (>=3.4-0)'
 DEB_COMPRESS_EXCLUDE := libtasn1.pdf
 
-build/libtasn1-3-dev::
+build/libtasn1-6-doc::
 	if ! test -e doc/libtasn1.pdf ; then \
 		$(MAKE) pdf ; fi
 	if ! test -e doc/libtasn1.html ; then \
-- 
2.0.0.rc2

-------------- next part --------------
From 0a0d8484b436676480e2cbc751da600a740a988c Mon Sep 17 00:00:00 2001
From: Peter Pentchev <roam at ringlet.net>
Date: Thu, 29 May 2014 15:34:36 +0300
Subject: [PATCH 2/2] stage1: don't build -doc, drop dependencies.

Add build (d/rules) support for the stage1 build profile.

If the DEB_BUILD_PROFILES variable contains the word "stage1",
the HTML and PDF documentation will not be rebuilt and the -doc
package will not be created.  This is an intermediate step that
may be carried out now, since it does not add the profile.*
notation to d/control that the Debian archive infrastructure
cannot parse yet.
---
 debian/control |  2 ++
 debian/rules   | 11 ++++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/debian/control b/debian/control
index 4d45777..47cf4d4 100644
--- a/debian/control
+++ b/debian/control
@@ -2,6 +2,8 @@ Source: libtasn1-6
 Section: libs
 Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint at lists.alioth.debian.org>
 Uploaders: Andreas Metzler <ametzler at debian.org>, Eric Dorland <eric at debian.org>, James Westby <jw+debian at jameswestby.net>, Simon Josefsson <simon at josefsson.org>
+# For stage1 bootstrapping builds drop the build dependency on
+# gtk-doc-tools and texlive-latex-base.
 Build-Depends: debhelper (>= 9), cdbs (>= 0.4.93), bison, gtk-doc-tools,
  texinfo, autotools-dev, texlive-latex-base
 Standards-Version: 3.9.5
diff --git a/debian/rules b/debian/rules
index 2410d23..b83d672 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,14 +1,21 @@
 #! /usr/bin/make -f
 # Build the libtasn1 packages for Debian.
 
+ifneq (,$(filter stage1,$(DEB_BUILD_PROFILES)))
+DH_OPTIONS	+= -Nlibtasn1-6-doc
+export DH_OPTIONS
+endif
+
 include /usr/share/cdbs/1/rules/debhelper.mk
 include /usr/share/cdbs/1/class/autotools.mk
 
 DEB_CONFIGURE_EXTRA_FLAGS = --enable-ld-version-script --with-packager=Debian \
 	--with-packager-bug-reports=http://bugs.debian.org/ \
 	--with-packager-version="$(DEB_VERSION)" \
-	--enable-gtk-doc --enable-gtk-doc-pdf \
 	--libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH)
+ifeq (,$(filter stage1,$(DEB_BUILD_PROFILES)))
+DEB_CONFIGURE_EXTRA_FLAGS += --enable-gtk-doc --enable-gtk-doc-pdf
+endif
 
 ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
 DEB_MAKE_CHECK_TARGET = check
@@ -18,8 +25,10 @@ DEB_DH_INSTALL_SOURCEDIR = debian/tmp
 DEB_DH_MAKESHLIBS_ARGS_ALL := -V 'libtasn1-6 (>=3.4-0)'
 DEB_COMPRESS_EXCLUDE := libtasn1.pdf
 
+ifneq (,$(filter stage1,$(DEB_BUILD_PROFILES)))
 build/libtasn1-6-doc::
 	if ! test -e doc/libtasn1.pdf ; then \
 		$(MAKE) pdf ; fi
 	if ! test -e doc/libtasn1.html ; then \
 		$(MAKE) html ; fi
+endif
-- 
2.0.0.rc2

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-gnutls-maint/attachments/20140530/1085d2c0/attachment.sig>


More information about the Pkg-gnutls-maint mailing list