Add gutenprint to meta-oe

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>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Claus Stovgaard 2021-12-21 22:49:03 +01:00 committed by Khem Raj
parent 6a271fd428
commit 83bb0c483f
3 changed files with 110 additions and 0 deletions

View File

@ -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/
}

View File

@ -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"

View File

@ -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"