package: add gutenprint
authorOlivier Schonken <olivier.schonken@gmail.com>
Mon, 25 Mar 2013 13:27:59 +0000 (13:27 +0000)
committerPeter Korsgaard <jacmet@sunsite.dk>
Tue, 26 Mar 2013 22:09:32 +0000 (23:09 +0100)
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

[Peter: needs host-pkgconf]
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>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
package/Config.in
package/gutenprint/Config.in [new file with mode: 0644]
package/gutenprint/gutenprint-000-use-pregen-xmli18n-header.patch [new file with mode: 0644]
package/gutenprint/gutenprint.mk [new file with mode: 0644]

index 74537e4d39a1ec7e741f2c8fe9376fd8e224b343..5d8f4f6b73f3fbf9ffaf13ef91050296a42ec288 100644 (file)
@@ -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 (file)
index 0000000..eb06efd
--- /dev/null
@@ -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 (file)
index 0000000..533fe33
--- /dev/null
@@ -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 (file)
index 0000000..0463771
--- /dev/null
@@ -0,0 +1,74 @@
+#############################################################
+#
+# 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 host-pkgconf \
+       $(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))