diff mbox

[04/15] Added package Gutenprint

Message ID ba8ccd1c57b7707b1d8be160e941d456e0a4656b.1364253936.git.yann.morin.1998@free.fr
State Accepted
Headers show

Commit Message

Yann E. MORIN March 25, 2013, 11:27 p.m. UTC
From: Olivier Schonken <olivier.schonken@gmail.com>

Gutenprint, formerly named Gimp-Print, is a suite of printer
drivers that may be used with most common UNIX print spooling
systems, including CUPS, lpr, LPRng, or others

Signed-off-by: Olivier Schonken <olivier.schonken@gmail.com>
[yann.morin.1998@free.fr: needs libiconv, cleanup]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

---
Changes v1 -> v2:
  - add licensing terms  (Thomas)
---
 package/Config.in                                  |    1 +
 package/gutenprint/Config.in                       |   14 ++++
 .../gutenprint-000-use-pregen-xmli18n-header.patch |   48 +++++++++++++
 package/gutenprint/gutenprint.mk                   |   73 ++++++++++++++++++++
 4 files changed, 136 insertions(+), 0 deletions(-)
 create mode 100644 package/gutenprint/Config.in
 create mode 100644 package/gutenprint/gutenprint-000-use-pregen-xmli18n-header.patch
 create mode 100644 package/gutenprint/gutenprint.mk

Comments

Peter Korsgaard March 26, 2013, 10:10 p.m. UTC | #1
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 Yann> From: Olivier Schonken <olivier.schonken@gmail.com>
 Yann> Gutenprint, formerly named Gimp-Print, is a suite of printer
 Yann> drivers that may be used with most common UNIX print spooling
 Yann> systems, including CUPS, lpr, LPRng, or others

 Yann> Signed-off-by: Olivier Schonken <olivier.schonken@gmail.com>
 Yann> [yann.morin.1998@free.fr: needs libiconv, cleanup]
 Yann> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
 Yann> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

It needs host-pkgconf, otherwise it fails at configure time because of
the PKG_* checks:

checking whether to build foomatic data files... no
checking for foomatic-ppdfile... /usr/bin/foomatic-ppdfile
checking whether to make use of foomatic 3 extra features... no
checking for ijs-config... no
checking whether to build Ghostscript driver... no
checking whether to enable loadable modules... (automatic)
checking whether to turn on debugging in build... no
checking whether to turn on profiling in build... no
checking whether to use readline... yes
checking for gimptool-2.0... no
checking for gimptool... no
./configure: 13604: ./configure.lineno: Syntax error: word unexpected (expecting ")")
make: *** [/home/peko/source/buildroot/output/build/gutenprint-5.2.9/.stamp_configured] Error 2

Committed with that fixed, thanks.
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 74537e4..5d8f4f6 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -646,6 +646,7 @@  source "package/ctorrent/Config.in"
 source "package/conntrack-tools/Config.in"
 source "package/cups/Config.in"
 source "package/foomatic-filters/Config.in"
+source "package/gutenprint/Config.in"
 source "package/hplip/Config.in"
 if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 source "package/dhcp/Config.in"
diff --git a/package/gutenprint/Config.in b/package/gutenprint/Config.in
new file mode 100644
index 0000000..eb06efd
--- /dev/null
+++ b/package/gutenprint/Config.in
@@ -0,0 +1,14 @@ 
+config BR2_PACKAGE_GUTENPRINT
+	bool "gutenprint"
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_PACKAGE_CUPS
+	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+	help
+	  Gutenprint, formerly named Gimp-Print, is a suite of printer
+	  drivers that may be used with most common UNIX print spooling
+	  systems, including CUPS, lpr, LPRng, or others
+
+	  http://gimp-print.sourceforge.net/
+
+comment "gutenprint requires a toolchain with C++ support enabled"
+	depends on !BR2_INSTALL_LIBSTDCPP
diff --git a/package/gutenprint/gutenprint-000-use-pregen-xmli18n-header.patch b/package/gutenprint/gutenprint-000-use-pregen-xmli18n-header.patch
new file mode 100644
index 0000000..533fe33
--- /dev/null
+++ b/package/gutenprint/gutenprint-000-use-pregen-xmli18n-header.patch
@@ -0,0 +1,48 @@ 
+src/xml: use preg-gen xmli18n_tmp.h if specified
+
+Ideally, the programs needed at build-time should be built with
+CC_FOR_BUILD, and not with CC_FOR_HOST.
+
+Unfortunately, this program wants to link against the gutenprint libs,
+so we would also need to build them with CC_FOR_HOST, that is build them
+twice, once for build, once for host.
+
+Instead, in the Buildroot context, we first build gutenprint for the build
+system, use that to generate the incriminated header, and then re-use that
+header to build the gutenprint for the host.
+
+It is not possible to have such constructs in Makefile.am:
+    ifeq ($(FOO),)
+    bar: bla
+        cat $< >$@
+    else
+    bar:
+        echo $(FOO) >$@
+    endif
+
+as autoreconf will yell loudly that there is an 'endif' without an 'if'.
+Sigh... :-(
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+diff -durN gutenprint-5.2.9.orig/src/xml/Makefile.am gutenprint-5.2.9/src/xml/Makefile.am
+--- gutenprint-5.2.9.orig/src/xml/Makefile.am	2011-03-30 02:43:24.000000000 +0200
++++ gutenprint-5.2.9/src/xml/Makefile.am	2013-03-24 17:08:08.435918773 +0100
+@@ -52,10 +52,13 @@
+ 
+ 
+ xmli18n-tmp.h: xml-stamp extract-strings
+-	-rm -f $@ $@.tmp
+-	./extract-strings `cat xml-stamp | sed -e 's;^;$(srcdir)/;'` > $@.tmp
+-	mv $@.tmp $@
+-
++	if [ -z "$(BR2_USE_PREGEN_XMLI18N_TMP_H)" ]; then \
++	    rm -f $@ $@.tmp; \
++	    ./extract-strings `cat xml-stamp | sed -e 's;^;$(srcdir)/;'` > $@.tmp; \
++	    mv $@.tmp $@; \
++	else \
++	    cp $(BR2_USE_PREGEN_XMLI18N_TMP_H) $@; \
++	fi
+ 
+ dist-hook: xmli18n-tmp.h xml-stamp
+ # xmli18n-tmp.h is needed by po/POTFILES.in at dist time
diff --git a/package/gutenprint/gutenprint.mk b/package/gutenprint/gutenprint.mk
new file mode 100644
index 0000000..6e32a0d
--- /dev/null
+++ b/package/gutenprint/gutenprint.mk
@@ -0,0 +1,73 @@ 
+#############################################################
+#
+# gutenprint
+#
+#############################################################
+
+GUTENPRINT_VERSION = 5.2.9
+GUTENPRINT_SITE = http://downloads.sourceforge.net/gimp-print/gutenprint-5.2/$(GUTENPRINT_VERSION)
+GUTENPRINT_SOURCE = gutenprint-$(GUTENPRINT_VERSION).tar.bz2
+GUTENPRINT_LICENSE = GPLv2+
+GUTENPRINT_LICENSE_FILES = COPYING
+
+# Needed, as we touch Makefile.am
+GUTENPRINT_AUTORECONF = YES
+
+GUTENPRINT_DEPENDENCIES = cups $(if $(BR2_PACKAGE_LIBICONV),libiconv)
+
+# host-gutenprint is needed to generate XML as part of compilation
+# the program that generates the xml also links against libgutenprint
+# so we need to build both a host package and a target package
+GUTENPRINT_DEPENDENCIES += host-gutenprint
+
+GUTENPRINT_CONF_OPT = --disable-libgutenprintui2 \
+                      --disable-samples \
+                      --without-gimp2 \
+                      --without-foomatic \
+                      --without-foomatic3 \
+                      --disable-escputil \
+                      --disable-test \
+                      --disable-testpattern \
+                      --with-cups="/usr" \
+                      --with-sysroot="$(STAGING_DIR)" \
+                      --disable-cups-ppds
+
+# USE_PREGEN_XMLI18N_TMP_H is added by our patch
+GUTENPRINT_MAKE_ENV = BR2_USE_PREGEN_XMLI18N_TMP_H=$(HOST_DIR)/usr/include/xmli18n-tmp.h
+
+# We have no host dependencies
+HOST_GUTENPRINT_DEPENDENCIES =
+# The host-gutenprint shall create the required header
+HOST_GUTENPRINT_MAKE_ENV =
+
+HOST_GUTENPRINT_CONF_OPT = --disable-libgutenprintui2 \
+                           --disable-samples \
+                           --without-gimp2 \
+                           --without-doc \
+                           --disable-nls \
+                           --disable-nls-macos \
+                           --without-foomatic \
+                           --without-foomatic3 \
+                           --disable-escputil \
+                           --disable-test \
+                           --disable-testpattern
+
+# Needed by autoreconf
+define GUTENPRINT_CREATE_M4_DIR
+	mkdir -p $(@D)/m4local
+endef
+GUTENPRINT_POST_PATCH_HOOKS += GUTENPRINT_CREATE_M4_DIR
+
+define HOST_GUTENPRINT_POST_BUILD_INSTAL_TMP_HEADER
+	cp $(@D)/src/xml/xmli18n-tmp.h $(HOST_DIR)/usr/include
+endef
+HOST_GUTENPRINT_POST_BUILD_HOOKS += HOST_GUTENPRINT_POST_BUILD_INSTAL_TMP_HEADER
+
+define GUTENPRINT_POST_INSTALL_TARGET_FIXUP
+	mkdir -p $(TARGET_DIR)/usr/share/gutenprint/5.2
+	cp -rf $(HOST_DIR)/usr/share/gutenprint/5.2/xml $(TARGET_DIR)/usr/share/gutenprint/5.2
+endef
+GUTENPRINT_POST_INSTALL_TARGET_HOOKS += GUTENPRINT_POST_INSTALL_TARGET_FIXUP
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))