From bc5af33fcfbfbabdb3c499cb363bed7062cc5448 Mon Sep 17 00:00:00 2001 From: Brice FROMENTIN Date: Thu, 28 Nov 2024 09:13:07 +0100 Subject: [PATCH] First dotnet 9 release. --- cross/dotnet-9-runtime/Makefile | 46 ++++++++++++++++++++++++++++ cross/dotnet-9-runtime/PLIST.auto | 0 cross/dotnet-9-runtime/digests | 9 ++++++ spk/dotnet-9-runtime/Makefile | 40 ++++++++++++++++++++++++ spk/dotnet-9-runtime/src/dotnet.png | Bin 0 -> 13619 bytes 5 files changed, 95 insertions(+) create mode 100644 cross/dotnet-9-runtime/Makefile create mode 100644 cross/dotnet-9-runtime/PLIST.auto create mode 100644 cross/dotnet-9-runtime/digests create mode 100644 spk/dotnet-9-runtime/Makefile create mode 100644 spk/dotnet-9-runtime/src/dotnet.png diff --git a/cross/dotnet-9-runtime/Makefile b/cross/dotnet-9-runtime/Makefile new file mode 100644 index 00000000000..e26b27d6946 --- /dev/null +++ b/cross/dotnet-9-runtime/Makefile @@ -0,0 +1,46 @@ +PKG_NAME = aspnetcore-runtime +PKG_VERS = 9.0.0 +PKG_EXT = tar.gz +PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS)-$(PKG_DIST_ARCH).$(PKG_EXT) +PKG_DIST_SITE = https://download.visualstudio.microsoft.com/download/pr/$(PKG_DIST_FOLDER) +PKG_DIR = $(PKG_NAME)-$(PKG_VERS) +EXTRACT_PATH = $(WORK_DIR)/$(PKG_DIR) + +include ../../mk/spksrc.archs.mk + +# use digests with multiple files and individual dist names +# both lists must have the same order +PKG_DIST_ARCH_LIST = linux-x64 linux-arm linux-arm64 +PKG_DIST_SITE_LIST = https://download.visualstudio.microsoft.com/download/pr/e4791376-b70d-431f-bd98-5397c876b946/64ffc29a4edc8fd70b151c2963b38b09/$(PKG_NAME)-$(PKG_VERS)-linux-x64.$(PKG_EXT) +PKG_DIST_SITE_LIST += https://download.visualstudio.microsoft.com/download/pr/84aa8e86-c6a1-4562-84f3-828e836ef26c/96772a224b9ff3be8904b63f37d7cf63/$(PKG_NAME)-$(PKG_VERS)-linux-arm.$(PKG_EXT) +PKG_DIST_SITE_LIST += https://download.visualstudio.microsoft.com/download/pr/b2029a3e-c67e-4905-ad1f-08b164322520/bd68ea0b77f12df21b935da338fdaf25/$(PKG_NAME)-$(PKG_VERS)-linux-arm64.$(PKG_EXT) + +ifeq ($(findstring $(ARCH), $(x64_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = $(word 1,$(PKG_DIST_ARCH_LIST)) +PKG_DIST_FOLDER = $(shell echo $(word 1,$(PKG_DIST_SITE_LIST)) | grep -o1P ".*/download/pr/\K([^/]*/[^/]*)") +endif +ifeq ($(findstring $(ARCH), $(ARMv7_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = $(word 2,$(PKG_DIST_ARCH_LIST)) +PKG_DIST_FOLDER = $(shell echo $(word 2,$(PKG_DIST_SITE_LIST)) | grep -o1P ".*/download/pr/\K([^/]*/[^/]*)") +endif +ifeq ($(findstring $(ARCH), $(ARMv8_ARCHS)),$(ARCH)) +PKG_DIST_ARCH = $(word 3,$(PKG_DIST_ARCH_LIST)) +PKG_DIST_FOLDER = $(shell echo $(word 3,$(PKG_DIST_SITE_LIST)) | grep -o1P ".*/download/pr/\K([^/]*/[^/]*)") +endif + +ifeq ($(PKG_DIST_ARCH),) +$(error Unsupported ARCH $(ARCH)) +endif + +HOMEPAGE = https://dotnet.microsoft.com/ +COMMENT = Free. Cross-platform. Open source. A developer platform for building all apps. +LICENSE = MIT + +INSTALL_TARGET = dotnet_runtime_custom_install + +include ../../mk/spksrc.install-resources.mk + +.PHONY: dotnet_runtime_custom_install +dotnet_runtime_custom_install: + mkdir -p "$(INSTALL_DIR)/$(INSTALL_PREFIX)/share/dotnet/" + tar -cf - -C $(EXTRACT_PATH) . | tar -xf - -C "$(INSTALL_DIR)/$(INSTALL_PREFIX)/share/dotnet/" diff --git a/cross/dotnet-9-runtime/PLIST.auto b/cross/dotnet-9-runtime/PLIST.auto new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cross/dotnet-9-runtime/digests b/cross/dotnet-9-runtime/digests new file mode 100644 index 00000000000..c7c30e455db --- /dev/null +++ b/cross/dotnet-9-runtime/digests @@ -0,0 +1,9 @@ +aspnetcore-runtime-9.0.0-linux-x64.tar.gz MD5 2c998f639d0accaa5bc95897dcfe3457 +aspnetcore-runtime-9.0.0-linux-x64.tar.gz SHA1 38f09aca9ef8f85812bd01b8bd2fab87fc33aec8 +aspnetcore-runtime-9.0.0-linux-x64.tar.gz SHA256 e00636ad9ca0fbcd777188036b52e520279dc4ac38fde3d14898869d16557ae0 +aspnetcore-runtime-9.0.0-linux-arm.tar.gz MD5 d6464c1cc89a6ebb9b945096b44eeac5 +aspnetcore-runtime-9.0.0-linux-arm.tar.gz SHA1 bbfd89cc61608323789d130f98d49fb7f426cc3d +aspnetcore-runtime-9.0.0-linux-arm.tar.gz SHA256 f3bf3dfe0f21afae8a130c07e67028abd1b80ac5523624729dac39ad0f2d8d9f +aspnetcore-runtime-9.0.0-linux-arm64.tar.gz MD5 3c5728f2b36debee4824a87a9d4af09f +aspnetcore-runtime-9.0.0-linux-arm64.tar.gz SHA1 d2fd672e4f89345e7636c39b8c4677d919082dde +aspnetcore-runtime-9.0.0-linux-arm64.tar.gz SHA256 9811d42c2dc6ffd9b6b69d4f2f6387f0d4add812eddf28ea178b5f751741bf7c diff --git a/spk/dotnet-9-runtime/Makefile b/spk/dotnet-9-runtime/Makefile new file mode 100644 index 00000000000..c8f815533d1 --- /dev/null +++ b/spk/dotnet-9-runtime/Makefile @@ -0,0 +1,40 @@ +SPK_NAME = dotnet-9-runtime +SPK_VERS = 9.0.0 +SPK_REV = 1 +SPK_ICON = src/dotnet.png + +OPTIONAL_DEPENDS = cross/libstdc++ +DEPENDS = cross/libicu cross/dotnet-9-runtime + +REQUIRED_MIN_DSM = 7.0 + +# Arch exclusions for dotnet +DOTNET_CORE_ARCHS = 1 + +MAINTAINER = brice.fromentin +DESCRIPTION = Free. Cross-platform. Open source. A developer platform for building all apps. This package installs the dotnet runtime and the asp.net.core runtime. +CHANGELOG = "dotnet-runtime v9.0.0 release." + +STARTABLE = no +DISPLAY_NAME = .NET 9 runtime + +HOMEPAGE = https://dotnet.microsoft.com/ +LICENSE = MIT + +include ../../mk/spksrc.common.mk +ifeq ($(call version_lt, ${TCVERSION}, 7.0),1) +# we do not only need the updated libstdc++ library, we also need to +# adjust the library search path for dotnet to use this version. +DEPENDS += cross/libstdc++ +POST_STRIP_TARGET = dotnet_patch_target +endif + +SPK_COMMANDS = share/dotnet/dotnet + +include ../../mk/spksrc.spk.mk + +.PHONY: dotnet_patch_target +# Set library path to use bundled libstdc++ +dotnet_patch_target: + @$(MSG) "Set library runpath in dotnet executable." + @patchelf --set-rpath /var/packages/$(SPK_NAME)/target/lib $(STAGING_DIR)/share/dotnet/dotnet diff --git a/spk/dotnet-9-runtime/src/dotnet.png b/spk/dotnet-9-runtime/src/dotnet.png new file mode 100644 index 0000000000000000000000000000000000000000..99235b53c6b50993e491ee7a51ae00d56a4beef9 GIT binary patch literal 13619 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 h<^QF9-~9k(&P6&>hf^Y<|B@e