Source: ijs Version: 0.35-10 Severity: wishlist Tags: patch Hi, Thanks a lot for taking care of ijs in Debian, and thanks a lot to Daniel Schepler for all of his work on bootstrapping Debian and teaching source packages about build profiles! I came across ijs as part of this year's "Bootstrappable Debian" GSoC project, where I try to modify the packages from the Type 2 Self-Cycles and the Feedback Arc Set tables shown at http://bootstrap.debian.net/amd64/ - and ijs with its dependencies on ghostscript and docbook-utils comes up in both. This patch is kind of a follow-up to #738332 in spirit (thanks a lot, Daniel!), but it provides a slightly different means of solving the circular build dependency problem. As described in the "Profile-built binary packages" section of https://wiki.debian.org/BuildProfileSpec#Profile_built_binary_packages one of the goals of the introduction of build profiles is to have the same binary package have the same contents (thus making sure that it provides the same functionality needed by other packages) in all profiles that it is built in. Hence, here's a patch that breaks the documentation out into a new arch:all package, just as Andreas Metzler already did with libtasn1-6 in response to #749854, and moves the doc build tools to Build-Depends-Indep. This makes sure that during bootstrap builds, when only arch-dependent packages are built, the doc tools will not be needed and the build dependency cycle will be broken. If something goes wrong with the patch, it is also available at https://gitorious.org/roam-debian-bootstrap/ijs-debian/commits/roam-stage1-indep Of course, in this particular case it's a bit of a stretch to imagine a package depending on the presence of a PDF file in the libijs-dev binary package, but IMHO it would still be a worthwhile change, if only for the reason that it may be uploaded to the archive and become functional right now. If the stage1 profile route is used, there would either be an additional step needed in the bootstrapping (remove the ghostscript, docbook, and docbook-utils dependencies), or the debian/control file would have to be modified to include <!profile.stage1> annotations for these build dependencies - and, as witnessed by #744246, the Debian buildd and archive infrastructure is still not ready for that, so such a change would have to wait for the release of Jessie. The B-D-I way, at the cost of an additional binary package, solves this problem nicely with the already-available tools and infrastructure. Of course, as package maintainers, it's your call in the end; if you have any concerns or additional questions, please do not hesitate to let me know! Thanks in advance for your time, and thanks again for your Debian work! 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-1-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 -- Peter Pentchev roam@ringlet.net roam@FreeBSD.org p.penchev@storpool.com PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint 2EE7 A7A5 17FC 124C F115 C354 651E EFB0 2527 DF13
From eaab0819d13ea08126ff93d9ac8a10b7f98c3f93 Mon Sep 17 00:00:00 2001 From: Peter Pentchev <roam@ringlet.net> Date: Fri, 20 Jun 2014 12:45:40 +0300 Subject: [PATCH] Break the PDF documentation out into libijs-doc. One of the goals of the introduction of build profiles is that the changes made to the packages should be at binary package level granularity, that is, if a binary package is built at all in a build profile, it should have exactly the same contents as the same binary package built in any other build profile, including the default one. For more information, see https://wiki.debian.org/BuildProfileSpec#Profile_built_binary_packages Thus, it would be much preferable if the contents of the libijs-dev package were not different in the default build profile and the stage1 one. The best way to achieve that is to break the documentation out into an architecture-independent binary package of its own, then move the documentation tools into Build-Depends-Indep, so that they will not be required for the architecture-specific bootstrap build - the bootstrap build process will not attempt to build arch:all packages if it can avoid it, the ones already built in the Debian archive will be used. Hence: - create a new binary package, libijs-doc - have libijs-dev recommend libijs-doc, so that it will be installed in the "install recommended packages by default" Debian setup - move ghostscript, docbook, and docbook-utils to B-D-I - move ijs_spec.pdf to debian/libijs-doc.docs - rework the rules file to build the documentation depending on whether arch:all packages are built, not on the build profile anymore. --- debian/control | 31 +++++++++++++++++++++++++++---- debian/libijs-doc.docs | 1 + debian/rules | 11 +++++------ 3 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 debian/libijs-doc.docs diff --git a/debian/control b/debian/control index 66d49fc..08fbe31 100644 --- a/debian/control +++ b/debian/control @@ -10,10 +10,10 @@ Build-Depends: cdbs, autoconf, debhelper (>= 9~), dh-buildinfo, - devscripts, - ghostscript, - docbook, + devscripts +Build-Depends-Indep: docbook, docbook-utils, + ghostscript Standards-Version: 3.9.5 Homepage: http://www.linuxprinting.org/ijs/ Vcs-Git: https://alioth.debian.org/anonscm/git/printing/ijs.git @@ -26,6 +26,7 @@ Multi-Arch: same Depends: ${misc:Depends}, libc6-dev, libijs-0.35 (= ${binary:Version}) +Recommends: libijs-doc Description: IJS raster image transport protocol: development files IJS (InkJet Server) is, first and foremost, a protocol for transmission of raster page images. This snapshot provides a reference implementation of @@ -40,7 +41,7 @@ Description: IJS raster image transport protocol: development files is used by the hpijs and ijsgimpprint drivers. . Code for both the client- and server-side is included in the library. This - package provides a static library, development headers and documentation. + package provides a static library and development headers. Package: libijs-0.35 Section: libs @@ -64,3 +65,25 @@ Description: IJS raster image transport protocol: shared library . Code for both the client- and server-side is included in the library. This package provides the shared library. + +Package: libijs-doc +Section: doc +Architecture: all +Breaks: libijs-dev (<< 0.35-11~) +Replaces: libijs-dev (<< 0.35-11~) +Depends: ${misc:Depends} +Description: IJS raster image transport protocol: documentation + IJS (InkJet Server) is, first and foremost, a protocol for transmission of + raster page images. This snapshot provides a reference implementation of + the protocol, the design of which is still in flux. When the protocol + specification is published, it will be authoritative. Applications should + feel free to link against the library provided in this package, adapt that + code for their own needs, or roll a completely new implementation. + . + IJS is a client-server protocol, used to write ghostscript drivers. The + drivers are separate programs. The client and server communicate via pipes, + though shared memory may be used additionally in the future. Currently IJS + is used by the hpijs and ijsgimpprint drivers. + . + Code for both the client- and server-side is included in the library. This + package provides documentation. diff --git a/debian/libijs-doc.docs b/debian/libijs-doc.docs new file mode 100644 index 0000000..8ed0dde --- /dev/null +++ b/debian/libijs-doc.docs @@ -0,0 +1 @@ +ijs_spec.pdf diff --git a/debian/rules b/debian/rules index cbb8c12..3c79816 100755 --- a/debian/rules +++ b/debian/rules @@ -30,17 +30,16 @@ libpkgname = libijs-$(DEB_UPSTREAM_VERSION) DEB_COPYRIGHT_CHECK_IGNORE_REGEX = ^(ijs_spec\.pdf|debian/(changelog|copyright(|_hints|_newhints)))$ DEB_CONFIGURE_EXTRA_FLAGS += --enable-shared --libdir=/usr/lib/$(DEB_HOST_MULTIARCH) -DEB_MAKE_BUILD_TARGET = all -ifeq (,$(findstring stage1,$(DEB_BUILD_PROFILES))) +DEB_MAKE_BUILD_TARGET = +ifneq (,$(filter libijs-dev,$(shell dh_listpackages))) +DEB_MAKE_BUILD_TARGET += all +endif +ifneq (,$(filter libijs-doc,$(shell dh_listpackages))) DEB_MAKE_BUILD_TARGET += doc endif DEB_DH_MAKESHLIBS_ARGS_$(libpkgname) = -V'$(libpkgname) (>= $(DEB_UPSTREAM_VERSION))' -ifeq (,$(findstring stage1,$(DEB_BUILD_PROFILES))) -DEB_INSTALL_DOCS_libijs-dev += ijs_spec.pdf -endif - # put aside upstream-shipped temp files during build but after copyright-check upstreamtmpfiles = ltmain.sh configure aclocal.m4 Makefile.in ijs_spec.pdf pre-build:: debian/stamp-upstreamtmpstuff -- 2.0.0
Attachment:
signature.asc
Description: Digital signature