summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Müller <schnitzeltony@gmail.com>2019-10-31 17:11:20 +0100
committerKhem Raj <raj.khem@gmail.com>2019-11-01 17:22:53 -0700
commita19dd49693c61876d69ce61bf7c913ed2de5ab2c (patch)
treeb21a4800173db137e6ae07151dcded7c4e9e5045
parent63b4f565b3a8d80a1cb7e3d981487d6c431eb662 (diff)
downloadmeta-openembedded-a19dd49693c61876d69ce61bf7c913ed2de5ab2c.tar.gz
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>
-rw-r--r--meta-oe/recipes-support/colord/colord-native.bb64
-rw-r--r--meta-oe/recipes-support/colord/colord-native/0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch166
-rw-r--r--meta-oe/recipes-support/colord/colord-native/Makefile48
-rw-r--r--meta-oe/recipes-support/colord/colord.bb45
-rw-r--r--meta-oe/recipes-support/colord/colord.inc13
-rw-r--r--meta-oe/recipes-support/colord/colord/0001-Run-native-cd_idt8-cd_create_profile.patch59
6 files changed, 395 insertions, 0 deletions
diff --git a/meta-oe/recipes-support/colord/colord-native.bb b/meta-oe/recipes-support/colord/colord-native.bb
new file mode 100644
index 0000000000..845041cc43
--- /dev/null
+++ b/meta-oe/recipes-support/colord/colord-native.bb
@@ -0,0 +1,64 @@
1require ${BPN}.inc
2
3FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}-native:"
4
5inherit meson native
6
7DEPENDS += " \
8 meson-native \
9 glib-2.0-native \
10 lcms-native \
11"
12
13SRC_URI += " \
14 file://0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch \
15 file://Makefile;subdir=${BPN}-${PV} \
16"
17
18do_configure() {
19 # we expect meson to fail - but before it extracts project's version in log file
20 meson ${MESONOPTS} "${MESON_SOURCEPATH}" "${B}" ${MESON_CROSS_FILE} ${EXTRA_OEMESON} > /dev/null 2>&1 || true
21
22 # extract and split version
23 version=`grep 'Project version:' ${B}/meson-logs/meson-log.txt | sed 's|Project version: ||'`
24 major=`echo $version | cut -d. -f1`
25 minor=`echo $version | cut -d. -f2`
26 micro=`echo $version | cut -d. -f3`
27 echo "Project version: $major.$minor.$micro"
28
29 # extract project name
30 proj_name=`grep 'Project name:' ${B}/meson-logs/meson-log.txt | sed 's|Project name: ||'`
31
32 # create cd-version.h
33 mkdir -p ${B}/colord
34 sed ${S}/lib/colord/cd-version.h.in \
35 -e 's:@CD_MAJOR_VERSION_PRIVATE@:1:g' \
36 -e 's:@CD_MINOR_VERSION_PRIVATE@:4:g' \
37 -e 's:@CD_MICRO_VERSION_PRIVATE@:4:g' \
38 > ${B}/colord/cd-version.h
39
40 # create config.h based on target build and add what's necessary only
41 localedir=`echo ${datadir}/locale | sed 's:${prefix}/::g'`
42 echo "#define LOCALEDIR \"$localedir\"" >> ${B}/config.h
43 echo "#define GETTEXT_PACKAGE \"colord\"" >> ${B}/config.h
44 echo "#define PACKAGE_NAME \"$proj_name\"" >> ${B}/config.h
45 echo "#define PACKAGE_VERSION \"$version\"" >> ${B}/config.h
46}
47
48do_compile() {
49 oe_runmake -C${S} DESTDIR=${B}
50}
51
52do_install() {
53 version=`grep 'Project version:' ${B}/meson-logs/meson-log.txt | sed 's|Project version: ||'`
54 major=`echo $version | cut -d. -f1`
55
56 install -d ${D}${libdir}
57 install -m 755 ${B}/libcolord.so ${D}${libdir}/libcolord.so.$version
58 ln -s libcolord.so.$version "${D}/${libdir}/libcolord.so"
59 ln -s libcolord.so.$version "${D}/${libdir}/libcolord.so.$major"
60
61 install -d ${D}${bindir}
62 install -m 755 ${B}/cd_create_profile ${D}${bindir}/
63 install -m 755 ${B}/cd_idt8 ${D}${bindir}/
64}
diff --git a/meta-oe/recipes-support/colord/colord-native/0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch b/meta-oe/recipes-support/colord/colord-native/0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch
new file mode 100644
index 0000000000..278b90e076
--- /dev/null
+++ b/meta-oe/recipes-support/colord/colord-native/0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch
@@ -0,0 +1,166 @@
1From cbb8f5c05fce1d56ae2e5fa9f57fc49c47bed5ab Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
3Date: Sun, 12 May 2019 21:58:02 +0200
4Subject: [PATCH] Move the function cd_icc_create_from_edid to avoid udev
5 dependeny
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10We do not have udev-native so it is a dependeny we cannot satisfy
11
12Upstream-Status: Inappropriate [OE specific]
13
14Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
15---
16 lib/colord/cd-edid.c | 63 ++++++++++++++++++++++++++++++++++++++++++++
17 lib/colord/cd-icc.c | 62 -------------------------------------------
18 2 files changed, 63 insertions(+), 62 deletions(-)
19
20diff --git a/lib/colord/cd-edid.c b/lib/colord/cd-edid.c
21index a5e2328..dec509a 100644
22--- a/lib/colord/cd-edid.c
23+++ b/lib/colord/cd-edid.c
24@@ -687,3 +687,66 @@ cd_edid_new (void)
25 edid = g_object_new (CD_TYPE_EDID, NULL);
26 return CD_EDID (edid);
27 }
28+
29+/**
30+ * cd_icc_create_from_edid_data:
31+ * @icc: A valid #CdIcc
32+ * @edid: EDID data
33+ * @error: A #GError, or %NULL
34+ *
35+ * Creates an ICC profile from EDID data.
36+ *
37+ * Return value: %TRUE for success
38+ *
39+ * Since: 1.1.2
40+ **/
41+gboolean
42+cd_icc_create_from_edid_data (CdIcc *icc, CdEdid *edid, GError **error)
43+{
44+ CdIccPrivate *priv = GET_PRIVATE (icc);
45+ const gchar *data;
46+
47+ /* not loaded */
48+ if (priv->lcms_profile != NULL) {
49+ g_set_error_literal (error,
50+ CD_ICC_ERROR,
51+ CD_ICC_ERROR_FAILED_TO_CREATE,
52+ "already loaded or generated");
53+ return FALSE;
54+ }
55+
56+ /* create from parsed object */
57+ if (!cd_icc_create_from_edid (icc,
58+ cd_edid_get_gamma (edid),
59+ cd_edid_get_red (edid),
60+ cd_edid_get_green (edid),
61+ cd_edid_get_blue (edid),
62+ cd_edid_get_white (edid),
63+ error)) {
64+ return FALSE;
65+ }
66+
67+ /* set copyright */
68+ cd_icc_set_copyright (icc, NULL,
69+ /* deliberately not translated */
70+ "This profile is free of known copyright restrictions.");
71+
72+ /* set 'ICC meta Tag for Monitor Profiles' data */
73+ data = cd_edid_get_checksum (edid);
74+ if (data != NULL)
75+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MD5, data);
76+ data = cd_edid_get_monitor_name (edid);
77+ if (data != NULL)
78+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MODEL, data);
79+ data = cd_edid_get_serial_number (edid);
80+ if (data != NULL)
81+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_SERIAL, data);
82+ data = cd_edid_get_pnp_id (edid);
83+ if (data != NULL)
84+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MNFT, data);
85+ data = cd_edid_get_vendor_name (edid);
86+ if (data != NULL)
87+ cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_VENDOR, data);
88+ return TRUE;
89+}
90+
91diff --git a/lib/colord/cd-icc.c b/lib/colord/cd-icc.c
92index f231814..2c8fe77 100644
93--- a/lib/colord/cd-icc.c
94+++ b/lib/colord/cd-icc.c
95@@ -3094,68 +3094,6 @@ out:
96 return ret;
97 }
98
99-/**
100- * cd_icc_create_from_edid_data:
101- * @icc: A valid #CdIcc
102- * @edid: EDID data
103- * @error: A #GError, or %NULL
104- *
105- * Creates an ICC profile from EDID data.
106- *
107- * Return value: %TRUE for success
108- *
109- * Since: 1.1.2
110- **/
111-gboolean
112-cd_icc_create_from_edid_data (CdIcc *icc, CdEdid *edid, GError **error)
113-{
114- CdIccPrivate *priv = GET_PRIVATE (icc);
115- const gchar *data;
116-
117- /* not loaded */
118- if (priv->lcms_profile != NULL) {
119- g_set_error_literal (error,
120- CD_ICC_ERROR,
121- CD_ICC_ERROR_FAILED_TO_CREATE,
122- "already loaded or generated");
123- return FALSE;
124- }
125-
126- /* create from parsed object */
127- if (!cd_icc_create_from_edid (icc,
128- cd_edid_get_gamma (edid),
129- cd_edid_get_red (edid),
130- cd_edid_get_green (edid),
131- cd_edid_get_blue (edid),
132- cd_edid_get_white (edid),
133- error)) {
134- return FALSE;
135- }
136-
137- /* set copyright */
138- cd_icc_set_copyright (icc, NULL,
139- /* deliberately not translated */
140- "This profile is free of known copyright restrictions.");
141-
142- /* set 'ICC meta Tag for Monitor Profiles' data */
143- data = cd_edid_get_checksum (edid);
144- if (data != NULL)
145- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MD5, data);
146- data = cd_edid_get_monitor_name (edid);
147- if (data != NULL)
148- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MODEL, data);
149- data = cd_edid_get_serial_number (edid);
150- if (data != NULL)
151- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_SERIAL, data);
152- data = cd_edid_get_pnp_id (edid);
153- if (data != NULL)
154- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_MNFT, data);
155- data = cd_edid_get_vendor_name (edid);
156- if (data != NULL)
157- cd_icc_add_metadata (icc, CD_PROFILE_METADATA_EDID_VENDOR, data);
158- return TRUE;
159-}
160-
161 /**
162 * cd_icc_create_from_edid:
163 * @icc: A valid #CdIcc
164--
1652.20.1
166
diff --git a/meta-oe/recipes-support/colord/colord-native/Makefile b/meta-oe/recipes-support/colord/colord-native/Makefile
new file mode 100644
index 0000000000..1e29e4f670
--- /dev/null
+++ b/meta-oe/recipes-support/colord/colord-native/Makefile
@@ -0,0 +1,48 @@
1# For native build cd_idt8, cd_create_profile and a tiny version of libcolord.so
2# only. By reducing the library to what's necessary, we avoid dependencies on
3# naitve udev and libgudev
4
5CFLAGS+=$(shell pkg-config-native --cflags gio-2.0)
6CFLAGS+=$(shell pkg-config-native --cflags lcms2)
7CFLAGS+=-std=c99 -I./lib -I./lib/colord -I$(DESTDIR) -DCD_COMPILATION
8
9LDFLAGS+=$(shell pkg-config-native --libs gio-2.0)
10LDFLAGS+=$(shell pkg-config-native --libs lcms2)
11LDFLAGS+=-lm
12
13all: cd_idt8 cd_create_profile
14
15LIBSOURCES = \
16 lib/colord/cd-it8.c \
17 lib/colord/cd-color.c \
18 lib/colord/cd-spectrum.c \
19 lib/colord/cd-math.c \
20 lib/colord/cd-interp-akima.c \
21 lib/colord/cd-context-lcms.c \
22 lib/colord/cd-interp.c \
23 lib/colord/cd-interp-linear.c \
24 lib/colord/cd-it8-utils.c \
25 lib/colord/cd-enum.c \
26 lib/colord/cd-icc.c \
27 lib/colord/cd-icc-utils.c \
28 lib/colord/cd-dom.c
29
30libcolord.so: $(LIBSOURCES)
31 $(CC) $(CFLAGS) -L$(DESTDIR) -fPIC -shared -Wl,-soname,$@ $^ -o $(DESTDIR)/$@ $(LDFLAGS)
32
33cd_idt8.o: client/cd-it8.c
34 $(CC) $(CFLAGS) -c $^ -o $(DESTDIR)/$@
35
36cd_idt8: libcolord.so cd_idt8.o
37 $(CC) $(DESTDIR)/cd_idt8.o -o $(DESTDIR)/$@ -L$(DESTDIR) -lcolord $(LDFLAGS)
38
39cd_create_profile.o: client/cd-create-profile.c
40 $(CC) $(CFLAGS) -c $^ -o $(DESTDIR)/$@
41
42cd_create_profile: libcolord.so cd_create_profile.o
43 $(CC) $(DESTDIR)/cd_create_profile.o -o $(DESTDIR)/$@ -L$(DESTDIR) -lcolord $(LDFLAGS)
44
45.PHONY: clean
46
47clean:
48 rm -f $(DESTDIR)/libcolord.so $(DESTDIR)/*.o $(DESTDIR)/cd_idt8 $(DESTDIR)/cd_create_profile
diff --git a/meta-oe/recipes-support/colord/colord.bb b/meta-oe/recipes-support/colord/colord.bb
new file mode 100644
index 0000000000..aa5d1d129b
--- /dev/null
+++ b/meta-oe/recipes-support/colord/colord.bb
@@ -0,0 +1,45 @@
1require ${BPN}.inc
2
3inherit meson gobject-introspection gsettings gettext bash-completion systemd distro_features_check useradd
4
5# polkit and gobject-introspection are mandatory and cannot be configured
6REQUIRED_DISTRO_FEATURES = "polkit gobject-introspection-data"
7UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
8
9DEPENDS += " \
10 ${BPN}-native \
11 glib-2.0 \
12 lcms \
13 sqlite3 \
14 libgusb \
15 libgudev \
16 polkit \
17"
18
19SRC_URI += " \
20 file://0001-Run-native-cd_idt8-cd_create_profile.patch \
21"
22
23EXTRA_OEMESON = " \
24 -Dman=false \
25 -Ddocs=false \
26"
27
28PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
29PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd"
30
31SYSTEMD_SERVICE_${PN} = "colord.service"
32
33FILES_${PN} += " \
34 ${datadir}/dbus-1 \
35 ${datadir}/polkit-1 \
36 ${datadir}/glib-2.0 \
37 ${datadir}/color \
38 ${systemd_user_unitdir} \
39 ${libdir}/tmpfiles.d \
40 ${libdir}/colord-plugins \
41 ${libdir}/colord-sensors \
42"
43
44USERADD_PACKAGES = "${PN}"
45USERADD_PARAM_${PN} = "--system --user-group -d /var/lib/colord -s /bin/false colord"
diff --git a/meta-oe/recipes-support/colord/colord.inc b/meta-oe/recipes-support/colord/colord.inc
new file mode 100644
index 0000000000..7497fed51e
--- /dev/null
+++ b/meta-oe/recipes-support/colord/colord.inc
@@ -0,0 +1,13 @@
1SUMMARY = "Making color management just work"
2HOMEPAGE = "https://www.freedesktop.org/software/colord/"
3LICENSE = "GPLv2 & LGPLv2.1"
4LIC_FILES_CHKSUM = " \
5 file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
6 file://meson.build;beginline=3;endline=3;md5=f42198707d793be58b274d34fd5238c3 \
7"
8
9PV = "1.4.4"
10SRC_URI = "https://www.freedesktop.org/software/colord/releases/${BPN}-${PV}.tar.xz"
11SRC_URI[md5sum] = "32c2709a6002d9ee750483aaed6379c8"
12SRC_URI[sha256sum] = "9a0fe80160bf88efddb582a9fc0169f56065276dc3882c47dddb9eecd048c0a5"
13
diff --git a/meta-oe/recipes-support/colord/colord/0001-Run-native-cd_idt8-cd_create_profile.patch b/meta-oe/recipes-support/colord/colord/0001-Run-native-cd_idt8-cd_create_profile.patch
new file mode 100644
index 0000000000..4b52aa3379
--- /dev/null
+++ b/meta-oe/recipes-support/colord/colord/0001-Run-native-cd_idt8-cd_create_profile.patch
@@ -0,0 +1,59 @@
1From 5aad8831c0fb71940d6c4f982b0b30ffb6ae33b3 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
3Date: Sun, 12 May 2019 22:47:05 +0200
4Subject: [PATCH] Run native cd_idt8/cd_create_profile
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Upstream-Status: Inappropriate [OE specific]
10
11Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
12---
13 data/cmf/meson.build | 2 +-
14 data/illuminant/meson.build | 2 +-
15 data/profiles/meson.build | 2 +-
16 3 files changed, 3 insertions(+), 3 deletions(-)
17
18diff --git a/data/cmf/meson.build b/data/cmf/meson.build
19index a693cd7..1ae3613 100644
20--- a/data/cmf/meson.build
21+++ b/data/cmf/meson.build
22@@ -2,7 +2,7 @@ foreach arg: [ 'CIE1964-10deg-XYZ', 'CIE1931-2deg-XYZ' ]
23 custom_target(arg,
24 input: arg + '.csv',
25 output: arg + '.cmf',
26- command: [ cd_idt8, 'create-cmf', '@OUTPUT@', '@INPUT@', '1.0' ],
27+ command: [ 'cd_idt8', 'create-cmf', '@OUTPUT@', '@INPUT@', '1.0' ],
28 install: true,
29 install_dir: join_paths(datadir, 'colord', 'cmf')
30 )
31diff --git a/data/illuminant/meson.build b/data/illuminant/meson.build
32index f8dfa07..ad7dced 100644
33--- a/data/illuminant/meson.build
34+++ b/data/illuminant/meson.build
35@@ -24,7 +24,7 @@ foreach arg: generated_spectra
36 custom_target(arg,
37 input: arg + '.csv',
38 output: arg + '.sp',
39- command: [ cd_idt8, 'create-sp', '@OUTPUT@', '@INPUT@', '100.0' ],
40+ command: [ 'cd_idt8', 'create-sp', '@OUTPUT@', '@INPUT@', '100.0' ],
41 install: true,
42 install_dir: join_paths(datadir, 'colord', 'illuminant')
43 )
44diff --git a/data/profiles/meson.build b/data/profiles/meson.build
45index 591b97d..2cef011 100644
46--- a/data/profiles/meson.build
47+++ b/data/profiles/meson.build
48@@ -59,7 +59,7 @@ foreach arg: icc_profiles
49 generated_icc = custom_target(arg + '.icc',
50 input: xml_i18n,
51 output: arg + '.icc',
52- command: [ cd_create_profile, '--output=@OUTPUT@', '@INPUT@' ],
53+ command: [ 'cd_create_profile', '--output=@OUTPUT@', '@INPUT@' ],
54 install: true,
55 install_dir: join_paths(datadir, 'color', 'icc', 'colord'),
56 )
57--
582.20.1
59