colord: initial add 1.4.4

* It is a dependency for upcoming gnome-settings-daemon
* It is used by GNOME and KDE [1] so  move it to meta-oe
* Getting it to build was a bit tricky. Udev (systemd) is a mandatory
  dependency and for native we do not support build. To get around native build
  was stripped down to what's necessary only. Native build is done with the
  help of configuration in recipe and (old-school) Makefile. This solution was
  chosen to avoid massive patching of meson build which tends to be a
  maintenance burden (as experienced at KDE recipes in meta-qt5-extra).

[1] https://www.freedesktop.org/software/colord/intro.html

Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Andreas Müller 2019-10-31 17:11:20 +01:00 committed by Khem Raj
parent 63b4f565b3
commit a19dd49693
6 changed files with 395 additions and 0 deletions

View File

@ -0,0 +1,64 @@
require ${BPN}.inc
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}-native:"
inherit meson native
DEPENDS += " \
meson-native \
glib-2.0-native \
lcms-native \
"
SRC_URI += " \
file://0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch \
file://Makefile;subdir=${BPN}-${PV} \
"
do_configure() {
# we expect meson to fail - but before it extracts project's version in log file
meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}" ${MESON_CROSS_FILE} ${EXTRA_OEMESON} > /dev/null 2>&1 || true
# extract and split version
version=`grep 'Project version:' ${B}/meson-logs/meson-log.txt | sed 's|Project version: ||'`
major=`echo $version | cut -d. -f1`
minor=`echo $version | cut -d. -f2`
micro=`echo $version | cut -d. -f3`
echo "Project version: $major.$minor.$micro"
# extract project name
proj_name=`grep 'Project name:' ${B}/meson-logs/meson-log.txt | sed 's|Project name: ||'`
# create cd-version.h
mkdir -p ${B}/colord
sed ${S}/lib/colord/cd-version.h.in \
-e 's:@CD_MAJOR_VERSION_PRIVATE@:1:g' \
-e 's:@CD_MINOR_VERSION_PRIVATE@:4:g' \
-e 's:@CD_MICRO_VERSION_PRIVATE@:4:g' \
> ${B}/colord/cd-version.h
# create config.h based on target build and add what's necessary only
localedir=`echo ${datadir}/locale | sed 's:${prefix}/::g'`
echo "#define LOCALEDIR \"$localedir\"" >> ${B}/config.h
echo "#define GETTEXT_PACKAGE \"colord\"" >> ${B}/config.h
echo "#define PACKAGE_NAME \"$proj_name\"" >> ${B}/config.h
echo "#define PACKAGE_VERSION \"$version\"" >> ${B}/config.h
}
do_compile() {
oe_runmake -C${S} DESTDIR=${B}
}
do_install() {
version=`grep 'Project version:' ${B}/meson-logs/meson-log.txt | sed 's|Project version: ||'`
major=`echo $version | cut -d. -f1`
install -d ${D}${libdir}
install -m 755 ${B}/libcolord.so ${D}${libdir}/libcolord.so.$version
ln -s libcolord.so.$version "${D}/${libdir}/libcolord.so"
ln -s libcolord.so.$version "${D}/${libdir}/libcolord.so.$major"
install -d ${D}${bindir}
install -m 755 ${B}/cd_create_profile ${D}${bindir}/
install -m 755 ${B}/cd_idt8 ${D}${bindir}/
}

View File

@ -0,0 +1,166 @@
From cbb8f5c05fce1d56ae2e5fa9f57fc49c47bed5ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Date: Sun, 12 May 2019 21:58:02 +0200
Subject: [PATCH] Move the function cd_icc_create_from_edid to avoid udev
dependeny
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
We do not have udev-native so it is a dependeny we cannot satisfy
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
---
lib/colord/cd-edid.c | 63 ++++++++++++++++++++++++++++++++++++++++++++
lib/colord/cd-icc.c | 62 -------------------------------------------
2 files changed, 63 insertions(+), 62 deletions(-)
diff --git a/lib/colord/cd-edid.c b/lib/colord/cd-edid.c
index a5e2328..dec509a 100644
--- a/lib/colord/cd-edid.c
+++ b/lib/colord/cd-edid.c
@@ -687,3 +687,66 @@ cd_edid_new (void)
edid = g_object_new (CD_TYPE_EDID, NULL);
return CD_EDID (edid);
}
+
+/**
+ * cd_icc_create_from_edid_data:
+ * @icc: A valid #CdIcc
+ * @edid: EDID data
+ * @error: A #GError, or %NULL
+ *
+ * Creates an ICC profile from EDID data.
+ *
+ * Return value: %TRUE for success
+ *
+ * Since: 1.1.2
+ **/
+gboolean
+cd_icc_create_from_edid_data (CdIcc *icc, CdEdid *edid, GError **error)
+{
+ CdIccPrivate *priv = GET_PRIVATE (icc);
+ const gchar *data;
+
+ /* not loaded */
+ if (priv->lcms_profile != NULL) {
+ g_set_error_literal (error,
+ CD_ICC_ERROR,
+ CD_ICC_ERROR_FAILED_TO_CREATE,
+ "already loaded or generated");
+ return FALSE;
+ }
+
+ /* create from parsed object */
+ if (!cd_icc_create_from_edid (icc,
+ cd_edid_get_gamma (edid),
+ cd_edid_get_red (edid),
+ cd_edid_get_green (edid),
+ cd_edid_get_blue (edid),
+ cd_edid_get_white (edid),
+ error)) {
+ return FALSE;
+ }
+
+ /* set copyright */
+ cd_icc_set_copyright (icc, NULL,
+ /* deliberately not translated */
+ "This profile is free of known copyright restrictions.");
+
+ /* set 'ICC meta Tag for Monitor Profiles' data */
+ data = cd_edid_get_checksum (edid);
+ if (data != NULL)
+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MD5, data);
+ data = cd_edid_get_monitor_name (edid);
+ if (data != NULL)
+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MODEL, data);
+ data = cd_edid_get_serial_number (edid);
+ if (data != NULL)
+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_SERIAL, data);
+ data = cd_edid_get_pnp_id (edid);
+ if (data != NULL)
+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MNFT, data);
+ data = cd_edid_get_vendor_name (edid);
+ if (data != NULL)
+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_VENDOR, data);
+ return TRUE;
+}
+
diff --git a/lib/colord/cd-icc.c b/lib/colord/cd-icc.c
index f231814..2c8fe77 100644
--- a/lib/colord/cd-icc.c
+++ b/lib/colord/cd-icc.c
@@ -3094,68 +3094,6 @@ out:
return ret;
}
-/**
- * cd_icc_create_from_edid_data:
- * @icc: A valid #CdIcc
- * @edid: EDID data
- * @error: A #GError, or %NULL
- *
- * Creates an ICC profile from EDID data.
- *
- * Return value: %TRUE for success
- *
- * Since: 1.1.2
- **/
-gboolean
-cd_icc_create_from_edid_data (CdIcc *icc, CdEdid *edid, GError **error)
-{
- CdIccPrivate *priv = GET_PRIVATE (icc);
- const gchar *data;
-
- /* not loaded */
- if (priv->lcms_profile != NULL) {
- g_set_error_literal (error,
- CD_ICC_ERROR,
- CD_ICC_ERROR_FAILED_TO_CREATE,
- "already loaded or generated");
- return FALSE;
- }
-
- /* create from parsed object */
- if (!cd_icc_create_from_edid (icc,
- cd_edid_get_gamma (edid),
- cd_edid_get_red (edid),
- cd_edid_get_green (edid),
- cd_edid_get_blue (edid),
- cd_edid_get_white (edid),
- error)) {
- return FALSE;
- }
-
- /* set copyright */
- cd_icc_set_copyright (icc, NULL,
- /* deliberately not translated */
- "This profile is free of known copyright restrictions.");
-
- /* set 'ICC meta Tag for Monitor Profiles' data */
- data = cd_edid_get_checksum (edid);
- if (data != NULL)
- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MD5, data);
- data = cd_edid_get_monitor_name (edid);
- if (data != NULL)
- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MODEL, data);
- data = cd_edid_get_serial_number (edid);
- if (data != NULL)
- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_SERIAL, data);
- data = cd_edid_get_pnp_id (edid);
- if (data != NULL)
- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MNFT, data);
- data = cd_edid_get_vendor_name (edid);
- if (data != NULL)
- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_VENDOR, data);
- return TRUE;
-}
-
/**
* cd_icc_create_from_edid:
* @icc: A valid #CdIcc
--
2.20.1

View File

@ -0,0 +1,48 @@
# For native build cd_idt8, cd_create_profile and a tiny version of libcolord.so
# only. By reducing the library to what's necessary, we avoid dependencies on
# naitve udev and libgudev
CFLAGS+=$(shell pkg-config-native --cflags gio-2.0)
CFLAGS+=$(shell pkg-config-native --cflags lcms2)
CFLAGS+=-std=c99 -I./lib -I./lib/colord -I$(DESTDIR) -DCD_COMPILATION
LDFLAGS+=$(shell pkg-config-native --libs gio-2.0)
LDFLAGS+=$(shell pkg-config-native --libs lcms2)
LDFLAGS+=-lm
all: cd_idt8 cd_create_profile
LIBSOURCES = \
lib/colord/cd-it8.c \
lib/colord/cd-color.c \
lib/colord/cd-spectrum.c \
lib/colord/cd-math.c \
lib/colord/cd-interp-akima.c \
lib/colord/cd-context-lcms.c \
lib/colord/cd-interp.c \
lib/colord/cd-interp-linear.c \
lib/colord/cd-it8-utils.c \
lib/colord/cd-enum.c \
lib/colord/cd-icc.c \
lib/colord/cd-icc-utils.c \
lib/colord/cd-dom.c
libcolord.so: $(LIBSOURCES)
$(CC) $(CFLAGS) -L$(DESTDIR) -fPIC -shared -Wl,-soname,$@ $^ -o $(DESTDIR)/$@ $(LDFLAGS)
cd_idt8.o: client/cd-it8.c
$(CC) $(CFLAGS) -c $^ -o $(DESTDIR)/$@
cd_idt8: libcolord.so cd_idt8.o
$(CC) $(DESTDIR)/cd_idt8.o -o $(DESTDIR)/$@ -L$(DESTDIR) -lcolord $(LDFLAGS)
cd_create_profile.o: client/cd-create-profile.c
$(CC) $(CFLAGS) -c $^ -o $(DESTDIR)/$@
cd_create_profile: libcolord.so cd_create_profile.o
$(CC) $(DESTDIR)/cd_create_profile.o -o $(DESTDIR)/$@ -L$(DESTDIR) -lcolord $(LDFLAGS)
.PHONY: clean
clean:
rm -f $(DESTDIR)/libcolord.so $(DESTDIR)/*.o $(DESTDIR)/cd_idt8 $(DESTDIR)/cd_create_profile

View File

@ -0,0 +1,45 @@
require ${BPN}.inc
inherit meson gobject-introspection gsettings gettext bash-completion systemd distro_features_check useradd
# polkit and gobject-introspection are mandatory and cannot be configured
REQUIRED_DISTRO_FEATURES = "polkit gobject-introspection-data"
UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
DEPENDS += " \
${BPN}-native \
glib-2.0 \
lcms \
sqlite3 \
libgusb \
libgudev \
polkit \
"
SRC_URI += " \
file://0001-Run-native-cd_idt8-cd_create_profile.patch \
"
EXTRA_OEMESON = " \
-Dman=false \
-Ddocs=false \
"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd"
SYSTEMD_SERVICE_${PN} = "colord.service"
FILES_${PN} += " \
${datadir}/dbus-1 \
${datadir}/polkit-1 \
${datadir}/glib-2.0 \
${datadir}/color \
${systemd_user_unitdir} \
${libdir}/tmpfiles.d \
${libdir}/colord-plugins \
${libdir}/colord-sensors \
"
USERADD_PACKAGES = "${PN}"
USERADD_PARAM_${PN} = "--system --user-group -d /var/lib/colord -s /bin/false colord"

View File

@ -0,0 +1,13 @@
SUMMARY = "Making color management just work"
HOMEPAGE = "https://www.freedesktop.org/software/colord/"
LICENSE = "GPLv2 & LGPLv2.1"
LIC_FILES_CHKSUM = " \
file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://meson.build;beginline=3;endline=3;md5=f42198707d793be58b274d34fd5238c3 \
"
PV = "1.4.4"
SRC_URI = "https://www.freedesktop.org/software/colord/releases/${BPN}-${PV}.tar.xz"
SRC_URI[md5sum] = "32c2709a6002d9ee750483aaed6379c8"
SRC_URI[sha256sum] = "9a0fe80160bf88efddb582a9fc0169f56065276dc3882c47dddb9eecd048c0a5"

View File

@ -0,0 +1,59 @@
From 5aad8831c0fb71940d6c4f982b0b30ffb6ae33b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Date: Sun, 12 May 2019 22:47:05 +0200
Subject: [PATCH] Run native cd_idt8/cd_create_profile
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
---
data/cmf/meson.build | 2 +-
data/illuminant/meson.build | 2 +-
data/profiles/meson.build | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/data/cmf/meson.build b/data/cmf/meson.build
index a693cd7..1ae3613 100644
--- a/data/cmf/meson.build
+++ b/data/cmf/meson.build
@@ -2,7 +2,7 @@ foreach arg: [ 'CIE1964-10deg-XYZ', 'CIE1931-2deg-XYZ' ]
custom_target(arg,
input: arg + '.csv',
output: arg + '.cmf',
- command: [ cd_idt8, 'create-cmf', '@OUTPUT@', '@INPUT@', '1.0' ],
+ command: [ 'cd_idt8', 'create-cmf', '@OUTPUT@', '@INPUT@', '1.0' ],
install: true,
install_dir: join_paths(datadir, 'colord', 'cmf')
)
diff --git a/data/illuminant/meson.build b/data/illuminant/meson.build
index f8dfa07..ad7dced 100644
--- a/data/illuminant/meson.build
+++ b/data/illuminant/meson.build
@@ -24,7 +24,7 @@ foreach arg: generated_spectra
custom_target(arg,
input: arg + '.csv',
output: arg + '.sp',
- command: [ cd_idt8, 'create-sp', '@OUTPUT@', '@INPUT@', '100.0' ],
+ command: [ 'cd_idt8', 'create-sp', '@OUTPUT@', '@INPUT@', '100.0' ],
install: true,
install_dir: join_paths(datadir, 'colord', 'illuminant')
)
diff --git a/data/profiles/meson.build b/data/profiles/meson.build
index 591b97d..2cef011 100644
--- a/data/profiles/meson.build
+++ b/data/profiles/meson.build
@@ -59,7 +59,7 @@ foreach arg: icc_profiles
generated_icc = custom_target(arg + '.icc',
input: xml_i18n,
output: arg + '.icc',
- command: [ cd_create_profile, '--output=@OUTPUT@', '@INPUT@' ],
+ command: [ 'cd_create_profile', '--output=@OUTPUT@', '@INPUT@' ],
install: true,
install_dir: join_paths(datadir, 'color', 'icc', 'colord'),
)
--
2.20.1