[Buildroot] [PATCH 1/1] package/maven-bin: new package
Thomas Petazzoni
thomas.petazzoni at bootlin.com
Wed Jul 15 21:57:02 UTC 2020
Hello,
On Thu, 18 Jun 2020 12:43:27 -0700
aduskett at gmail.com wrote:
> Instead of using sed on the provided settings.xml, which would be very
> difficult to do, as the default settings file has the localRepository variable
> commented out, a settings.xml file in package/maven-bin has the
> localRepository variable pre-set to the MAVEN_REPO_DIR environment variable.
>
> Finally, maven-bin.mk provides the MAVEN environment variable helper,
> which provides all of the needed variables needed to invoke Maven in a single
> command, making it much easier to integrate packages that need to use Maven.
>
> An example of using Maven with a package would be as such:
>
> FOO_DEPENDENCIES = host-maven-bin
>
> define FOO_BUILD_CMDS
> cd $(@D) && $(MAVEN) compile
> endef
>
> define FOO_INSTALL_TARGET_CMDS
> $(INSTALL) -m 755 $(@D)/target/foo.jar $(TARGET_DIR)/usr/bin/foo.jar
> endef
>
> Signed-off-by: Adam Duskett <Aduskett at gmail.com>
Thanks for this contribution. Do you have a package that needs this and
that you intend to contribute to Buildroot ? It's always a bit annoying
to have host packages that are not used by anything.
Or is there at least some stupid package we could throw into a
br2-external in support/testing and have a runtime test case that
builds it with Maven ?
> diff --git a/package/maven-bin/Config.in b/package/maven-bin/Config.in
> new file mode 100644
> index 0000000000..95deedd371
> --- /dev/null
> +++ b/package/maven-bin/Config.in
> @@ -0,0 +1,13 @@
> +config BR2_PACKAGE_MAVEN_BIN
> + bool "maven-bin"
> + depends on BR2_PACKAGE_OPENJDK
> + help
> + Apache Maven is a software project management and
> + comprehension tool. Based on the concept of a project object
> + model (POM), Maven can manage a project's build, reporting and
> + documentation from a central piece of information.
> +
> + https://github.com/apache/maven
> +
> +comment "maven-bin needs openjdk"
> + depends on !BR2_PACKAGE_OPENJDK
Why do you have a Config.in option to enable a target package that
doesn't exist, since there's no maven-bin package, only host-maven-bin ?
> diff --git a/package/maven-bin/maven-bin.hash b/package/maven-bin/maven-bin.hash
> new file mode 100644
> index 0000000000..3673b33573
> --- /dev/null
> +++ b/package/maven-bin/maven-bin.hash
> @@ -0,0 +1,3 @@
> +# Locally computed
> +sha256 26ad91d751b3a9a53087aefa743f4e16a17741d3915b219cf74112bf87a438c5 apache-maven-3.6.3-bin.tar.gz
> +sha256 8b79d3d26bfbfd31fc50b22b149c2ecd2863345abb62d15048157a6f2e774411 LICENSE
> diff --git a/package/maven-bin/maven-bin.mk b/package/maven-bin/maven-bin.mk
> new file mode 100644
> index 0000000000..1bf40b7d55
> --- /dev/null
> +++ b/package/maven-bin/maven-bin.mk
> @@ -0,0 +1,36 @@
> +################################################################################
> +#
> +# host-maven-bin
Just maven-bin
> +#
> +################################################################################
> +
> +HOST_MAVEN_BIN_VERSION = 3.6.3
> +HOST_MAVEN_BIN_SOURCE = apache-maven-$(HOST_MAVEN_BIN_VERSION)-bin.tar.gz
> +HOST_MAVEN_BIN_SITE = https://www-us.apache.org/dist/maven/maven-3/$(HOST_MAVEN_BIN_VERSION)/binaries
> +HOST_MAVEN_BIN_LICENSE = Apache-2.0
> +HOST_MAVEN_BIN_LICENSE_FILES = LICENSE
Please use:
MAVEN_BIN_xyz
for all those variables. I know there's no target variant, but there's
no need to have a HOST_ prefix for those variables.
> +HOST_MAVEN_BIN_DEPENDENCIES = host-openjdk-bin
> +
> +# Maven is traditionally installed in it's own seperate directory in either
seperate -> separate
> +# usr/share/maven or /usr/lib/maven with the mvn binary symlinked to /usr/bin.
> +define HOST_MAVEN_BIN_INSTALL_CMDS
> + mkdir -p $(HOST_DIR)/usr/lib/maven
> + mkdir -p $(HOST_DIR)/bin
> + cp -dprf $(@D)/* $(HOST_DIR)/usr/lib/maven/
> + ln -sf $(HOST_DIR)/usr/lib/maven/bin/mvn $(HOST_DIR)/bin/mvn
> +
> +# The settings.xml file sets the localRepository directory to the
> +# MAVEN_REPO_DIR environment variable.
> + $(INSTALL) -D -m 755 $(HOST_MAVEN_BIN_PKGDIR)/settings.xml \
> + $(HOST_DIR)/usr/lib/maven/conf/settings.xml
> +endef
> +
> +$(eval $(host-generic-package))
> +
> +# variables used by other packages
> +MAVEN = \
> + JAVA_HOME="$(HOST_DIR)/usr/lib/jvm" \
> + M2_HOME="$(HOST_DIR)/usr/lib/maven" \
> + MAVEN_HOME="$(HOST_DIR)/usr/lib/maven" \
> + MAVEN_REPO_DIR="$(BR2_DL_DIR)/maven-repo" \
This is not really going to solve the problem that maven works around
the Buildroot download infrastructure, if it downloads things by
itself. What is the plan regarding this ?
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
More information about the buildroot
mailing list