Source: shared-mime-info
Version: 1.3-1
Severity: wishlist
Tags: patch

Hi,

Thanks for taking care of shared-mime-info in Debian!

As part of this year's "Bootstrappable Debian" Google Summer of Code
project I took a look at shared-mime-info 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/shared-mime-info.html and the
version-specific pages linked from it.  There are two primary goals to
my work on this GSoC project:
- The first goal is to modify some packages so that they may be built in
  some limited way ("nocheck", binary-only, or build profiles like
  "stage1") without some of their usual build dependencies.  In most
  cases this is caused by one or more dependency loops between binary
  and source packages, so that a source package requires for its
  building, directly or indirectly, one of its own binary packages to be
  already built.  The modifications make the source build in a limited
  fashion (not generating documentation, not running tests, not building
  some of the binary packages) so that this may happen with only the
  rest of the build dependencies, so Debian may be bootstrapped on a new
  architecture starting from a very few cross-built toolchain packages
  and then moving along, source package by source package.
- The second goal, which is actually closely related to the first, is
  that in the process of modifications, any changes (some files not
  regenerated, others not built at all) can be made with binary package
  level granularity.  This means that if a binary package is built at
  all during a limited build, then it must have the same contents as the
  same binary package resulting from a full build.  The point here is to
  avoid breakage if other packages in the archive depend on some
  functionality provided by the omitted files; if so, it should be
  obvious that the functionality is missing, and the clearest way to do
  that is by omitting a full binary package or, rather, delaying its
  build until the rest of the build dependencies are present.

The problem with shared-mime-info is that it uses docbook-utils to
rebuild its specification document, but docbook-utils has several
indirect dependency paths back to shared-mime-info.  The most
straightforward way to solve this problem is to move the specification
to its own binary package, an architecture-independent one, and only
depend on docbook-utils when actually building that.  In this way,
"normal" buildd and bootstrap builds (binary packages only) will not
ever need to bring in docbook-utils, and if any need arises to rebuild
the specification, this may be done in a full build on an
already-bootstrapped architecture with a docbook-utils package
available.

So what do you think about the attached patch that implements this -
creates a new binary package, shared-mime-info-common, modifies the
rules file so that only the building of the new package uses
docbook-utils, and consequently moves docbook-utils to B-D-I?

If anything should go wrong with the patch, it is also available at
https://gitorious.org/roam-debian-bootstrap/shared-mime-info-debian/commits/roam-indep

Thanks in advance for your time, and thanks for your work on Debian!

G'luck,
Peter

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

Kernel: Linux 3.14-2-amd64 (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
From df5db752fb1d6a8716f2433a09e6edcfa8a26288 Mon Sep 17 00:00:00 2001
From: Peter Pentchev <r...@ringlet.net>
Date: Mon, 21 Jul 2014 00:05:26 +0300
Subject: [PATCH] Break the spec into a new shared-mime-info-common.

This breaks several instances of a build dependency loop involving
docbook-utils; see the version-specific pages linked from
bootstrap.debian.net/source/shared-mime-info.html
---
 debian/control                          | 19 +++++++++++++++----
 debian/rules                            |  3 ++-
 debian/shared-mime-info-common.doc-base | 12 ++++++++++++
 debian/shared-mime-info-common.install  |  1 +
 debian/shared-mime-info.doc-base        | 12 ------------
 debian/shared-mime-info.docs            |  3 ---
 6 files changed, 30 insertions(+), 20 deletions(-)
 create mode 100644 debian/shared-mime-info-common.doc-base
 create mode 100644 debian/shared-mime-info-common.install
 delete mode 100644 debian/shared-mime-info.doc-base
 delete mode 100644 debian/shared-mime-info.docs

diff --git a/debian/control b/debian/control
index 4b1ec20..4682fc2 100644
--- a/debian/control
+++ b/debian/control
@@ -6,12 +6,11 @@ Uploaders: Emilio Pozuelo Monfort <po...@debian.org>
 Build-Depends: cdbs (>= 0.4.35),
                debhelper (>= 7),
                autotools-dev,
-               docbook-utils,
-               docbook-xml,
                libglib2.0-dev (>= 2.6.0),
                libxml2-dev (>= 2.4),
                intltool (>= 0.35),
                libxml2-utils
+Build-Depends-Indep: docbook-utils, docbook-xml
 Standards-Version: 3.9.5
 Vcs-Svn: svn://anonscm.debian.org/pkg-freedesktop/trunk/shared-mime-info
 Vcs-Browser: 
http://anonscm.debian.org/viewvc/pkg-freedesktop/trunk/shared-mime-info/
@@ -20,14 +19,26 @@ Homepage: 
http://freedesktop.org/wiki/Software/shared-mime-info
 Package: shared-mime-info
 Architecture: any
 Depends: ${misc:Depends},
-         ${shlibs:Depends}
+         ${shlibs:Depends},
+         shared-mime-info-common
 Conflicts: libglib2.0-0 (<< 2.17.2),
            tracker (<< 0.6.90),
            libgnomevfs2-0 (<< 1:2.24.0)
 Multi-Arch: foreign
-Description: FreeDesktop.org shared MIME database and spec
+Description: FreeDesktop.org shared MIME database
  This is the shared MIME-info database from the X Desktop Group. It is required
  by any program complying to the Shared MIME-Info Database spec, which is also
  included in this package.
  .
  At this time at least ROX, GNOME, KDE and XFCE use this database.
+
+Package: shared-mime-info-common
+Architecture: all
+Depends: ${misc:Depends}
+Multi-Arch: foreign
+Description: FreeDesktop.org shared MIME database specification
+ This is the shared MIME-info database from the X Desktop Group. It is required
+ by any program complying to the Shared MIME-Info Database spec, which is also
+ included in this package.
+ .
+ This package contains the Shared MIME-info Database Specification.
diff --git a/debian/rules b/debian/rules
index 4376ef3..3518568 100755
--- a/debian/rules
+++ b/debian/rules
@@ -6,11 +6,12 @@ include /usr/share/cdbs/1/rules/debhelper.mk
 
 DEB_CONFIGURE_EXTRA_FLAGS += --disable-update-mimedb
 DEB_COMPRESS_EXCLUDE += ".pdf"
+DEB_DESTDIR = $(CURDIR)/debian/shared-mime-info
 
 makebuilddir::
        rm -f freedesktop.org.xml
 
-build/shared-mime-info::
+build/shared-mime-info-common::
        docbook2pdf shared-mime-info-spec.xml && \
        docbook2html -o shared-mime-info-spec.html shared-mime-info-spec.xml
 
diff --git a/debian/shared-mime-info-common.doc-base 
b/debian/shared-mime-info-common.doc-base
new file mode 100644
index 0000000..d9760c7
--- /dev/null
+++ b/debian/shared-mime-info-common.doc-base
@@ -0,0 +1,12 @@
+Document: shared-mime-info
+Title: Shared MIME-info Database specification
+Author: Thomas Leonard and others
+Abstract: This document specifies a unified MIME database system for use by 
application developers.
+Section: Help/Standards
+
+Format: pdf
+Files: /usr/share/doc/shared-mime-info/shared-mime-info-spec.pdf
+
+Format: html
+Index: /usr/share/doc/shared-mime-info/shared-mime-info-spec.html/index.html
+Files: /usr/share/doc/shared-mime-info/shared-mime-info-spec.html/*.html
diff --git a/debian/shared-mime-info-common.install 
b/debian/shared-mime-info-common.install
new file mode 100644
index 0000000..67cb136
--- /dev/null
+++ b/debian/shared-mime-info-common.install
@@ -0,0 +1 @@
+shared-mime-info-spec.* usr/share/doc/shared-mime-info
diff --git a/debian/shared-mime-info.doc-base b/debian/shared-mime-info.doc-base
deleted file mode 100644
index d9760c7..0000000
--- a/debian/shared-mime-info.doc-base
+++ /dev/null
@@ -1,12 +0,0 @@
-Document: shared-mime-info
-Title: Shared MIME-info Database specification
-Author: Thomas Leonard and others
-Abstract: This document specifies a unified MIME database system for use by 
application developers.
-Section: Help/Standards
-
-Format: pdf
-Files: /usr/share/doc/shared-mime-info/shared-mime-info-spec.pdf
-
-Format: html
-Index: /usr/share/doc/shared-mime-info/shared-mime-info-spec.html/index.html
-Files: /usr/share/doc/shared-mime-info/shared-mime-info-spec.html/*.html
diff --git a/debian/shared-mime-info.docs b/debian/shared-mime-info.docs
deleted file mode 100644
index 8d768bb..0000000
--- a/debian/shared-mime-info.docs
+++ /dev/null
@@ -1,3 +0,0 @@
-shared-mime-info-spec.xml
-shared-mime-info-spec.pdf
-shared-mime-info-spec.html
-- 
2.1.0.rc1

Attachment: signature.asc
Description: Digital signature

Reply via email to