[Instrumented libraries] Fix atk1.0 build for Focal
R=thestig
Bug: 1260217
Change-Id: If99bcb15b3fbdc0e81df3c719ab2dc90c12083f3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3260838
Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/main@{#938347}
diff --git a/third_party/instrumented_libraries/focal/BUILD.gn b/third_party/instrumented_libraries/focal/BUILD.gn
index 0602aed3..314dd1c9 100644
--- a/third_party/instrumented_libraries/focal/BUILD.gn
+++ b/third_party/instrumented_libraries/focal/BUILD.gn
@@ -157,12 +157,9 @@
}
instrumented_library("atk1.0") {
- extra_configure_flags = [
- "--disable-static",
-
- # See above.
- "--disable-introspection",
- ]
+ build_method = "meson"
+ package_ldflags = [ "-Wl,-z,undefs" ]
+ extra_configure_flags = [ "-Dintrospection=false" ]
}
instrumented_library("brltty") {
diff --git a/third_party/instrumented_libraries/focal/scripts/download_build_install.py b/third_party/instrumented_libraries/focal/scripts/download_build_install.py
index 425d1c544..0153ef65 100755
--- a/third_party/instrumented_libraries/focal/scripts/download_build_install.py
+++ b/third_party/instrumented_libraries/focal/scripts/download_build_install.py
@@ -255,6 +255,9 @@
self.make_install(make_args)
+ self.post_install()
+
+ def post_install(self):
self.cleanup_after_install()
self.fix_rpaths(self.temp_libdir())
@@ -414,6 +417,35 @@
self.dest_libdir()))
+class MesonBuilder(InstrumentedPackageBuilder):
+ def build_and_install(self):
+ meson_flags = {
+ 'prefix': '/usr',
+ 'libdir': self._libdir,
+ 'sbindir': 'bin',
+ }
+ meson_cmd = [
+ 'meson',
+ 'build',
+ '.',
+ ' '.join('--%s %s' % item for item in meson_flags.items()),
+ self._extra_configure_flags,
+ ]
+
+ self.shell_call(' '.join(meson_cmd),
+ env=self._build_env, cwd=self._source_dir)
+ self.shell_call('ninja -C build', cwd=self._source_dir)
+ self.shell_call('ninja -C build install',
+ {**self._build_env, 'DESTDIR': self.temp_dir()},
+ cwd=self._source_dir)
+ self.post_install()
+
+ # LIBDIR is always relative to the prefix (/usr), so that needs to be added
+ # unlike when using configure.
+ def temp_libdir(self):
+ return os.path.join(self.temp_dir(), 'usr', self._libdir)
+
+
class NSSBuilder(InstrumentedPackageBuilder):
def build_and_install(self):
# NSS uses a build system that's different from configure/make/install. All
@@ -522,6 +554,8 @@
builder = Libpci3Builder(args, clobber)
elif args.build_method == 'debian':
builder = DebianBuilder(args, clobber)
+ elif args.build_method == 'meson':
+ builder = MesonBuilder(args, clobber)
elif args.build_method == 'stub':
builder = StubBuilder(args, clobber)
else:
diff --git a/third_party/instrumented_libraries/scripts/build_and_package.py b/third_party/instrumented_libraries/scripts/build_and_package.py
index b9367f1b9..447e339 100755
--- a/third_party/instrumented_libraries/scripts/build_and_package.py
+++ b/third_party/instrumented_libraries/scripts/build_and_package.py
@@ -51,6 +51,7 @@
'is_debug = false',
'use_goma = %s' % str(use_goma).lower(),
'use_locally_built_instrumented_libraries = true',
+ 'instrumented_libraries_release = "%s"' % ubuntu_release,
] + BUILD_TYPES[build_type]
with open(os.path.join(build_dir, 'args.gn'), 'w') as f:
f.write('\n'.join(gn_args) + '\n')