From a4a300dfffa7f3fff348d22dda3ddd5abcfa62a2 Mon Sep 17 00:00:00 2001 From: Ryan Burns Date: Sat, 30 Apr 2022 15:28:26 -0700 Subject: [PATCH] =?UTF-8?q?meson:=200.61.2=20=E2=86=92=200.62.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://mesonbuild.com/Release-notes-for-0-62-0.html https://github.com/mesonbuild/meson/compare/0.61.2...0.62.0 https://github.com/mesonbuild/meson/compare/0.62.0...0.62.1 https://github.com/mesonbuild/meson/compare/0.62.1...0.62.2 --- .../meson/allow-dirs-outside-of-prefix.patch | 19 -- .../tools/build-managers/meson/default.nix | 34 ++-- ...when-using-multiple-apple-frameworks.patch | 162 ------------------ 3 files changed, 18 insertions(+), 197 deletions(-) delete mode 100644 pkgs/development/tools/build-managers/meson/allow-dirs-outside-of-prefix.patch delete mode 100644 pkgs/development/tools/build-managers/meson/fix-gtkdoc-when-using-multiple-apple-frameworks.patch diff --git a/pkgs/development/tools/build-managers/meson/allow-dirs-outside-of-prefix.patch b/pkgs/development/tools/build-managers/meson/allow-dirs-outside-of-prefix.patch deleted file mode 100644 index 4eb292a2e529..000000000000 --- a/pkgs/development/tools/build-managers/meson/allow-dirs-outside-of-prefix.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/mesonbuild/coredata.py -+++ b/mesonbuild/coredata.py -@@ -506,7 +506,6 @@ class CoreData: - return value - if option.name.endswith('dir') and value.is_absolute() and \ - option not in BULITIN_DIR_NOPREFIX_OPTIONS: -- # Value must be a subdir of the prefix - # commonpath will always return a path in the native format, so we - # must use pathlib.PurePath to do the same conversion before - # comparing. -@@ -518,7 +517,7 @@ class CoreData: - try: - value = value.relative_to(prefix) - except ValueError: -- raise MesonException(msg.format(option, value, prefix)) -+ pass - if '..' in str(value): - raise MesonException(msg.format(option, value, prefix)) - return value.as_posix() diff --git a/pkgs/development/tools/build-managers/meson/default.nix b/pkgs/development/tools/build-managers/meson/default.nix index 5a9164d426a9..cd0b9563c787 100644 --- a/pkgs/development/tools/build-managers/meson/default.nix +++ b/pkgs/development/tools/build-managers/meson/default.nix @@ -10,20 +10,14 @@ python3.pkgs.buildPythonApplication rec { pname = "meson"; - version = "0.61.2"; + version = "0.62.2"; src = python3.pkgs.fetchPypi { inherit pname version; - hash = "sha256-AjOn+NlZB5MY9gUrCTnCf2il3oa6YB8lye5oaftfWIk="; + sha256 = "sha256-p2aeTEEQsGt0PVfMXWQyWRpmd+8kAhOf5PPUKsEzgLA="; }; patches = [ - # Upstream insists on not allowing bindir and other dir options - # outside of prefix for some reason: - # https://github.com/mesonbuild/meson/issues/2561 - # We remove the check so multiple outputs can work sanely. - ./allow-dirs-outside-of-prefix.patch - # Meson is currently inspecting fewer variables than autoconf does, which # makes it harder for us to use setup hooks, etc. Taken from # https://github.com/mesonbuild/meson/pull/6827 @@ -67,16 +61,24 @@ python3.pkgs.buildPythonApplication rec { # https://github.com/NixOS/nixpkgs/issues/86131#issuecomment-711051774 ./boost-Do-not-add-system-paths-on-nix.patch - # https://github.com/mesonbuild/meson/pull/9841 - # cross-compilation fix + # Prevent Meson from passing -O0 in buildtype=plain. + # Nixpkgs enables fortifications which do not work without optimizations. + # https://github.com/mesonbuild/meson/pull/10593 (fetchpatch { - url = "https://github.com/mesonbuild/meson/commit/266e8acb5807b38a550cb5145cea0e19545a21d7.patch"; - sha256 = "sha256-1GdKsm2xvq2GxTNeTyBH5O73hxboL0YI+w2BCoUeWXM="; + url = "https://github.com/mesonbuild/meson/commit/f9bfeb2add70973113ab4a98454a5c5d7e3a26ae.patch"; + revert = true; + sha256 = "VKXUwdS+zMp1y+5GrV2inESUpUUp+OL3aI4wOXHxOeo="; + }) + + # Fix passing multiple --define-variable arguments to pkg-config. + # https://github.com/mesonbuild/meson/pull/10670 + (fetchpatch { + url = "https://github.com/mesonbuild/meson/commit/d5252c5d4cf1c1931fef0c1c98dd66c000891d21.patch"; + sha256 = "GiUNVul1N5Fl8mfqM7vA/r1FdKqImiDYLXMVDt77gvw="; + excludes = [ + "docs/yaml/objects/dep.yaml" + ]; }) - ] ++ lib.optionals withDarwinFrameworksGtkDocPatch [ - # Fix building gtkdoc for GLib - # https://github.com/mesonbuild/meson/pull/10186 - ./fix-gtkdoc-when-using-multiple-apple-frameworks.patch ]; setupHook = ./setup-hook.sh; diff --git a/pkgs/development/tools/build-managers/meson/fix-gtkdoc-when-using-multiple-apple-frameworks.patch b/pkgs/development/tools/build-managers/meson/fix-gtkdoc-when-using-multiple-apple-frameworks.patch deleted file mode 100644 index 6c237e92dd11..000000000000 --- a/pkgs/development/tools/build-managers/meson/fix-gtkdoc-when-using-multiple-apple-frameworks.patch +++ /dev/null @@ -1,162 +0,0 @@ -From b8ba462ae72e0818898357464263ec84722f6d4c Mon Sep 17 00:00:00 2001 -From: Jan Tojnar -Date: Sat, 26 Mar 2022 02:26:27 +0100 -Subject: [PATCH] gnome: Fix gtkdoc when using multiple Apple frameworks - -The `-framework Foundation -framework CoreFoundation` ended up -de-duplicated by OrderedSet into `-framework Foundation CoreFoundation`. - -Picked from https://github.com/mesonbuild/meson/pull/10186 - -Also pick https://github.com/mesonbuild/meson/commit/68e684d51f1e469e0d9f4b499ffda15146cad98a when resolving conflict. - -diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py -index 214f97ac3..0521b2605 100644 ---- a/mesonbuild/modules/gnome.py -+++ b/mesonbuild/modules/gnome.py -@@ -593,15 +593,16 @@ class GnomeModule(ExtensionModule): - lib: T.Union[build.SharedLibrary, build.StaticLibrary], - depends: T.List[build.BuildTarget], - include_rpath: bool = False, -- use_gir_args: bool = False) -> T.List[str]: -+ use_gir_args: bool = False) -> T.Tuple[T.List[str], T.List[T.Union[build.BuildTarget, 'build.GeneratedTypes', 'FileOrString']]]: - link_command: T.List[str] = [] -+ new_depends = list(depends) - # Construct link args - if isinstance(lib, build.SharedLibrary): - libdir = os.path.join(state.environment.get_build_dir(), state.backend.get_target_dir(lib)) - link_command.append('-L' + libdir) - if include_rpath: - link_command.append('-Wl,-rpath,' + libdir) -- depends.append(lib) -+ new_depends.append(lib) - # Needed for the following binutils bug: - # https://github.com/mesonbuild/meson/issues/1911 - # However, g-ir-scanner does not understand -Wl,-rpath -@@ -615,19 +616,19 @@ class GnomeModule(ExtensionModule): - link_command.append('--extra-library=' + lib.name) - else: - link_command.append('-l' + lib.name) -- return link_command -+ return link_command, new_depends - -- def _get_dependencies_flags( -+ def _get_dependencies_flags_raw( - self, deps: T.Sequence[T.Union['Dependency', build.SharedLibrary, build.StaticLibrary]], -- state: 'ModuleState', depends: T.List[build.BuildTarget], include_rpath: bool = False, -- use_gir_args: bool = False, separate_nodedup: bool = False -- ) -> T.Tuple[OrderedSet[str], OrderedSet[str], OrderedSet[str], T.Optional[T.List[str]], OrderedSet[str]]: -+ state: 'ModuleState', depends: T.List[build.BuildTarget], include_rpath: bool, -+ use_gir_args: bool -+ ) -> T.Tuple[OrderedSet[str], OrderedSet[T.Union[str, T.Tuple[str, str]]], OrderedSet[T.Union[str, T.Tuple[str, str]]], T.Optional[T.List[str]], OrderedSet[str], -+ T.List[T.Union[build.BuildTarget, 'build.GeneratedTypes', 'FileOrString']]]: - cflags: OrderedSet[str] = OrderedSet() -- internal_ldflags: OrderedSet[str] = OrderedSet() -- external_ldflags: OrderedSet[str] = OrderedSet() - # External linker flags that can't be de-duped reliably because they -- # require two args in order, such as -framework AVFoundation -- external_ldflags_nodedup: T.List[str] = [] -+ # require two args in order, such as -framework AVFoundation will be stored as a tuple. -+ internal_ldflags: OrderedSet[T.Union[str, T.Tuple[str, str]]] = OrderedSet() -+ external_ldflags: OrderedSet[T.Union[str, T.Tuple[str, str]]] = OrderedSet() - gi_includes: OrderedSet[str] = OrderedSet() - deps = mesonlib.listify(deps) - -@@ -642,21 +643,20 @@ class GnomeModule(ExtensionModule): - cflags.update(state.get_include_args(dep.include_directories)) - for lib in dep.libraries: - if isinstance(lib, build.SharedLibrary): -- internal_ldflags.update(self._get_link_args(state, lib, depends, include_rpath)) -- libdepflags = self._get_dependencies_flags(lib.get_external_deps(), state, depends, include_rpath, -- use_gir_args, True) -+ _ld, depends = self._get_link_args(state, lib, depends, include_rpath) -+ internal_ldflags.update(_ld) -+ libdepflags = self._get_dependencies_flags_raw(lib.get_external_deps(), state, depends, include_rpath, -+ use_gir_args) - cflags.update(libdepflags[0]) - internal_ldflags.update(libdepflags[1]) - external_ldflags.update(libdepflags[2]) -- external_ldflags_nodedup += libdepflags[3] -- gi_includes.update(libdepflags[4]) -- extdepflags = self._get_dependencies_flags(dep.ext_deps, state, depends, include_rpath, -- use_gir_args, True) -+ gi_includes.update(libdepflags[3]) -+ extdepflags = self._get_dependencies_flags_raw(dep.ext_deps, state, depends, include_rpath, -+ use_gir_args) - cflags.update(extdepflags[0]) - internal_ldflags.update(extdepflags[1]) - external_ldflags.update(extdepflags[2]) -- external_ldflags_nodedup += extdepflags[3] -- gi_includes.update(extdepflags[4]) -+ gi_includes.update(extdepflags[3]) - for source in dep.sources: - if isinstance(source, GirTarget): - gi_includes.update([os.path.join(state.environment.get_build_dir(), -@@ -684,7 +684,7 @@ class GnomeModule(ExtensionModule): - # If it's a framework arg, slurp the framework name too - # to preserve the order of arguments - if flag == '-framework': -- external_ldflags_nodedup += [flag, next(ldflags)] -+ external_ldflags.update([(flag, next(ldflags))]) - else: - external_ldflags.update([flag]) - elif isinstance(dep, (build.StaticLibrary, build.SharedLibrary)): -@@ -695,21 +695,41 @@ class GnomeModule(ExtensionModule): - continue - - if use_gir_args and self._gir_has_option('--extra-library'): -- def fix_ldflags(ldflags: T.Iterable[str]) -> OrderedSet[str]: -- fixed_ldflags: OrderedSet[str] = OrderedSet() -+ def fix_ldflags(ldflags: T.Iterable[T.Union[str, T.Tuple[str, str]]]) -> OrderedSet[T.Union[str, T.Tuple[str, str]]]: -+ fixed_ldflags: OrderedSet[T.Union[str, T.Tuple[str, str]]] = OrderedSet() - for ldflag in ldflags: -- if ldflag.startswith("-l"): -+ if isinstance(ldflag, str) and ldflag.startswith("-l"): - ldflag = ldflag.replace('-l', '--extra-library=', 1) - fixed_ldflags.add(ldflag) - return fixed_ldflags - internal_ldflags = fix_ldflags(internal_ldflags) - external_ldflags = fix_ldflags(external_ldflags) -- if not separate_nodedup: -- external_ldflags.update(external_ldflags_nodedup) -- return cflags, internal_ldflags, external_ldflags, None, gi_includes -- else: -- return cflags, internal_ldflags, external_ldflags, external_ldflags_nodedup, gi_includes -+ return cflags, internal_ldflags, external_ldflags, gi_includes, depends -+ -+ def _get_dependencies_flags( -+ self, deps: T.Sequence[T.Union['Dependency', build.SharedLibrary, build.StaticLibrary]], -+ state: 'ModuleState', depends: T.List[build.BuildTarget], include_rpath: bool = False, -+ use_gir_args: bool = False -+ ) -> T.Tuple[OrderedSet[str], T.List[str], T.List[str], OrderedSet[str], -+ T.List[T.Union[build.BuildTarget, 'build.GeneratedTypes', 'FileOrString']]]: -+ -+ cflags, internal_ldflags_raw, external_ldflags_raw, gi_includes, depends = self._get_dependencies_flags_raw(deps, state, depends, include_rpath, use_gir_args) -+ internal_ldflags: T.List[str] = [] -+ external_ldflags: T.List[str] = [] -+ -+ # Extract non-deduplicable argument groups out of the tuples. -+ for ldflag in internal_ldflags_raw: -+ if isinstance(ldflag, str): -+ internal_ldflags.append(ldflag) -+ else: -+ internal_ldflags.extend(ldflag) -+ for ldflag in external_ldflags_raw: -+ if isinstance(ldflag, str): -+ external_ldflags.append(ldflag) -+ else: -+ external_ldflags.extend(ldflag) - -+ return cflags, internal_ldflags, external_ldflags, gi_includes, depends - def _unwrap_gir_target(self, girtarget: T.Union[build.Executable, build.StaticLibrary, build.SharedLibrary], state: 'ModuleState' - ) -> T.Union[build.Executable, build.StaticLibrary, build.SharedLibrary]: - if not isinstance(girtarget, (build.Executable, build.SharedLibrary, -@@ -1056,7 +1076,7 @@ class GnomeModule(ExtensionModule): - # ldflags will be misinterpreted by gir scanner (showing - # spurious dependencies) but building GStreamer fails if they - # are not used here. -- dep_cflags, dep_internal_ldflags, dep_external_ldflags, _, gi_includes = \ -+ dep_cflags, dep_internal_ldflags, dep_external_ldflags, gi_includes, depends = \ - self._get_dependencies_flags(deps, state, depends, use_gir_args=True) - scan_cflags = [] - scan_cflags += list(self._get_scanner_cflags(cflags))