gnu: ghostscript: Make XMP UUID headers optional, depending on environment variable.

* gnu/packages/patches/ghostscript-no-header-uuid.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/ghostscript.scm (ghostscript): Use it.
This commit is contained in:
Danny Milosavljevic 2017-07-10 01:24:50 +02:00
parent 5c549f2eac
commit 63eb4a2a91
No known key found for this signature in database
GPG key ID: E71A35542C30BAA5
3 changed files with 53 additions and 1 deletions

View file

@ -620,6 +620,7 @@ dist_patch_DATA = \
%D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch \
%D%/packages/patches/ghostscript-CVE-2017-8291.patch \
%D%/packages/patches/ghostscript-no-header-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-runpath.patch \
%D%/packages/patches/glib-networking-ssl-cert-file.patch \
%D%/packages/patches/glib-tests-timer.patch \

View file

@ -144,7 +144,8 @@ (define-public ghostscript
"0lyhjcrkmd5fcmh8h56bs4xr9k4jasmikv5vsix1hd4ai0ad1q9b"))
(patches (search-patches "ghostscript-runpath.patch"
"ghostscript-CVE-2017-8291.patch"
"ghostscript-no-header-id.patch"))
"ghostscript-no-header-id.patch"
"ghostscript-no-header-uuid.patch"))
(modules '((guix build utils)))
(snippet
;; Remove bundled libraries. The bundled OpenJPEG is a patched fork so

View file

@ -0,0 +1,50 @@
This patch makes the UUIDs in the XMP header optional, depending on the
setting of the environment variable GS_GENERATE_UUIDS.
If the environment variable GS_GENERATE_UUIDS is set to "0" or "no", it will
not write out the Document UUID field and also will write the Instance ID
field value as "".
Upstream does not want to do this.
See: https://bugs.ghostscript.com/show_bug.cgi?id=698208
diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c aa/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c
--- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c 2017-07-09 23:30:28.960479189 +0200
+++ gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c 2017-07-10 01:04:12.252478276 +0200
@@ -617,7 +617,7 @@
return code;
/* PDF/A XMP reference recommends setting UUID to empty. If not empty must be a URI */
- if (pdev->PDFA != 0)
+ if (pdev->PDFA != 0 || (getenv("GS_GENERATE_UUIDS") && (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") == 0 || strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") == 0)))
instance_uuid[0] = 0x00;
cre_date_time_len = pdf_get_docinfo_item(pdev, "/CreationDate", cre_date_time, sizeof(cre_date_time));
@@ -719,15 +719,18 @@
pdf_xml_tag_close(s, "rdf:Description");
pdf_xml_newline(s);
- pdf_xml_tag_open_beg(s, "rdf:Description");
- pdf_xml_attribute_name(s, "rdf:about");
- pdf_xml_attribute_value(s, instance_uuid);
- pdf_xml_attribute_name(s, "xmlns:xapMM");
- pdf_xml_attribute_value(s, "http://ns.adobe.com/xap/1.0/mm/");
- pdf_xml_attribute_name(s, "xapMM:DocumentID");
- pdf_xml_attribute_value(s, document_uuid);
- pdf_xml_tag_end_empty(s);
- pdf_xml_newline(s);
+ if (!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 && strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))
+ {
+ pdf_xml_tag_open_beg(s, "rdf:Description");
+ pdf_xml_attribute_name(s, "rdf:about");
+ pdf_xml_attribute_value(s, instance_uuid);
+ pdf_xml_attribute_name(s, "xmlns:xapMM");
+ pdf_xml_attribute_value(s, "http://ns.adobe.com/xap/1.0/mm/");
+ pdf_xml_attribute_name(s, "xapMM:DocumentID");
+ pdf_xml_attribute_value(s, document_uuid);
+ pdf_xml_tag_end_empty(s);
+ pdf_xml_newline(s);
+ }
pdf_xml_tag_open_beg(s, "rdf:Description");
pdf_xml_attribute_name(s, "rdf:about");