summarylogtreecommitdiffstats
path: root/fix-building-with-unbundled-libxml.patch
blob: 7b934376e6e45e346984d5aa241f65af39ce8d77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
From d3afade220ddb307e16a6dd4f2b0ec88b2af91e7 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Tue, 28 Jan 2020 18:16:54 +0000
Subject: [PATCH] Fix building with unbundled libxml

Add new targets to libxml.gn that were added in
 https://chromium-review.googlesource.com/c/chromium/src/+/1894877
Adjust includes to use system libxml headers too

Bug: 1043042
Change-Id: I948c063e212e49b9e7f42fed2b8bf7f4af042ca7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2007110
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Robert Sesek <rsesek@chromium.org>
Cr-Commit-Position: refs/heads/master@{#735957}
---
 build/linux/unbundle/libxml.gn             | 41 ++++++++++++++++++++--
 third_party/libxml/chromium/libxml_utils.h |  4 +--
 third_party/libxml/chromium/xml_reader.cc  |  3 +-
 third_party/libxml/chromium/xml_writer.cc  |  3 +-
 4 files changed, 45 insertions(+), 6 deletions(-)

diff --git a/build/linux/unbundle/libxml.gn b/build/linux/unbundle/libxml.gn
index c481bd3547b..3587881eea8 100644
--- a/build/linux/unbundle/libxml.gn
+++ b/build/linux/unbundle/libxml.gn
@@ -8,11 +8,48 @@ pkg_config("system_libxml") {
   packages = [ "libxml-2.0" ]
 }
 
-static_library("libxml") {
+source_set("libxml") {
+  public_configs = [ ":system_libxml" ]
+}
+
+static_library("libxml_utils") {
+  # Do not expand this visibility list without first consulting with the
+  # Security Team.
+  visibility = [
+    ":xml_reader",
+    ":xml_writer",
+    "//base/test:test_support",
+    "//services/data_decoder:xml_parser_fuzzer",
+  ]
   sources = [
     "chromium/libxml_utils.cc",
     "chromium/libxml_utils.h",
   ]
-
   public_configs = [ ":system_libxml" ]
 }
+
+static_library("xml_reader") {
+  # Do not expand this visibility list without first consulting with the
+  # Security Team.
+  visibility = [
+    "//base/test:test_support",
+    "//components/policy/core/common:unit_tests",
+    "//services/data_decoder:*",
+    "//tools/traffic_annotation/auditor:auditor_sources",
+  ]
+  sources = [
+    "chromium/xml_reader.cc",
+    "chromium/xml_reader.h",
+  ]
+  deps = [ ":libxml_utils" ]
+}
+
+static_library("xml_writer") {
+  # The XmlWriter is considered safe to use from any target.
+  visibility = [ "*" ]
+  sources = [
+    "chromium/xml_writer.cc",
+    "chromium/xml_writer.h",
+  ]
+  deps = [ ":libxml_utils" ]
+}
diff --git a/third_party/libxml/chromium/libxml_utils.h b/third_party/libxml/chromium/libxml_utils.h
index ff969fab540..8b2383f9c8b 100644
--- a/third_party/libxml/chromium/libxml_utils.h
+++ b/third_party/libxml/chromium/libxml_utils.h
@@ -5,9 +5,9 @@
 #ifndef THIRD_PARTY_LIBXML_CHROMIUM_LIBXML_UTILS_H_
 #define THIRD_PARTY_LIBXML_CHROMIUM_LIBXML_UTILS_H_
 
-#include <string>
+#include <libxml/xmlreader.h>
 
-#include "third_party/libxml/src/include/libxml/xmlreader.h"
+#include <string>
 
 // libxml uses a global error function pointer for reporting errors.
 // A ScopedXmlErrorFunc object lets you change the global error pointer
diff --git a/third_party/libxml/chromium/xml_reader.cc b/third_party/libxml/chromium/xml_reader.cc
index 92464f4cbcc..899ccefb7c8 100644
--- a/third_party/libxml/chromium/xml_reader.cc
+++ b/third_party/libxml/chromium/xml_reader.cc
@@ -4,10 +4,11 @@
 
 #include "third_party/libxml/chromium/xml_reader.h"
 
+#include <libxml/xmlreader.h>
+
 #include <vector>
 
 #include "third_party/libxml/chromium/libxml_utils.h"
-#include "third_party/libxml/src/include/libxml/xmlreader.h"
 
 using internal::XmlStringToStdString;
 
diff --git a/third_party/libxml/chromium/xml_writer.cc b/third_party/libxml/chromium/xml_writer.cc
index 51fce8ebeb1..7c58031fe2d 100644
--- a/third_party/libxml/chromium/xml_writer.cc
+++ b/third_party/libxml/chromium/xml_writer.cc
@@ -4,8 +4,9 @@
 
 #include "third_party/libxml/chromium/xml_writer.h"
 
+#include <libxml/xmlwriter.h>
+
 #include "third_party/libxml/chromium/libxml_utils.h"
-#include "third_party/libxml/src/include/libxml/xmlwriter.h"
 
 XmlWriter::XmlWriter() : writer_(nullptr), buffer_(nullptr) {}