[Midnightbsd-cvs] mports [23917] trunk/devel: add meson.

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Aug 26 17:19:41 EDT 2018


Revision: 23917
          http://svnweb.midnightbsd.org/mports/?rev=23917
Author:   laffer1
Date:     2018-08-26 17:19:41 -0400 (Sun, 26 Aug 2018)
Log Message:
-----------
add meson.

Modified Paths:
--------------
    trunk/devel/Makefile
    trunk/devel/py34-setuptools/Makefile

Added Paths:
-----------
    trunk/devel/meson/
    trunk/devel/meson/Makefile
    trunk/devel/meson/distinfo
    trunk/devel/meson/files/
    trunk/devel/meson/files/patch-mesonbuild_modules_gnome.py
    trunk/devel/meson/files/patch-setup.py
    trunk/devel/meson/pkg-descr
    trunk/devel/py34-setuptools/

Modified: trunk/devel/Makefile
===================================================================
--- trunk/devel/Makefile	2018-08-26 21:15:53 UTC (rev 23916)
+++ trunk/devel/Makefile	2018-08-26 21:19:41 UTC (rev 23917)
@@ -219,6 +219,7 @@
 SUBDIR += m4
 SUBDIR += makedepend
 SUBDIR += mercurial
+SUBDIR += meson
 SUBDIR += mm
 SUBDIR += mono-addins
 SUBDIR += monodevelop
@@ -520,6 +521,7 @@
 SUBDIR += py3-libpeas
 SUBDIR += py3-xdg
 SUBDIR += py33-setuptools
+SUBDIR += py34-setuptools
 SUBDIR += pydbus-common
 SUBDIR += pygobject3-common
 SUBDIR += pylint

Added: trunk/devel/meson/Makefile
===================================================================
--- trunk/devel/meson/Makefile	                        (rev 0)
+++ trunk/devel/meson/Makefile	2018-08-26 21:19:41 UTC (rev 23917)
@@ -0,0 +1,20 @@
+# $MidnightBSD$
+
+PORTNAME=	meson
+PORTVERSION=	0.46.1
+CATEGORIES=	devel python
+MASTER_SITES=	https://github.com/mesonbuild/${PORTNAME}/releases/download/${PORTVERSION}/
+
+MAINTAINER=	ports at MidnightBSD.org
+COMMENT=	High performance build system
+
+LICENSE=	apache2
+LICENSE_FILE=	${WRKSRC}/COPYING
+
+RUN_DEPENDS=	ninja:devel/ninja
+
+USES=		python:3.4+
+USE_PYTHON=	autoplist distutils
+NO_ARCH=	yes
+
+.include <bsd.port.mk>


Property changes on: trunk/devel/meson/Makefile
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/devel/meson/distinfo
===================================================================
--- trunk/devel/meson/distinfo	                        (rev 0)
+++ trunk/devel/meson/distinfo	2018-08-26 21:19:41 UTC (rev 23917)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1529220278
+SHA256 (meson-0.46.1.tar.gz) = 19497a03e7e5b303d8d11f98789a79aba59b5ad4a81bd00f4d099be0212cee78
+SIZE (meson-0.46.1.tar.gz) = 1203713


Property changes on: trunk/devel/meson/distinfo
___________________________________________________________________
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
Added: trunk/devel/meson/files/patch-mesonbuild_modules_gnome.py
===================================================================
--- trunk/devel/meson/files/patch-mesonbuild_modules_gnome.py	                        (rev 0)
+++ trunk/devel/meson/files/patch-mesonbuild_modules_gnome.py	2018-08-26 21:19:41 UTC (rev 23917)
@@ -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 at 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 at 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: trunk/devel/meson/files/patch-mesonbuild_modules_gnome.py
___________________________________________________________________
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
Added: trunk/devel/meson/files/patch-setup.py
===================================================================
--- trunk/devel/meson/files/patch-setup.py	                        (rev 0)
+++ trunk/devel/meson/files/patch-setup.py	2018-08-26 21:19:41 UTC (rev 23917)
@@ -0,0 +1,11 @@
+--- setup.py.orig	2016-11-13 20:01:34 UTC
++++ setup.py
+@@ -73,7 +73,7 @@ setup(name='meson',
+                'mesonintrospect.py',
+                'wraptool.py'],
+       cmdclass={'install_scripts': install_scripts},
+-      data_files=[('share/man/man1', ['man/meson.1',
++      data_files=[('man/man1'      , ['man/meson.1',
+                                       'man/mesonconf.1',
+                                       'man/mesonintrospect.1',
+                                       'man/wraptool.1'])],


Property changes on: trunk/devel/meson/files/patch-setup.py
___________________________________________________________________
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
Added: trunk/devel/meson/pkg-descr
===================================================================
--- trunk/devel/meson/pkg-descr	                        (rev 0)
+++ trunk/devel/meson/pkg-descr	2018-08-26 21:19:41 UTC (rev 23917)
@@ -0,0 +1,9 @@
+Meson is a cross-platform build system designed to be both as fast and as
+user friendly as possible. It supports many languages and compilers, including
+GCC, Clang and Visual Studio. Its build definitions are written in a simple
+non-turing complete DSL. The main design point of Meson is that every moment
+a developer spends writing or debugging build definitions is a second wasted.
+So is every second spent waiting for the build system to actually start
+compiling code.
+
+WWW: http://mesonbuild.com


Property changes on: trunk/devel/meson/pkg-descr
___________________________________________________________________
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
Modified: trunk/devel/py34-setuptools/Makefile
===================================================================
--- trunk/devel/py33-setuptools/Makefile	2018-08-26 16:14:13 UTC (rev 23831)
+++ trunk/devel/py34-setuptools/Makefile	2018-08-26 21:19:41 UTC (rev 23917)
@@ -4,6 +4,6 @@
 
 MASTERDIR=	${.CURDIR}/../py27-setuptools
 
-USES=		python:3.3
+USES=		python:3.4
 
 .include "${MASTERDIR}/Makefile"



More information about the Midnightbsd-cvs mailing list