diff mbox

[v4] moarvm: new package

Message ID 1433543601-17425-1-git-send-email-arnout@mind.be
State Superseded
Headers show

Commit Message

Arnout Vandecappelle June 5, 2015, 10:33 p.m. UTC
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
 [use buildroot's libatomic_ops, libuv and host-luajit; add
  dependencies from libuv]
---
v4 (Arnout): - use buildroot's libatomic_ops, libuv and host-luajit
             - add dependencies from libuv
---
 package/Config.in          |  1 +
 package/moarvm/Config.in   | 19 +++++++++++++++++++
 package/moarvm/moarvm.hash |  2 ++
 package/moarvm/moarvm.mk   | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 68 insertions(+)
 create mode 100644 package/moarvm/Config.in
 create mode 100644 package/moarvm/moarvm.hash
 create mode 100644 package/moarvm/moarvm.mk

Comments

Francois Perrad June 6, 2015, 9:03 a.m. UTC | #1
2015-06-06 0:33 GMT+02:00 Arnout Vandecappelle (Essensium/Mind)
<arnout@mind.be>:
> Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
>  [use buildroot's libatomic_ops, libuv and host-luajit; add
>   dependencies from libuv]
> ---
> v4 (Arnout): - use buildroot's libatomic_ops, libuv and host-luajit
>              - add dependencies from libuv
> ---
>  package/Config.in          |  1 +
>  package/moarvm/Config.in   | 19 +++++++++++++++++++
>  package/moarvm/moarvm.hash |  2 ++
>  package/moarvm/moarvm.mk   | 46 ++++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 68 insertions(+)
>  create mode 100644 package/moarvm/Config.in
>  create mode 100644 package/moarvm/moarvm.hash
>  create mode 100644 package/moarvm/moarvm.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index e0c2e2a..00c9ce3 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -499,6 +499,7 @@ menu "Lua libraries/modules"
>         source "package/xavante/Config.in"
>  endmenu
>  endif
> +       source "package/moarvm/Config.in"
>         source "package/mono/Config.in"
>         source "package/nodejs/Config.in"
>         source "package/perl/Config.in"
> diff --git a/package/moarvm/Config.in b/package/moarvm/Config.in
> new file mode 100644
> index 0000000..8657345
> --- /dev/null
> +++ b/package/moarvm/Config.in
> @@ -0,0 +1,19 @@
> +config BR2_PACKAGE_MOARVM
> +       bool "moarvm"
> +       depends on BR2_TOOLCHAIN_HAS_THREADS # libuv
> +       depends on !BR2_STATIC_LIBS # libuv
> +       depends on BR2_USE_MMU # libuv
> +       depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS # libatomic_ops
> +       select BR2_PACKAGE_LIBUV
> +       select BR2_PACKAGE_LIBATOMIC_OPS
> +       help
> +         Short for "Metamodel On A Runtime", MoarVM is a virtual machine
> +         built especially for Rakudo Perl 6 and the NQP Compiler Toolchain.
> +
> +         http://moarvm.com
> +
> +comment "moarvm needs a toolchain w/ threads"
> +       depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
> +       depends on BR2_USE_MMU
> +       depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS
> +
> diff --git a/package/moarvm/moarvm.hash b/package/moarvm/moarvm.hash
> new file mode 100644
> index 0000000..d5cc911
> --- /dev/null
> +++ b/package/moarvm/moarvm.hash
> @@ -0,0 +1,2 @@
> +
> +sha256  828843eb3da020ee24ff83933b63aebf4aa774b815a3dfa3a758d6334779565e  MoarVM-2015.05.tar.gz
> diff --git a/package/moarvm/moarvm.mk b/package/moarvm/moarvm.mk
> new file mode 100644
> index 0000000..5889436
> --- /dev/null
> +++ b/package/moarvm/moarvm.mk
> @@ -0,0 +1,46 @@
> +################################################################################
> +#
> +# moarvm
> +#
> +################################################################################
> +
> +MOARVM_VERSION = 2015.05
> +MOARVM_SITE = http://moarvm.com/releases
> +MOARVM_SOURCE = MoarVM-$(MOARVM_VERSION).tar.gz
> +MOARVM_LICENSE = Artistic-2.0
> +MOARVM_LICENSE_FILES = Artistic2.txt
> +MOARVM_INSTALL_STAGING = YES
> +MOARVM_DEPENDENCIES = host-luajit libuv libatomic_ops

host-luajit seems overkill.

François

> +
> +MOARVM_CONF_OPTS = \
> +       --build=$(GNU_HOST_NAME) \
> +       --host=$(GNU_TARGET_NAME) \
> +       --ar="$(TARGET_AR)" \
> +       --cc="$(TARGET_CC)" \
> +       --ld="$(TARGET_CC)" \
> +       --prefix="/usr" \
> +       --lua=$(HOST_DIR)/usr/bin/luajit \
> +       --has-libuv \
> +       --has-libatomic
> +
> +ifeq ($(BR2_ENDIAN),"BIG")
> +MOARVM_CONF_OPTS += --big-endian
> +endif
> +
> +define MOARVM_CONFIGURE_CMDS
> +       (cd $(@D); perl Configure.pl $(MOARVM_CONF_OPTS))
> +endef
> +
> +define MOARVM_BUILD_CMDS
> +       $(MAKE) -C $(@D)
> +endef
> +
> +define MOARVM_INSTALL_STAGING_CMDS
> +       $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
> +endef
> +
> +define MOARVM_INSTALL_TARGET_CMDS
> +       $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
> +endef
> +
> +$(eval $(generic-package))
> --
> 2.1.4
>
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thomas Petazzoni June 6, 2015, 3:05 p.m. UTC | #2
Dear François Perrad,

On Sat, 6 Jun 2015 11:03:38 +0200, François Perrad wrote:

> > +MOARVM_DEPENDENCIES = host-luajit libuv libatomic_ops
> 
> host-luajit seems overkill.

Why? Lua is not part of the core dependencies of Buildroot, which are
mandatory to run Buildroot. So if it's not part of these core
dependencies, and used for the build process of moarvm, then it should
be added as a dependency of that package.

Otherwise the build will fail for users that don't have Luajit
installed on their machine, like is the case for several of the
autobuilders.

Best regards,

Thomas
Francois Perrad June 6, 2015, 4:17 p.m. UTC | #3
2015-06-06 17:05 GMT+02:00 Thomas Petazzoni
<thomas.petazzoni@free-electrons.com>:
> Dear François Perrad,
>
> On Sat, 6 Jun 2015 11:03:38 +0200, François Perrad wrote:
>
>> > +MOARVM_DEPENDENCIES = host-luajit libuv libatomic_ops
>>
>> host-luajit seems overkill.
>
> Why? Lua is not part of the core dependencies of Buildroot, which are
> mandatory to run Buildroot. So if it's not part of these core
> dependencies, and used for the build process of moarvm, then it should
> be added as a dependency of that package.
>
> Otherwise the build will fail for users that don't have Luajit
> installed on their machine, like is the case for several of the
> autobuilders.
>

Moarvm reuses [DynASM](http://luajit.org/dynasm.html), the JIT engine of LuaJIT.
DynASM needs a Lua interpreter.
This Lua interpreter could be an external interpreter or minilua which
is included in DynASM
(see https://github.com/MoarVM/dynasm/blob/master/minilua.c).
minilua is used in a bootstrap step and is never installed.

Moarvm could be built without --lua option, in this case, the minilua
in Moarvm is compiled and used.

Moarvm could be built with --lua=$(HOST_DIR)/usr/bin/luajit, in this
case, host-luajit is built first, which includes the minilua in
LuaJIT.

In both case, a minilua is built.
host-luajit just slows down the process.

François

> Best regards,
>
> Thomas
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index e0c2e2a..00c9ce3 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -499,6 +499,7 @@  menu "Lua libraries/modules"
 	source "package/xavante/Config.in"
 endmenu
 endif
+	source "package/moarvm/Config.in"
 	source "package/mono/Config.in"
 	source "package/nodejs/Config.in"
 	source "package/perl/Config.in"
diff --git a/package/moarvm/Config.in b/package/moarvm/Config.in
new file mode 100644
index 0000000..8657345
--- /dev/null
+++ b/package/moarvm/Config.in
@@ -0,0 +1,19 @@ 
+config BR2_PACKAGE_MOARVM
+	bool "moarvm"
+	depends on BR2_TOOLCHAIN_HAS_THREADS # libuv
+	depends on !BR2_STATIC_LIBS # libuv
+	depends on BR2_USE_MMU # libuv
+	depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS # libatomic_ops
+	select BR2_PACKAGE_LIBUV
+	select BR2_PACKAGE_LIBATOMIC_OPS
+	help
+	  Short for "Metamodel On A Runtime", MoarVM is a virtual machine
+	  built especially for Rakudo Perl 6 and the NQP Compiler Toolchain.
+
+	  http://moarvm.com
+
+comment "moarvm needs a toolchain w/ threads"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+	depends on BR2_USE_MMU
+	depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS
+
diff --git a/package/moarvm/moarvm.hash b/package/moarvm/moarvm.hash
new file mode 100644
index 0000000..d5cc911
--- /dev/null
+++ b/package/moarvm/moarvm.hash
@@ -0,0 +1,2 @@ 
+
+sha256  828843eb3da020ee24ff83933b63aebf4aa774b815a3dfa3a758d6334779565e  MoarVM-2015.05.tar.gz
diff --git a/package/moarvm/moarvm.mk b/package/moarvm/moarvm.mk
new file mode 100644
index 0000000..5889436
--- /dev/null
+++ b/package/moarvm/moarvm.mk
@@ -0,0 +1,46 @@ 
+################################################################################
+#
+# moarvm
+#
+################################################################################
+
+MOARVM_VERSION = 2015.05
+MOARVM_SITE = http://moarvm.com/releases
+MOARVM_SOURCE = MoarVM-$(MOARVM_VERSION).tar.gz
+MOARVM_LICENSE = Artistic-2.0
+MOARVM_LICENSE_FILES = Artistic2.txt
+MOARVM_INSTALL_STAGING = YES
+MOARVM_DEPENDENCIES = host-luajit libuv libatomic_ops
+
+MOARVM_CONF_OPTS = \
+	--build=$(GNU_HOST_NAME) \
+	--host=$(GNU_TARGET_NAME) \
+	--ar="$(TARGET_AR)" \
+	--cc="$(TARGET_CC)" \
+	--ld="$(TARGET_CC)" \
+	--prefix="/usr" \
+	--lua=$(HOST_DIR)/usr/bin/luajit \
+	--has-libuv \
+	--has-libatomic
+
+ifeq ($(BR2_ENDIAN),"BIG")
+MOARVM_CONF_OPTS += --big-endian
+endif
+
+define MOARVM_CONFIGURE_CMDS
+	(cd $(@D); perl Configure.pl $(MOARVM_CONF_OPTS))
+endef
+
+define MOARVM_BUILD_CMDS
+	$(MAKE) -C $(@D)
+endef
+
+define MOARVM_INSTALL_STAGING_CMDS
+	$(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
+endef
+
+define MOARVM_INSTALL_TARGET_CMDS
+	$(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
+endef
+
+$(eval $(generic-package))