* [Buildroot] [PATCH] Add Mono native/managed package.
@ 2014-05-15 20:09 Angelo Compagnucci
2014-05-15 20:45 ` Yann E. MORIN
0 siblings, 1 reply; 4+ messages in thread
From: Angelo Compagnucci @ 2014-05-15 20:09 UTC (permalink / raw)
To: buildroot
This package builds both the native and managed part
with all standard libraries and provides a complete
mono environment.
Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
---
package/Config.in | 1 +
package/mono/Config.in | 7 +++++++
package/mono/mono-managed/mono-managed.mk | 26 ++++++++++++++++++++++++++
package/mono/mono-native/mono-native.mk | 19 +++++++++++++++++++
package/mono/mono.mk | 17 +++++++++++++++++
5 files changed, 70 insertions(+)
create mode 100644 package/mono/Config.in
create mode 100644 package/mono/mono-managed/mono-managed.mk
create mode 100644 package/mono/mono-native/mono-native.mk
create mode 100644 package/mono/mono.mk
diff --git a/package/Config.in b/package/Config.in
index 3bc8d24..52dc8f5 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -478,6 +478,7 @@ endmenu
endif
source "package/ruby/Config.in"
source "package/tcl/Config.in"
+source "package/mono/Config.in"
if BR2_PACKAGE_TCL
menu "tcl libraries/modules"
source "package/expect/Config.in"
diff --git a/package/mono/Config.in b/package/mono/Config.in
new file mode 100644
index 0000000..1fd45d9
--- /dev/null
+++ b/package/mono/Config.in
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_MONO
+ bool "mono"
+ select BR2_STRIP_none
+ help
+ An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET.
+
+ http://download.mono-project.com/sources/mono/
diff --git a/package/mono/mono-managed/mono-managed.mk b/package/mono/mono-managed/mono-managed.mk
new file mode 100644
index 0000000..94be274
--- /dev/null
+++ b/package/mono/mono-managed/mono-managed.mk
@@ -0,0 +1,26 @@
+#############################################################
+#
+# mono-managed
+#
+#############################################################
+
+MONO_MANAGED_VERSION = $(MONO_VERSION)
+MONO_MANAGED_SITE = $(MONO_SITE)
+MONO_MANAGED_SOURCE = $(MONO_SOURCE)
+
+HOST_MONO_MANAGED_CONF_OPT = \
+ $(MONO_CONF_OPT) \
+ --enable-static
+
+define MONO_MANAGED_GETMONOLITE
+ $(MAKE) -C $(@D) get-monolite-latest
+endef
+
+define MONO_MANAGED_INSTALL
+ cp -av $(HOST_DIR)/usr/lib/mono $(TARGET_DIR)/usr/lib/
+endef
+
+HOST_MONO_MANAGED_POST_CONFIGURE_HOOKS += MONO_MANAGED_GETMONOLITE
+HOST_MONO_MANAGED_POST_INSTALL_HOOKS += MONO_MANAGED_INSTALL
+
+$(eval $(host-autotools-package))
diff --git a/package/mono/mono-native/mono-native.mk b/package/mono/mono-native/mono-native.mk
new file mode 100644
index 0000000..3d6b3bf
--- /dev/null
+++ b/package/mono/mono-native/mono-native.mk
@@ -0,0 +1,19 @@
+#############################################################
+#
+# mono-native
+#
+#############################################################
+
+MONO_NATIVE_VERSION = $(MONO_VERSION)
+MONO_NATIVE_SITE = $(MONO_SITE)
+MONO_NATIVE_SOURCE = $(MONO_SOURCE)
+MONO_NATIVE_INSTALL_STAGING = $(MONO_INSTALL_STAGING)
+
+MONO_NATIVE_DEPENDENCIES += host-mono-managed
+
+# Disable managed code (mcs folder) from building
+MONO_NATIVE_CONF_OPT = \
+ $(MONO_CONF_OPT) \
+ --disable-mcs-build
+
+$(eval $(autotools-package))
diff --git a/package/mono/mono.mk b/package/mono/mono.mk
new file mode 100644
index 0000000..7706190
--- /dev/null
+++ b/package/mono/mono.mk
@@ -0,0 +1,17 @@
+#############################################################
+#
+# mono
+#
+#############################################################
+
+MONO_VERSION = 3.2.8
+MONO_SITE = http://download.mono-project.com/sources/mono/
+MONO_SOURCE = mono-$(MONO_VERSION).tar.bz2
+MONO_INSTALL_STAGING = YES
+
+MONO_CONF_OPT = --disable-gtk-doc --with-mcs-docs=no
+
+ifeq ($(BR2_PACKAGE_MONO),y)
+ include package/mono/*/*.mk
+ TARGETS += mono-native mono-managed
+endif
--
1.9.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH] Add Mono native/managed package.
2014-05-15 20:09 [Buildroot] [PATCH] Add Mono native/managed package Angelo Compagnucci
@ 2014-05-15 20:45 ` Yann E. MORIN
2014-05-15 21:33 ` Angelo Compagnucci
0 siblings, 1 reply; 4+ messages in thread
From: Yann E. MORIN @ 2014-05-15 20:45 UTC (permalink / raw)
To: buildroot
Angelo, All,
On 2014-05-15 22:09 +0200, Angelo Compagnucci spake thusly:
> This package builds both the native and managed part
> with all standard libraries and provides a complete
> mono environment.
Thank you for this patch! :-)
I have a few comments, see below.
> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
> ---
> package/Config.in | 1 +
> package/mono/Config.in | 7 +++++++
> package/mono/mono-managed/mono-managed.mk | 26 ++++++++++++++++++++++++++
> package/mono/mono-native/mono-native.mk | 19 +++++++++++++++++++
> package/mono/mono.mk | 17 +++++++++++++++++
> 5 files changed, 70 insertions(+)
> create mode 100644 package/mono/Config.in
> create mode 100644 package/mono/mono-managed/mono-managed.mk
> create mode 100644 package/mono/mono-native/mono-native.mk
> create mode 100644 package/mono/mono.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index 3bc8d24..52dc8f5 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -478,6 +478,7 @@ endmenu
> endif
> source "package/ruby/Config.in"
> source "package/tcl/Config.in"
> +source "package/mono/Config.in"
Please keep alphabetical ordering: mono comes between lua and nodejs.
> if BR2_PACKAGE_TCL
> menu "tcl libraries/modules"
> source "package/expect/Config.in"
> diff --git a/package/mono/Config.in b/package/mono/Config.in
> new file mode 100644
> index 0000000..1fd45d9
> --- /dev/null
> +++ b/package/mono/Config.in
> @@ -0,0 +1,7 @@
> +config BR2_PACKAGE_MONO
> + bool "mono"
> + select BR2_STRIP_none
> + help
> + An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET.
> +
> + http://download.mono-project.com/sources/mono/
For the help text, theindentation is one tab plus two spaces, not two
tabs.
> diff --git a/package/mono/mono-managed/mono-managed.mk b/package/mono/mono-managed/mono-managed.mk
> new file mode 100644
> index 0000000..94be274
> --- /dev/null
> +++ b/package/mono/mono-managed/mono-managed.mk
> @@ -0,0 +1,26 @@
> +#############################################################
> +#
> +# mono-managed
> +#
> +#############################################################
> +
> +MONO_MANAGED_VERSION = $(MONO_VERSION)
> +MONO_MANAGED_SITE = $(MONO_SITE)
> +MONO_MANAGED_SOURCE = $(MONO_SOURCE)
Do not line-up assignments, just do:
MONO_MANAGED_VERSION = $(MONO_VERSION)
MONO_MANAGED_SITE = $(MONO_SITE)
MONO_MANAGED_SOURCE = $(MONO_SOURCE)
> +HOST_MONO_MANAGED_CONF_OPT = \
> + $(MONO_CONF_OPT) \
> + --enable-static
For so few options, put them on a single line:
HOST_MONO_MANAGED_CONF_OPT = $(MONO_CONF_OPT) --enable-static
Why do you need --enable-static ? Generally, for the host tools, we do
not care that they be shared, and we do usually build them shared.
> +define MONO_MANAGED_GETMONOLITE
> + $(MAKE) -C $(@D) get-monolite-latest
> +endef
Does it mean that some downloading is done _after_ the configure step?
Can't we do that during the download step, eg:
define MONO_MANAGED_GET_MONOLITE
$(call DOWNLOAD,url-of-monolite-archive)
endef
MONO_MANAGED_POST_DOWNLOAD_HOOKS += MONO_MANAGED_GET_MONOLITE
Or something like that?
In Buildroot, we expect that running "make source" will download
everything, and no access to the network is needed after that.
> +define MONO_MANAGED_INSTALL
> + cp -av $(HOST_DIR)/usr/lib/mono $(TARGET_DIR)/usr/lib/
> +endef
> +
> +HOST_MONO_MANAGED_POST_CONFIGURE_HOOKS += MONO_MANAGED_GETMONOLITE
> +HOST_MONO_MANAGED_POST_INSTALL_HOOKS += MONO_MANAGED_INSTALL
Keep the hooks assignments just below the definitions.
> +$(eval $(host-autotools-package))
> diff --git a/package/mono/mono-native/mono-native.mk b/package/mono/mono-native/mono-native.mk
> new file mode 100644
> index 0000000..3d6b3bf
> --- /dev/null
> +++ b/package/mono/mono-native/mono-native.mk
> @@ -0,0 +1,19 @@
> +#############################################################
> +#
> +# mono-native
> +#
> +#############################################################
> +
> +MONO_NATIVE_VERSION = $(MONO_VERSION)
> +MONO_NATIVE_SITE = $(MONO_SITE)
> +MONO_NATIVE_SOURCE = $(MONO_SOURCE)
> +MONO_NATIVE_INSTALL_STAGING = $(MONO_INSTALL_STAGING)
Ditto: do not allign assignments.
> +MONO_NATIVE_DEPENDENCIES += host-mono-managed
> +
> +# Disable managed code (mcs folder) from building
> +MONO_NATIVE_CONF_OPT = \
> + $(MONO_CONF_OPT) \
> + --disable-mcs-build
Ditto: on a single line.
> +$(eval $(autotools-package))
> diff --git a/package/mono/mono.mk b/package/mono/mono.mk
> new file mode 100644
> index 0000000..7706190
> --- /dev/null
> +++ b/package/mono/mono.mk
> @@ -0,0 +1,17 @@
> +#############################################################
> +#
> +# mono
> +#
> +#############################################################
> +
> +MONO_VERSION = 3.2.8
> +MONO_SITE = http://download.mono-project.com/sources/mono/
> +MONO_SOURCE = mono-$(MONO_VERSION).tar.bz2
> +MONO_INSTALL_STAGING = YES
Ditto alignment.
> +MONO_CONF_OPT = --disable-gtk-doc --with-mcs-docs=no
> +
> +ifeq ($(BR2_PACKAGE_MONO),y)
> + include package/mono/*/*.mk
> + TARGETS += mono-native mono-managed
> +endif
That last assigment to TARGETS in the if-block is absolutely unneeded:
the $(eval $(autotools-package)) lines will do it automatically. You
should just remove the TARGETS assign,ment and the if-block, to keep
only:
include package/mono/*/*.mk
Thanks!
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH] Add Mono native/managed package.
2014-05-15 20:45 ` Yann E. MORIN
@ 2014-05-15 21:33 ` Angelo Compagnucci
2014-05-15 21:39 ` Yann E. MORIN
0 siblings, 1 reply; 4+ messages in thread
From: Angelo Compagnucci @ 2014-05-15 21:33 UTC (permalink / raw)
To: buildroot
Hi Yann, All
2014-05-15 22:45 GMT+02:00 Yann E. MORIN <yann.morin.1998@free.fr>:
> For so few options, put them on a single line:
> HOST_MONO_MANAGED_CONF_OPT = $(MONO_CONF_OPT) --enable-static
> Why do you need --enable-static ? Generally, for the host tools, we do
> not care that they be shared, and we do usually build them shared.
During configure Mono complains:
"configure: WARNING: Turning off static Mono is a risk"
And compilation fails somewhere.
>> +define MONO_MANAGED_GETMONOLITE
>> + $(MAKE) -C $(@D) get-monolite-latest
>> +endef
>
> Does it mean that some downloading is done _after_ the configure step?
> Can't we do that during the download step, eg:
>
> define MONO_MANAGED_GET_MONOLITE
> $(call DOWNLOAD,url-of-monolite-archive)
> endef
> MONO_MANAGED_POST_DOWNLOAD_HOOKS += MONO_MANAGED_GET_MONOLITE
>
> Or something like that?
Mono needs a previously installed Mono or the monolite binaries to
compile. I don't want to count on users having the right mono version
previously installed on their machines, so the best way is to use
monolite. The right way to obtain the latest correct monolite version
is to use "make get-monolite-latest" before the final make.
I can extract the url where the file is located from the makefile, but
I have also to handle various unpacking steps needed to place the
monolites binaries in the correct places.
I don't think this is right, because It can break easily on newer Mono
versions and it needs some maintenance. Please let me know if it must
be done!
Ok for the other points! I will send you a new patch as soon as possible!
--
Profile: http://it.linkedin.com/in/compagnucciangelo
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH] Add Mono native/managed package.
2014-05-15 21:33 ` Angelo Compagnucci
@ 2014-05-15 21:39 ` Yann E. MORIN
0 siblings, 0 replies; 4+ messages in thread
From: Yann E. MORIN @ 2014-05-15 21:39 UTC (permalink / raw)
To: buildroot
Angelo, All,
On 2014-05-15 23:33 +0200, Angelo Compagnucci spake thusly:
> 2014-05-15 22:45 GMT+02:00 Yann E. MORIN <yann.morin.1998@free.fr>:
> > For so few options, put them on a single line:
>
> > HOST_MONO_MANAGED_CONF_OPT = $(MONO_CONF_OPT) --enable-static
>
> > Why do you need --enable-static ? Generally, for the host tools, we do
> > not care that they be shared, and we do usually build them shared.
>
> During configure Mono complains:
>
> "configure: WARNING: Turning off static Mono is a risk"
>
> And compilation fails somewhere.
OK, state so in a comment on a line above, like:
# Enable static, otherwise Mono complains and the build fails
> >> +define MONO_MANAGED_GETMONOLITE
> >> + $(MAKE) -C $(@D) get-monolite-latest
> >> +endef
> >
> > Does it mean that some downloading is done _after_ the configure step?
> > Can't we do that during the download step, eg:
> >
> > define MONO_MANAGED_GET_MONOLITE
> > $(call DOWNLOAD,url-of-monolite-archive)
> > endef
> > MONO_MANAGED_POST_DOWNLOAD_HOOKS += MONO_MANAGED_GET_MONOLITE
> >
> > Or something like that?
>
> Mono needs a previously installed Mono or the monolite binaries to
> compile. I don't want to count on users having the right mono version
> previously installed on their machines, so the best way is to use
> monolite. The right way to obtain the latest correct monolite version
> is to use "make get-monolite-latest" before the final make.
> I can extract the url where the file is located from the makefile, but
> I have also to handle various unpacking steps needed to place the
> monolites binaries in the correct places.
> I don't think this is right, because It can break easily on newer Mono
> versions and it needs some maintenance. Please let me know if it must
> be done!
If it is indeed more complex that "wget + tar xf", then we can live with
that.
However, I'd like some others to comment: Peter, Thomas?
> Ok for the other points! I will send you a new patch as soon as possible!
Thanks! Please wait a bit for some more feedback before you repost.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-05-15 21:39 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-15 20:09 [Buildroot] [PATCH] Add Mono native/managed package Angelo Compagnucci
2014-05-15 20:45 ` Yann E. MORIN
2014-05-15 21:33 ` Angelo Compagnucci
2014-05-15 21:39 ` Yann E. MORIN
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox