[meta-oe] Add gutenprint to meta-oe

Message ID 20211221214903.1882008-1-claus.stovgaard@gmail.com
State New
Headers show
Series [meta-oe] Add gutenprint to meta-oe | expand

Commit Message

Claus Stovgaard Dec. 21, 2021, 9:49 p.m. UTC
From: Claus Stovgaard <clst@ambu.com>

According to wiki more than 1300 printer drivers.
Specifically the CUPS dye-sublimation backend, used in industrial and
medical is a nice fit when using Yocto for embedded solutions targeting
this segment.

As the gutenprint code generate a tool for string management, the native
recipe is designed to just create the output from this tool (a header
file). So the cross compatible version is depending on native version.

Thought about using BBCLASSEXTEND instead of separate files. Though as
the purpose of the two recipes is different (one for generating header
file, the other for generating the actual lib) and different
dependencies I decided to keep it as two recipes.

Signed-off-by: Claus Stovgaard <clst@ambu.com>
---
 .../gutenprint/gutenprint-native_git.bb       | 42 +++++++++++++++++
 .../gutenprint/gutenprint.inc                 | 22 +++++++++
 .../gutenprint/gutenprint_git.bb              | 46 +++++++++++++++++++
 3 files changed, 110 insertions(+)
 create mode 100644 meta-oe/recipes-printing/gutenprint/gutenprint-native_git.bb
 create mode 100644 meta-oe/recipes-printing/gutenprint/gutenprint.inc
 create mode 100644 meta-oe/recipes-printing/gutenprint/gutenprint_git.bb

Patch

diff --git a/meta-oe/recipes-printing/gutenprint/gutenprint-native_git.bb b/meta-oe/recipes-printing/gutenprint/gutenprint-native_git.bb
new file mode 100644
index 000000000..c6e00c340
--- /dev/null
+++ b/meta-oe/recipes-printing/gutenprint/gutenprint-native_git.bb
@@ -0,0 +1,42 @@ 
+# Recipe for building gutenprint-native
+#
+# Native part is for generating strings - xmli18n-tmp.h used by target recipe
+# We don't depend on cups as this is for generating the string header.
+#
+# Copyright (c) Ambu A/S - All rights reserved
+# SPDX-License-Identifier: MIT
+#
+# Author(s)
+#   clst@ambu.com (Claus Stovgaard)
+#
+
+require gutenprint.inc
+
+# We could consider switching to BBCLASSEXTEND native instead of inherit
+# Using devtool with this results in warning, as devtool append externalsrc to
+# inheritance, making native not being inherited last.
+inherit autotools-brokensep pkgconfig native
+
+SECTION = "libs"
+
+# binutils is for xz etc.
+# gettext-native for configuration
+# flex-native is used for compilation
+# byacc-native is for yacc command (compilation)
+DEPENDS += "binutils-native gettext-native flex-native byacc-native"
+
+EXTRA_OECONF = "--without-doc --without-cups"
+
+# gutenprint does not have a configure file in its root folder.
+# Rather it has a autogen.sh in its root folder. We just use it
+do_configure() {
+    ${S}/autogen.sh || bbnote "${PN} failed to autogen.sh"
+    oe_runconf
+}
+
+# Currently we only uses the string header, even though we compile the complete
+# native version of the library. So we limit the install to the needed.
+do_install() {
+    install -d ${D}${datadir}/gutenprint/
+    install -m644 ${B}/src/xml/xmli18n-tmp.h ${D}${datadir}/gutenprint/
+}
\ No newline at end of file
diff --git a/meta-oe/recipes-printing/gutenprint/gutenprint.inc b/meta-oe/recipes-printing/gutenprint/gutenprint.inc
new file mode 100644
index 000000000..0a162d2b5
--- /dev/null
+++ b/meta-oe/recipes-printing/gutenprint/gutenprint.inc
@@ -0,0 +1,22 @@ 
+# common part for gutenprint-native / gutenprint
+#
+# As we are using the native part for generating string header to the target
+# version, it is important they use the same version.
+# So we set the SRC_URI and SRCREV here.
+#
+# Copyright (c) Ambu A/S - All rights reserved
+# SPDX-License-Identifier: MIT
+#
+# Author(s)
+#   clst@ambu.com (Claus Stovgaard)
+#
+
+DESCRIPTION = "Gutenprint printer drivers"
+HOMEPAGE = "http://gimp-print.sourceforge.net/"
+LICENSE = "GPLv2+"
+
+SRC_URI = "git://git.code.sf.net/p/gimp-print/source;protocol=https;branch=master"
+SRCREV = "8e47dc44dd7738302ba9e8fbc1f918461fed0236"
+S = "${WORKDIR}/git"
+
+LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
\ No newline at end of file
diff --git a/meta-oe/recipes-printing/gutenprint/gutenprint_git.bb b/meta-oe/recipes-printing/gutenprint/gutenprint_git.bb
new file mode 100644
index 000000000..777979394
--- /dev/null
+++ b/meta-oe/recipes-printing/gutenprint/gutenprint_git.bb
@@ -0,0 +1,46 @@ 
+# Recipe for building gutenprint
+#
+# Uses the gutenprint-native extracted strings and disable local build stuff
+#
+# Copyright (c) Ambu A/S - All rights reserved
+# SPDX-License-Identifier: MIT
+#
+# Author(s)
+#   clst@ambu.com (Claus Stovgaard)
+#
+
+require gutenprint.inc
+
+inherit autotools-brokensep pkgconfig
+
+DEPENDS += "cups gutenprint-native"
+
+# cups-genppdupdate depend on perl
+# We also set the path to PERL as else the version in hosttools would be used
+# with full path
+RDEPENDS:${PN} = "perl "
+
+EXTRA_OECONF = "--without-doc --disable-test --disable-nls PERL=/usr/bin/perl"
+
+# gutenprint does not have a configure file in its root folder.
+# Rather it has a autogen.sh in its root folder. We just use it
+# together with adapting for cross compilation
+do_configure() {
+    # Disable the xmli18n-tmp.h rule
+    # It depend on the local build extract-strings, we are not able to run this
+    # So we are using the xmli18n-tmp.h created by gutenprint-native
+    sed -i 's/all-local: xmli18n-tmp.h xml-stamp/all-local: xml-stamp/'  ${S}/src/xml/Makefile.am
+    sed -i 's/dist-hook: xmli18n-tmp.h xml-stamp/dist-hook: xml-stamp/'  ${S}/src/xml/Makefile.am
+    cp ${RECIPE_SYSROOT_NATIVE}${datadir}/gutenprint/xmli18n-tmp.h ${S}/src/xml/
+
+    ${S}/autogen.sh || bbnote "${PN} failed to autogen.sh"
+    oe_runconf
+}
+
+# gutenprint install the calibrate.ppm and net.sf.gimp-print.usb-quirks in
+# /usr/share/cups
+FILES:${PN} += "${datadir}/cups/*"
+
+# Install in /etc/cups when RPM needs DIRFILES to not conflict
+# https://stackoverflow.com/questions/44762430/why-do-i-get-etc-cups-conflicts-between-attempted-installs-in-yocto
+DIRFILES = "1"
\ No newline at end of file