diff options
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 @@ | |||
1 | require ${BPN}.inc | ||
2 | |||
3 | FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}-native:" | ||
4 | |||
5 | inherit meson native | ||
6 | |||
7 | DEPENDS += " \ | ||
8 | meson-native \ | ||
9 | glib-2.0-native \ | ||
10 | lcms-native \ | ||
11 | " | ||
12 | |||
13 | SRC_URI += " \ | ||
14 | file://0001-Move-the-function-cd_icc_create_from_edid-to-avoid-u.patch \ | ||
15 | file://Makefile;subdir=${BPN}-${PV} \ | ||
16 | " | ||
17 | |||
18 | do_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 | |||
48 | do_compile() { | ||
49 | oe_runmake -C${S} DESTDIR=${B} | ||
50 | } | ||
51 | |||
52 | do_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 @@ | |||
1 | From cbb8f5c05fce1d56ae2e5fa9f57fc49c47bed5ab Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com> | ||
3 | Date: Sun, 12 May 2019 21:58:02 +0200 | ||
4 | Subject: [PATCH] Move the function cd_icc_create_from_edid to avoid udev | ||
5 | dependeny | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | We do not have udev-native so it is a dependeny we cannot satisfy | ||
11 | |||
12 | Upstream-Status: Inappropriate [OE specific] | ||
13 | |||
14 | Signed-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 | |||
20 | diff --git a/lib/colord/cd-edid.c b/lib/colord/cd-edid.c | ||
21 | index 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 | + | ||
91 | diff --git a/lib/colord/cd-icc.c b/lib/colord/cd-icc.c | ||
92 | index 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 | -- | ||
165 | 2.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 | |||
5 | CFLAGS+=$(shell pkg-config-native --cflags gio-2.0) | ||
6 | CFLAGS+=$(shell pkg-config-native --cflags lcms2) | ||
7 | CFLAGS+=-std=c99 -I./lib -I./lib/colord -I$(DESTDIR) -DCD_COMPILATION | ||
8 | |||
9 | LDFLAGS+=$(shell pkg-config-native --libs gio-2.0) | ||
10 | LDFLAGS+=$(shell pkg-config-native --libs lcms2) | ||
11 | LDFLAGS+=-lm | ||
12 | |||
13 | all: cd_idt8 cd_create_profile | ||
14 | |||
15 | LIBSOURCES = \ | ||
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 | |||
30 | libcolord.so: $(LIBSOURCES) | ||
31 | $(CC) $(CFLAGS) -L$(DESTDIR) -fPIC -shared -Wl,-soname,$@ $^ -o $(DESTDIR)/$@ $(LDFLAGS) | ||
32 | |||
33 | cd_idt8.o: client/cd-it8.c | ||
34 | $(CC) $(CFLAGS) -c $^ -o $(DESTDIR)/$@ | ||
35 | |||
36 | cd_idt8: libcolord.so cd_idt8.o | ||
37 | $(CC) $(DESTDIR)/cd_idt8.o -o $(DESTDIR)/$@ -L$(DESTDIR) -lcolord $(LDFLAGS) | ||
38 | |||
39 | cd_create_profile.o: client/cd-create-profile.c | ||
40 | $(CC) $(CFLAGS) -c $^ -o $(DESTDIR)/$@ | ||
41 | |||
42 | cd_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 | |||
47 | clean: | ||
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 @@ | |||
1 | require ${BPN}.inc | ||
2 | |||
3 | inherit meson gobject-introspection gsettings gettext bash-completion systemd distro_features_check useradd | ||
4 | |||
5 | # polkit and gobject-introspection are mandatory and cannot be configured | ||
6 | REQUIRED_DISTRO_FEATURES = "polkit gobject-introspection-data" | ||
7 | UNKNOWN_CONFIGURE_WHITELIST_append = " introspection" | ||
8 | |||
9 | DEPENDS += " \ | ||
10 | ${BPN}-native \ | ||
11 | glib-2.0 \ | ||
12 | lcms \ | ||
13 | sqlite3 \ | ||
14 | libgusb \ | ||
15 | libgudev \ | ||
16 | polkit \ | ||
17 | " | ||
18 | |||
19 | SRC_URI += " \ | ||
20 | file://0001-Run-native-cd_idt8-cd_create_profile.patch \ | ||
21 | " | ||
22 | |||
23 | EXTRA_OEMESON = " \ | ||
24 | -Dman=false \ | ||
25 | -Ddocs=false \ | ||
26 | " | ||
27 | |||
28 | PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" | ||
29 | PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd" | ||
30 | |||
31 | SYSTEMD_SERVICE_${PN} = "colord.service" | ||
32 | |||
33 | FILES_${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 | |||
44 | USERADD_PACKAGES = "${PN}" | ||
45 | USERADD_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 @@ | |||
1 | SUMMARY = "Making color management just work" | ||
2 | HOMEPAGE = "https://www.freedesktop.org/software/colord/" | ||
3 | LICENSE = "GPLv2 & LGPLv2.1" | ||
4 | LIC_FILES_CHKSUM = " \ | ||
5 | file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ | ||
6 | file://meson.build;beginline=3;endline=3;md5=f42198707d793be58b274d34fd5238c3 \ | ||
7 | " | ||
8 | |||
9 | PV = "1.4.4" | ||
10 | SRC_URI = "https://www.freedesktop.org/software/colord/releases/${BPN}-${PV}.tar.xz" | ||
11 | SRC_URI[md5sum] = "32c2709a6002d9ee750483aaed6379c8" | ||
12 | SRC_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 @@ | |||
1 | From 5aad8831c0fb71940d6c4f982b0b30ffb6ae33b3 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com> | ||
3 | Date: Sun, 12 May 2019 22:47:05 +0200 | ||
4 | Subject: [PATCH] Run native cd_idt8/cd_create_profile | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | Upstream-Status: Inappropriate [OE specific] | ||
10 | |||
11 | Signed-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 | |||
18 | diff --git a/data/cmf/meson.build b/data/cmf/meson.build | ||
19 | index 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 | ) | ||
31 | diff --git a/data/illuminant/meson.build b/data/illuminant/meson.build | ||
32 | index 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 | ) | ||
44 | diff --git a/data/profiles/meson.build b/data/profiles/meson.build | ||
45 | index 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 | -- | ||
58 | 2.20.1 | ||
59 | |||