[Buildroot] [PATCH 1/1] package/dotnet-sdk: new package

Subsystems: the rest

3 messages, 2 authors, 2021-01-13 · open the first message on its own page

[Buildroot] [PATCH 1/1] package/dotnet-sdk: new package

From: Raul Hidalgo Caballero <hidden>
Date: 2021-01-12 15:07:23

Signed-off-by: Raul Hidalgo Caballero <redacted>
---
 DEVELOPERS                                    |  5 ++++
 package/Config.in.host                        |  1 +
 package/dotnet-sdk/dotnet-sdk.hash            |  3 ++
 package/dotnet-sdk/dotnet-sdk.mk              | 20 +++++++++++++
 package/dotnet/Config.in.host                 | 15 ++++++++++
 .../testing/tests/package/test_dotnet_sdk.py  | 28 +++++++++++++++++++
 6 files changed, 72 insertions(+)
 create mode 100644 package/dotnet-sdk/dotnet-sdk.hash
 create mode 100644 package/dotnet-sdk/dotnet-sdk.mk
 create mode 100644 package/dotnet/Config.in.host
 create mode 100644 support/testing/tests/package/test_dotnet_sdk.py
diff --git a/DEVELOPERS b/DEVELOPERS
index 05b509c9c4..ea85f7c9c3 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2206,6 +2206,11 @@ F:       package/python-botocore/
 F:     package/python-jmespath/
 F:     package/python-s3transfer/

+N:     Raul Hidalgo Caballero <deinok@deinok.com>
+F:     package/dotnet/
+F:     package/dotnet-sdk/
+F:     support/testing/tests/package/test_dotnet_sdk.py
+
 N:     Refik Tuzakli <tuzakli.refik@gmail.com>
 F:     package/freescale-imx/
 F:     package/paho-mqtt-cpp/
diff --git a/package/Config.in.host b/package/Config.in.host
index ba6a68c728..16f0e9f690 100644
--- a/package/Config.in.host
+++ b/package/Config.in.host
@@ -16,6 +16,7 @@ menu "Host utilities"
        source "package/dfu-util/Config.in.host"
        source "package/dos2unix/Config.in.host"
        source "package/dosfstools/Config.in.host"
+       source "package/dotnet/Config.in.host"
        source "package/doxygen/Config.in.host"
        source "package/dtc/Config.in.host"
        source "package/e2fsprogs/Config.in.host"
diff --git a/package/dotnet-sdk/dotnet-sdk.hash
b/package/dotnet-sdk/dotnet-sdk.hash
new file mode 100644
index 0000000000..a3016b2e49
--- /dev/null
+++ b/package/dotnet-sdk/dotnet-sdk.hash
@@ -0,0 +1,3 @@
+sha256  cfc21f5e8bd655ae997eec916138b707b1d290b83272c02a95c9f821b8c87310
 LICENSE.txt
+sha256  01564961f8ca9744d0ecc5d3e72d7c1659df95898f3a077fd9140fd4023f3579
 ThirdPartyNotices.txt
+sha256  23df1eca7eb1302dfb10f4edce7edf7150e57698576f61b2dcb777c833cbd80c
 dotnet-sdk-5.0.101-linux-x64.tar.gz
diff --git a/package/dotnet-sdk/dotnet-sdk.mk b/package/dotnet-sdk/
dotnet-sdk.mk
new file mode 100644
index 0000000000..133b39b3f5
--- /dev/null
+++ b/package/dotnet-sdk/dotnet-sdk.mk
@@ -0,0 +1,20 @@
+################################################################################
+#
+# dotnet-sdk
+#
+################################################################################
+
+HOST_DOTNET_SDK_VERSION = 5.0.101
+HOST_DOTNET_SDK_SITE =
https://dotnetcli.azureedge.net/dotnet/Sdk/$(HOST_DOTNET_SDK_VERSION)
+HOST_DOTNET_SDK_SOURCE = dotnet-sdk-$(HOST_DOTNET_SDK_VERSION)-$(call
qstrip,$(BR2_PACKAGE_HOST_DOTNET_RID)).tar.gz
+HOST_DOTNET_SDK_LICENSE = MIT
+HOST_DOTNET_SDK_LICENSE_FILES = LICENSE.txt ThirdPartyNotices.txt
+
+define HOST_DOTNET_SDK_INSTALL_CMDS
+       mkdir -p $(HOST_DIR)/usr/share/dotnet/
+       cp -dpfr $(@D)/* $(HOST_DIR)/usr/share/dotnet/
+       mkdir -p $(HOST_DIR)/usr/bin/
+       ln -s ../share/dotnet/dotnet $(HOST_DIR)/usr/bin/dotnet
+endef
+
+$(eval $(host-generic-package))
diff --git a/package/dotnet/Config.in.host b/package/dotnet/Config.in.host
new file mode 100644
index 0000000000..90b477a6a1
--- /dev/null
+++ b/package/dotnet/Config.in.host
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_HOST_DOTNET_ARCH_SUPPORTS
+       bool
+       default y if BR2_HOSTARCH = "x86_64"
+
+config BR2_PACKAGE_HOST_DOTNET_RID
+       string
+       default "linux-x64" if BR2_HOSTARCH = "x86_64"
+
+config BR2_PACKAGE_HOST_DOTNET_SDK
+       bool "host dotnet-sdk"
+       depends on BR2_PACKAGE_HOST_DOTNET_ARCH_SUPPORTS
+       help
+               Dotnet SDK
+
+               https://dotnet.microsoft.com/
diff --git a/support/testing/tests/package/test_dotnet_sdk.py
b/support/testing/tests/package/test_dotnet_sdk.py
new file mode 100644
index 0000000000..288e873597
--- /dev/null
+++ b/support/testing/tests/package/test_dotnet_sdk.py
@@ -0,0 +1,28 @@
+import os
+import tempfile
+import subprocess
+import shutil
+
+import infra.basetest
+
+
+class TestDotnetSdkBase(infra.basetest.BRTest):
+
+    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
+        """
+        BR2_TARGET_ROOTFS_CPIO=y
+        """
+
+class TestHostDotnetSdk(TestDotnetSdkBase):
+    config = TestDotnetSdkBase.config + \
+        """
+        BR2_PACKAGE_HOST_DOTNET_SDK=y
+        """
+
+    def test_run(self):
+        env = os.environ.copy()
+        hostdir = os.path.join(self.builddir, 'host')
+        dotnet = os.path.join(hostdir, 'usr', 'bin', 'dotnet')
+        cmd = [dotnet, '--version']
+        exit_code = subprocess.call(cmd, stdout=self.b.logfile,
stderr=self.b.logfile, env=env)
+        self.assertEqual(exit_code, 0)
--
2.25.1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20210112/a7ee6e4d/attachment.html>

[Buildroot] [PATCH 1/1] package/dotnet-sdk: new package

From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Date: 2021-01-12 15:19:35

Hello Raul,

On Tue, 12 Jan 2021 16:07:23 +0100
Raul Hidalgo Caballero [off-list ref] wrote:
Signed-off-by: Raul Hidalgo Caballero <redacted>
---
 DEVELOPERS                                    |  5 ++++
 package/Config.in.host                        |  1 +
 package/dotnet-sdk/dotnet-sdk.hash            |  3 ++
 package/dotnet-sdk/dotnet-sdk.mk              | 20 +++++++++++++
 package/dotnet/Config.in.host                 | 15 ++++++++++
Why is this Config.in.host in package/dotnet/ and not
package/dotnet-sdk/ ?
quoted hunk
diff --git a/package/dotnet-sdk/dotnet-sdk.hash
b/package/dotnet-sdk/dotnet-sdk.hash
new file mode 100644
index 0000000000..a3016b2e49
--- /dev/null
+++ b/package/dotnet-sdk/dotnet-sdk.hash
@@ -0,0 +1,3 @@
+sha256  cfc21f5e8bd655ae997eec916138b707b1d290b83272c02a95c9f821b8c87310
 LICENSE.txt
+sha256  01564961f8ca9744d0ecc5d3e72d7c1659df95898f3a077fd9140fd4023f3579
 ThirdPartyNotices.txt
+sha256  23df1eca7eb1302dfb10f4edce7edf7150e57698576f61b2dcb777c833cbd80c
 dotnet-sdk-5.0.101-linux-x64.tar.gz
Note: your patch is line-wrapped. Could you use "git send-email" to
send it ?
quoted hunk
diff --git a/package/dotnet/Config.in.host b/package/dotnet/Config.in.host
new file mode 100644
index 0000000000..90b477a6a1
--- /dev/null
+++ b/package/dotnet/Config.in.host
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_HOST_DOTNET_ARCH_SUPPORTS
+       bool
+       default y if BR2_HOSTARCH = "x86_64"
+
+config BR2_PACKAGE_HOST_DOTNET_RID
+       string
+       default "linux-x64" if BR2_HOSTARCH = "x86_64"
+
+config BR2_PACKAGE_HOST_DOTNET_SDK
+       bool "host dotnet-sdk"
+       depends on BR2_PACKAGE_HOST_DOTNET_ARCH_SUPPORTS
+       help
+               Dotnet SDK
This is a bit short :-)
+
+               https://dotnet.microsoft.com/
The indentation for the help text is one tab + two spaces. You can run
"make check-package" to find this kind of coding style details.
+class TestDotnetSdkBase(infra.basetest.BRTest):
You don't need this "Base" class, since there's only one subclass using
it.
+
+    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
+        """
+        BR2_TARGET_ROOTFS_CPIO=y
+        """
+
+class TestHostDotnetSdk(TestDotnetSdkBase):
Just make this class inherit from infra.basetest.BRTest directly.
+    config = TestDotnetSdkBase.config + \
+        """
+        BR2_PACKAGE_HOST_DOTNET_SDK=y
+        """
use:

	config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
		"""
		BR2_PACKAGE_HOST_DOTNET_SDK=y
		BR2_TARGET_ROOTFS_CPIO=y
		"""
+    def test_run(self):
+        env = os.environ.copy()
Why do we have to do this ? You don't tweak any environment variable.
+        hostdir = os.path.join(self.builddir, 'host')
+        dotnet = os.path.join(hostdir, 'usr', 'bin', 'dotnet')
+        cmd = [dotnet, '--version']
+        exit_code = subprocess.call(cmd, stdout=self.b.logfile,
stderr=self.b.logfile, env=env)
+        self.assertEqual(exit_code, 0)
--
2.25.1
Otherwise, looks good. Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

[Buildroot] [PATCH 1/1] package/dotnet-sdk: new package

From: Raul Hidalgo Caballero <hidden>
Date: 2021-01-13 07:25:28

I Thomas,

Regarding the Config.in.host being in the dotnet package.
In the future, I expect to add: dotnet-runtime and dotnet-aspnet. They all
share most of the configuration, like the RID (Runtime Identifier,
something like the target triplet) and end exposing the "dotnet" command.
Basically, dotnet-runtime is a subset of dotnet-aspnet, and dotnet-aspnet
is a subset of dotnet-sdk.
I took as a reference the rust packages.

Regarding the tests, I expect to add more tests in the future while I add
support for having the dotnet-sdk as a target package.
Also I expect to add more tests for a bit more complex cases.
So I would like to left the Tests as they are, except for the environment
things that you are right. I'd just took the rust tests as a reference and
I left that env variable.


On Tue, Jan 12, 2021 at 4:19 PM Thomas Petazzoni <
thomas.petazzoni@bootlin.com> wrote:
Hello Raul,

On Tue, 12 Jan 2021 16:07:23 +0100
Raul Hidalgo Caballero [off-list ref] wrote:
quoted
Signed-off-by: Raul Hidalgo Caballero <redacted>
---
 DEVELOPERS                                    |  5 ++++
 package/Config.in.host                        |  1 +
 package/dotnet-sdk/dotnet-sdk.hash            |  3 ++
 package/dotnet-sdk/dotnet-sdk.mk              | 20 +++++++++++++
 package/dotnet/Config.in.host                 | 15 ++++++++++
Why is this Config.in.host in package/dotnet/ and not
package/dotnet-sdk/ ?
quoted
diff --git a/package/dotnet-sdk/dotnet-sdk.hash
b/package/dotnet-sdk/dotnet-sdk.hash
new file mode 100644
index 0000000000..a3016b2e49
--- /dev/null
+++ b/package/dotnet-sdk/dotnet-sdk.hash
@@ -0,0 +1,3 @@
+sha256  cfc21f5e8bd655ae997eec916138b707b1d290b83272c02a95c9f821b8c87310
 LICENSE.txt
+sha256  01564961f8ca9744d0ecc5d3e72d7c1659df95898f3a077fd9140fd4023f3579
 ThirdPartyNotices.txt
+sha256  23df1eca7eb1302dfb10f4edce7edf7150e57698576f61b2dcb777c833cbd80c
 dotnet-sdk-5.0.101-linux-x64.tar.gz
Note: your patch is line-wrapped. Could you use "git send-email" to
send it ?
quoted
diff --git a/package/dotnet/Config.in.host
b/package/dotnet/Config.in.host
quoted
new file mode 100644
index 0000000000..90b477a6a1
--- /dev/null
+++ b/package/dotnet/Config.in.host
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_HOST_DOTNET_ARCH_SUPPORTS
+       bool
+       default y if BR2_HOSTARCH = "x86_64"
+
+config BR2_PACKAGE_HOST_DOTNET_RID
+       string
+       default "linux-x64" if BR2_HOSTARCH = "x86_64"
+
+config BR2_PACKAGE_HOST_DOTNET_SDK
+       bool "host dotnet-sdk"
+       depends on BR2_PACKAGE_HOST_DOTNET_ARCH_SUPPORTS
+       help
+               Dotnet SDK
This is a bit short :-)
quoted
+
+               https://dotnet.microsoft.com/
The indentation for the help text is one tab + two spaces. You can run
"make check-package" to find this kind of coding style details.
quoted
+class TestDotnetSdkBase(infra.basetest.BRTest):
You don't need this "Base" class, since there's only one subclass using
it.
quoted
+
+    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
+        """
+        BR2_TARGET_ROOTFS_CPIO=y
+        """
+
+class TestHostDotnetSdk(TestDotnetSdkBase):
Just make this class inherit from infra.basetest.BRTest directly.
quoted
+    config = TestDotnetSdkBase.config + \
+        """
+        BR2_PACKAGE_HOST_DOTNET_SDK=y
+        """
use:

        config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
                """
                BR2_PACKAGE_HOST_DOTNET_SDK=y
                BR2_TARGET_ROOTFS_CPIO=y
                """
quoted
+    def test_run(self):
+        env = os.environ.copy()
Why do we have to do this ? You don't tweak any environment variable.
quoted
+        hostdir = os.path.join(self.builddir, 'host')
+        dotnet = os.path.join(hostdir, 'usr', 'bin', 'dotnet')
+        cmd = [dotnet, '--version']
+        exit_code = subprocess.call(cmd, stdout=self.b.logfile,
stderr=self.b.logfile, env=env)
+        self.assertEqual(exit_code, 0)
--
2.25.1
Otherwise, looks good. Thanks!

Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20210113/7d0e13b1/attachment.html>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help