FreeBSD Bugzilla – Attachment 193462 Details for
Bug 228297
[exp-run] devel/meson update to 0.46.0.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Meson 0.46.0 update
meson-0.46.0.diff (text/plain), 17.63 KB, created by
Koop Mast
on 2018-05-16 15:39:44 UTC
(
hide
)
Description:
Meson 0.46.0 update
Filename:
MIME Type:
Creator:
Koop Mast
Created:
2018-05-16 15:39:44 UTC
Size:
17.63 KB
patch
obsolete
>Index: devel/meson/Makefile >=================================================================== >--- devel/meson/Makefile (revision 470124) >+++ devel/meson/Makefile (working copy) >@@ -2,7 +2,8 @@ > # $FreeBSD$ > > PORTNAME= meson >-PORTVERSION= 0.45.1 >+PORTVERSION= 0.46.0 >+PORTREVISION= 2 > CATEGORIES= devel python > MASTER_SITES= https://github.com/mesonbuild/${PORTNAME}/releases/download/${PORTVERSION}/ > >Index: devel/meson/distinfo >=================================================================== >--- devel/meson/distinfo (revision 470124) >+++ devel/meson/distinfo (working copy) >@@ -1,3 +1,3 @@ >-TIMESTAMP = 1521857611 >-SHA256 (meson-0.45.1.tar.gz) = 4d0bb0dbb1bb556cb7a4092fdfea3d6e76606bd739a4bc97481c2d7bc6200afb >-SIZE (meson-0.45.1.tar.gz) = 1163209 >+TIMESTAMP = 1524914549 >+SHA256 (meson-0.46.0.tar.gz) = b7df91b01a358a8facdbfa33596a47cda38a760435ab55e1985c0bff06a9cbf0 >+SIZE (meson-0.46.0.tar.gz) = 1200001 >Index: devel/meson/files/patch-mesonbuild_modules_gnome.py >=================================================================== >--- devel/meson/files/patch-mesonbuild_modules_gnome.py (nonexistent) >+++ devel/meson/files/patch-mesonbuild_modules_gnome.py (working copy) >@@ -0,0 +1,190 @@ >+https://github.com/mesonbuild/meson/pull/3463 >+ >+From 894457199672413466771da6fd9b6988c29c8557 Mon Sep 17 00:00:00 2001 >+From: Ting-Wei Lan <lantw@src.gnome.org> >+Date: Sun, 22 Apr 2018 22:38:18 +0800 >+Subject: [PATCH] gnome: Distinguish between internal and external linker flags >+ >+When an older version of the library being built is installed in the >+same prefix as external dependencies, we have to be careful to construct >+the linker or compiler command line. If a -L flag from external >+dependencoes comes before a -L flag pointing to builddir, it is possible >+for the linker to load older libraries from the installation prefix >+instead of the newly built ones, which is likely to cause undefined >+reference error. >+ >+Since the order of dependencies is not significant, we cannot expect >+internal dependencies to appear before external dependencies when >+recursively iterating the list of dependencies. To make it harder to >+make mistakes, linker flags come from internal and external >+dependencies are now stored in different order sets. Code using >+_get_dependencies_flags are expected to follow the order when >+constructing linker command line: >+ >+ 1. Internal linker flags >+ 2. LDFLAGS set by users >+ 3. External linker flags >+ >+It is similar to what automake and libtool do for autotools projects. >+--- >+ mesonbuild/modules/gnome.py | 61 +++++++++++++++++++++++++++------------------ >+ 1 file changed, 37 insertions(+), 24 deletions(-) >+ >+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py >+index abefe0579..5629ad169 100644 >+--- mesonbuild/modules/gnome.py >++++ mesonbuild/modules/gnome.py >+@@ -316,7 +316,8 @@ def _get_link_args(self, state, lib, depends=None, include_rpath=False, >+ def _get_dependencies_flags(self, deps, state, depends=None, include_rpath=False, >+ use_gir_args=False): >+ cflags = OrderedSet() >+- ldflags = OrderedSet() >++ internal_ldflags = OrderedSet() >++ external_ldflags = OrderedSet() >+ gi_includes = OrderedSet() >+ deps = mesonlib.listify(deps, unholder=True) >+ >+@@ -326,17 +327,19 @@ def _get_dependencies_flags(self, deps, state, depends=None, include_rpath=False >+ for lib in dep.libraries: >+ if hasattr(lib, 'held_object'): >+ lib = lib.held_object >+- ldflags.update(self._get_link_args(state, lib, depends, include_rpath)) >++ 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) >+ cflags.update(libdepflags[0]) >+- ldflags.update(libdepflags[1]) >+- gi_includes.update(libdepflags[2]) >++ internal_ldflags.update(libdepflags[1]) >++ external_ldflags.update(libdepflags[2]) >++ gi_includes.update(libdepflags[3]) >+ extdepflags = self._get_dependencies_flags(dep.ext_deps, state, depends, include_rpath, >+ use_gir_args) >+ cflags.update(extdepflags[0]) >+- ldflags.update(extdepflags[1]) >+- gi_includes.update(extdepflags[2]) >++ internal_ldflags.update(extdepflags[1]) >++ external_ldflags.update(extdepflags[2]) >++ gi_includes.update(extdepflags[3]) >+ for source in dep.sources: >+ if hasattr(source, 'held_object'): >+ source = source.held_object >+@@ -351,9 +354,9 @@ def _get_dependencies_flags(self, deps, state, depends=None, include_rpath=False >+ # For PkgConfigDependency only: >+ getattr(dep, 'is_libtool', False)): >+ lib_dir = os.path.dirname(lib) >+- ldflags.update(["-L%s" % lib_dir]) >++ external_ldflags.update(["-L%s" % lib_dir]) >+ if include_rpath: >+- ldflags.update(['-Wl,-rpath {}'.format(lib_dir)]) >++ external_ldflags.update(['-Wl,-rpath {}'.format(lib_dir)]) >+ libname = os.path.basename(lib) >+ if libname.startswith("lib"): >+ libname = libname[3:] >+@@ -362,7 +365,7 @@ def _get_dependencies_flags(self, deps, state, depends=None, include_rpath=False >+ # Hack to avoid passing some compiler options in >+ if lib.startswith("-W"): >+ continue >+- ldflags.update([lib]) >++ external_ldflags.update([lib]) >+ >+ if isinstance(dep, PkgConfigDependency): >+ girdir = dep.get_pkgconfig_variable("girdir", {'default': ''}) >+@@ -375,14 +378,17 @@ def _get_dependencies_flags(self, deps, state, depends=None, include_rpath=False >+ continue >+ >+ if gir_has_extra_lib_arg(self.interpreter) and use_gir_args: >+- fixed_ldflags = OrderedSet() >+- for ldflag in ldflags: >+- if ldflag.startswith("-l"): >+- fixed_ldflags.add(ldflag.replace('-l', '--extra-library=', 1)) >+- else: >+- fixed_ldflags.add(ldflag) >+- ldflags = fixed_ldflags >+- return cflags, ldflags, gi_includes >++ def fix_ldflags(ldflags): >++ fixed_ldflags = OrderedSet() >++ for ldflag in ldflags: >++ if ldflag.startswith("-l"): >++ fixed_ldflags.add(ldflag.replace('-l', '--extra-library=', 1)) >++ else: >++ fixed_ldflags.add(ldflag) >++ return fixed_ldflags >++ internal_ldflags = fix_ldflags(internal_ldflags) >++ external_ldflags = fix_ldflags(external_ldflags) >++ return cflags, internal_ldflags, external_ldflags, gi_includes >+ >+ @permittedKwargs({'sources', 'nsversion', 'namespace', 'symbol_prefix', 'identifier_prefix', >+ 'export_packages', 'includes', 'dependencies', 'link_with', 'include_directories', >+@@ -484,7 +490,8 @@ def generate_gir(self, state, args, kwargs): >+ 'Gir includes must be str, GirTarget, or list of them') >+ >+ cflags = [] >+- ldflags = [] >++ internal_ldflags = [] >++ external_ldflags = [] >+ for lang, compiler in girtarget.compilers.items(): >+ # XXX: Can you use g-i with any other language? >+ if lang in ('c', 'cpp', 'objc', 'objcpp', 'd'): >+@@ -501,7 +508,7 @@ def generate_gir(self, state, args, kwargs): >+ sanitize = state.environment.coredata.base_options['b_sanitize'].value >+ cflags += compilers.sanitizer_compile_args(sanitize) >+ if 'address' in sanitize.split(','): >+- ldflags += ['-lasan'] >++ external_ldflags += ['-lasan'] >+ # FIXME: Linking directly to libasan is not recommended but g-ir-scanner >+ # does not understand -f LDFLAGS. https://bugzilla.gnome.org/show_bug.cgi?id=783892 >+ # ldflags += compilers.sanitizer_link_args(sanitize) >+@@ -562,10 +569,11 @@ def generate_gir(self, state, args, kwargs): >+ # ldflags will be misinterpreted by gir scanner (showing >+ # spurious dependencies) but building GStreamer fails if they >+ # are not used here. >+- dep_cflags, dep_ldflags, gi_includes = self._get_dependencies_flags(deps, state, depends, >+- use_gir_args=True) >++ dep_cflags, dep_internal_ldflags, dep_external_ldflags, gi_includes = \ >++ self._get_dependencies_flags(deps, state, depends, use_gir_args=True) >+ cflags += list(dep_cflags) >+- ldflags += list(dep_ldflags) >++ internal_ldflags += list(dep_internal_ldflags) >++ external_ldflags += list(dep_external_ldflags) >+ scan_command += ['--cflags-begin'] >+ scan_command += cflags >+ scan_command += state.environment.coredata.external_args[lang] >+@@ -575,7 +583,7 @@ def generate_gir(self, state, args, kwargs): >+ # ones. >+ if isinstance(girtarget, build.SharedLibrary): >+ scan_command += ["-L@PRIVATE_OUTDIR_ABS_%s@" % girtarget.get_id()] >+- scan_command += list(ldflags) >++ scan_command += list(internal_ldflags) >+ for i in gi_includes: >+ scan_command += ['--add-include-path=%s' % i] >+ >+@@ -603,6 +611,7 @@ def generate_gir(self, state, args, kwargs): >+ for link_arg in state.environment.coredata.external_link_args[lang]: >+ if link_arg.startswith('-L'): >+ scan_command.append(link_arg) >++ scan_command += list(external_ldflags) >+ >+ scankwargs = {'output': girfile, >+ 'command': scan_command, >+@@ -825,7 +834,8 @@ def gtkdoc(self, state, args, kwargs): >+ def _get_build_args(self, kwargs, state): >+ args = [] >+ deps = extract_as_list(kwargs, 'dependencies', unholder=True) >+- cflags, ldflags, gi_includes = self._get_dependencies_flags(deps, state, include_rpath=True) >++ cflags, internal_ldflags, external_ldflags, gi_includes = \ >++ self._get_dependencies_flags(deps, state, include_rpath=True) >+ inc_dirs = mesonlib.extract_as_list(kwargs, 'include_directories') >+ for incd in inc_dirs: >+ if not isinstance(incd.held_object, (str, build.IncludeDirs)): >+@@ -833,7 +843,10 @@ def _get_build_args(self, kwargs, state): >+ 'Gir include dirs should be include_directories().') >+ cflags.update(get_include_args(inc_dirs)) >+ cflags.update(state.environment.coredata.external_args['c']) >++ ldflags = OrderedSet() >++ ldflags.update(internal_ldflags) >+ ldflags.update(state.environment.coredata.external_link_args['c']) >++ ldflags.update(external_ldflags) >+ if cflags: >+ args += ['--cflags=%s' % ' '.join(cflags)] >+ if ldflags: > >Property changes on: devel/meson/files/patch-mesonbuild_modules_gnome.py >___________________________________________________________________ >Added: fbsd:nokeywords >## -0,0 +1 ## >+yes >\ No newline at end of property >Added: svn:eol-style >## -0,0 +1 ## >+native >\ No newline at end of property >Added: svn:mime-type >## -0,0 +1 ## >+text/plain >\ No newline at end of property >Index: devel/meson/files/patch-pkgconfig >=================================================================== >--- devel/meson/files/patch-pkgconfig (nonexistent) >+++ devel/meson/files/patch-pkgconfig (working copy) >@@ -0,0 +1,32 @@ >+From cbc2f2d1df769123caa2e4562dbe1809cca1304d Mon Sep 17 00:00:00 2001 >+From: Jussi Pakkanen <jpakkane@gmail.com> >+Date: Sun, 29 Apr 2018 21:43:24 +0300 >+Subject: [PATCH] Keep separator spaces in pkg-config declarations. Closes >+ #3479. >+ >+--- >+ mesonbuild/modules/pkgconfig.py | 6 ++++-- >+ run_unittests.py | 11 +++++++++++ >+ test cases/unit/31 pkgconfig format/meson.build | 12 ++++++++++++ >+ test cases/unit/31 pkgconfig format/somelib.c | 5 +++++ >+ 4 files changed, 32 insertions(+), 2 deletions(-) >+ create mode 100644 test cases/unit/31 pkgconfig format/meson.build >+ create mode 100644 test cases/unit/31 pkgconfig format/somelib.c >+ >+diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py >+index a3ba973f3..419a14c77 100644 >+--- mesonbuild/modules/pkgconfig.py >++++ mesonbuild/modules/pkgconfig.py >+@@ -139,8 +139,10 @@ def add_version_reqs(self, name, version_reqs): >+ if version_reqs: >+ if name not in self.version_reqs: >+ self.version_reqs[name] = set() >+- # We could have '>=1.0' or '>= 1.0', remove spaces to normalize >+- new_vreqs = [s.replace(' ', '') for s in mesonlib.stringlistify(version_reqs)] >++ # Note that pkg-config is picky about whitespace. >++ # 'foo > 1.2' is ok but 'foo>1.2' is not. >++ # foo, bar' is ok, but 'foo,bar' is not. >++ new_vreqs = [s for s in mesonlib.stringlistify(version_reqs)] >+ self.version_reqs[name].update(new_vreqs) >+ >+ def split_version_req(self, s): > >Property changes on: devel/meson/files/patch-pkgconfig >___________________________________________________________________ >Added: fbsd:nokeywords >## -0,0 +1 ## >+yes >\ No newline at end of property >Added: svn:eol-style >## -0,0 +1 ## >+native >\ No newline at end of property >Added: svn:mime-type >## -0,0 +1 ## >+text/plain >\ No newline at end of property >Index: devel/meson/files/patch-pkgconfig-internal >=================================================================== >--- devel/meson/files/patch-pkgconfig-internal (nonexistent) >+++ devel/meson/files/patch-pkgconfig-internal (working copy) >@@ -0,0 +1,67 @@ >+From a3b2ae8ebcdcebd68b8a217d03102c6d03fcb766 Mon Sep 17 00:00:00 2001 >+From: Nirbheek Chauhan <nirbheek@centricular.com> >+Date: Tue, 1 May 2018 17:54:54 +0530 >+Subject: [PATCH] pkgconfig: Don't expose internal libraries in .pc files >+ >+Libraries that have been linked with link_whole: are internal >+implementation details and should never be exposed to the outside >+world in either Libs: or Libs.private: >+ >+Closes https://github.com/mesonbuild/meson/issues/3509 >+--- >+ mesonbuild/build.py | 12 +++++++++--- >+ mesonbuild/modules/pkgconfig.py | 4 ++-- >+ run_unittests.py | 11 ++++++----- >+ test cases/unit/31 pkgconfig format/meson.build | 5 +++-- >+ test cases/unit/31 pkgconfig format/somelib.c | 4 +++- >+ test cases/unit/31 pkgconfig format/someret.c | 3 +++ >+ 6 files changed, 26 insertions(+), 13 deletions(-) >+ create mode 100644 test cases/unit/31 pkgconfig format/someret.c >+ >+diff --git a/mesonbuild/build.py b/mesonbuild/build.py >+index 3d531d181..a2d024aec 100644 >+--- mesonbuild/build.py >++++ mesonbuild/build.py >+@@ -817,16 +817,22 @@ def get_outputs(self): >+ def get_extra_args(self, language): >+ return self.extra_args.get(language, []) >+ >+- def get_dependencies(self, exclude=None): >++ def get_dependencies(self, exclude=None, internal=True): >+ transitive_deps = [] >+ if exclude is None: >+ exclude = [] >+- for t in itertools.chain(self.link_targets, self.link_whole_targets): >++ if internal: >++ link_targets = itertools.chain(self.link_targets, self.link_whole_targets) >++ else: >++ # We don't want the 'internal' libraries when generating the >++ # `Libs:` and `Libs.private:` lists in pkg-config files. >++ link_targets = self.link_targets >++ for t in link_targets: >+ if t in transitive_deps or t in exclude: >+ continue >+ transitive_deps.append(t) >+ if isinstance(t, StaticLibrary): >+- transitive_deps += t.get_dependencies(transitive_deps + exclude) >++ transitive_deps += t.get_dependencies(transitive_deps + exclude, internal) >+ return transitive_deps >+ >+ def get_source_subdir(self): >+diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py >+index 419a14c77..365d3cd37 100644 >+--- mesonbuild/modules/pkgconfig.py >++++ mesonbuild/modules/pkgconfig.py >+@@ -123,10 +123,10 @@ def _process_libs(self, libs, public): >+ if not hasattr(obj, 'generated_pc'): >+ obj.generated_pc = self.name >+ if isinstance(obj, build.StaticLibrary) and public: >+- self.add_pub_libs(obj.get_dependencies()) >++ self.add_pub_libs(obj.get_dependencies(internal=False)) >+ self.add_pub_libs(obj.get_external_deps()) >+ else: >+- self.add_priv_libs(obj.get_dependencies()) >++ self.add_priv_libs(obj.get_dependencies(internal=False)) >+ self.add_priv_libs(obj.get_external_deps()) >+ elif isinstance(obj, str): >+ processed_libs.append(obj) > >Property changes on: devel/meson/files/patch-pkgconfig-internal >___________________________________________________________________ >Added: fbsd:nokeywords >## -0,0 +1 ## >+yes >\ No newline at end of property >Added: svn:eol-style >## -0,0 +1 ## >+native >\ No newline at end of property >Added: svn:mime-type >## -0,0 +1 ## >+text/plain >\ No newline at end of property
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 228297
: 193462