public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
@ 2023-07-16 12:38 Maciej Barć
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
                   ` (7 more replies)
  0 siblings, 8 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 12:38 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

Bug: https://bugs.gentoo.org/900597
Bug: https://github.com/gentoo/gentoo/pull/29309
Signed-off-by: Maciej Barć <xgqt@gentoo.org>
---
 eclass/nuget.eclass | 192 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 192 insertions(+)
 create mode 100644 eclass/nuget.eclass

diff --git a/eclass/nuget.eclass b/eclass/nuget.eclass
new file mode 100644
index 0000000000..cbc9bae4a1
--- /dev/null
+++ b/eclass/nuget.eclass
@@ -0,0 +1,192 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: nuget.eclass
+# @MAINTAINER:
+# Gentoo Dotnet project <dotnet@gentoo.org>
+# @AUTHOR:
+# Anna Figueiredo Gomes <navi@vlhl.dev>
+# Maciej Barć <xgqt@gentoo.org>
+# @SUPPORTED_EAPIS: 7 8
+# @BLURB: common functions and variables for handling .NET NuGets
+# @DESCRIPTION:
+# This eclass is designed to provide support for .NET NuGet's ".nupkg" files.
+#
+# This eclass does not export any phase functions, for that see
+# the "dotnet-pkg" eclass.
+
+case "${EAPI}" in
+	7 | 8 )
+		:
+		;;
+	* )
+		die "${ECLASS}: EAPI ${EAPI} unsupported."
+		;;
+esac
+
+if [[ -z ${_NUGET_ECLASS} ]] ; then
+_NUGET_ECLASS=1
+
+# @ECLASS_VARIABLE: SYSTEM_NUGETS
+# @DESCRIPTION:
+# Location of the system NuGet packages directory.
+SYSTEM_NUGETS=/opt/dotnet-nugets
+
+# @ECLASS_VARIABLE: NUGET_APIS
+# @DESCRIPTION:
+# NuGet API URLs to use for precompiled NuGet package ".nupkg" downloads.
+# Set or append to this variable post-inherit, but before calling
+# the "nuget_uris" function, preferably just before "SRC_URI".
+#
+# Example:
+# @CODE
+# SRC_URI="https://example.com/example.tar.xz"
+# NUGET_APIS+=( "https://api.nuget.org/v3-flatcontainer" )
+# SRC_URI+=" $(nuget_uris) "
+# @CODE
+NUGET_APIS=( "https://api.nuget.org/v3-flatcontainer" )
+
+# @ECLASS_VARIABLE: NUGET_PACKAGES
+# @DEFAULT_UNSET
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Path from where NuGets will be restored from.
+# Defaults to ${T}/nugets for use with "nuget_uris" but may be set to a custom
+# location to, for example, restore NuGets extracted form a prepared archive.
+# Do not set this variable in conjunction with non-empty "NUGETS".
+if [[ "${NUGETS}" ]] || [[ ! "${NUGET_PACKAGES}" ]] ; then
+	NUGET_PACKAGES="${T}"/nugets
+fi
+export NUGET_PACKAGES
+
+# @ECLASS_VARIABLE: NUGETS
+# @DEFAULT_UNSET
+# @PRE_INHERIT
+# @DESCRIPTION:
+# String containing all NuGet packages that need to be downloaded.
+# Used by "nuget_uris".
+#
+# Example:
+# @CODE
+# NUGETS="
+#	ImGui.NET-1.87.2
+#	Config.Net-4.19.0
+# "
+#
+# inherit dotnet-pkg
+#
+# ...
+#
+# SRC_URI+=" $(nuget_uris) "
+# @CODE
+
+# @FUNCTION: nuget_uris
+# @USAGE: <nuget...>
+# @DESCRIPTION:
+# Generates the URIs to put in SRC_URI to help fetch dependencies.
+# If no arguments provided, uses the "NUGETS" variable.
+nuget_uris() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local -r regex='^([a-zA-Z0-9_.-]+)-([0-9]+\.[0-9]+\.[0-9]+.*)$'
+	local nugets
+
+	if (( ${#} != 0 )) ; then
+		nugets="${@}"
+	elif [[ ${NUGETS} ]] ; then
+		nugets="${NUGETS}"
+	else
+		eerror "NUGETS variable is not defined and nothing passed as argument"
+		die "${FUNCNAME}: Can't generate SRC_URI from empty input"
+	fi
+
+	local nuget name version nuget_api url
+	for nuget in ${nugets} ; do
+		[[ ${nuget} =~ ${regex} ]] ||
+			die "${FUNCNAME}: Could not parse given nuget: ${nuget}"
+
+		name="${BASH_REMATCH[1]}"
+		version="${BASH_REMATCH[2]}"
+
+		for nuget_api in "${NUGET_APIS[@]}" ; do
+			case "${nuget_api}" in
+				*/v2 | */v2/ )
+					url="${nuget_api}/package/${name}/${version}
+							-> ${name}.${version}.nupkg"
+					;;
+				* )
+					url="${nuget_api}/${name}/${version}/${name}.${version}.nupkg"
+					;;
+			esac
+			echo "${url}"
+		done
+	done
+}
+
+# @FUNCTION: nuget_link
+# @USAGE: <nuget-path>
+# @DESCRIPTION:
+# Link a specified NuGet package at "nuget-path" to the "NUGET_PACKAGES"
+# directory.
+#
+# Example:
+# @CODE
+# nuget_link "${DISTDIR}"/pkg.0.nupkg
+# @CODE
+#
+# This function is used inside "dotnet-pkg_src_unpack"
+# from the "dotnet-pkg" eclass.
+nuget_link() {
+	[[ ! "${1}" ]] && die "${FUNCNAME}: no nuget path given"
+
+	mkdir -p "${NUGET_PACKAGES}" || die
+
+	local nuget_name="$(basename "${1}")"
+
+	if [[ -f "${NUGET_PACKAGES}"/${nuget_name} ]] ; then
+		ewarn "${FUNCNAME}: ${nuget_name} already exists"
+	else
+		ln -s "${1}" "${NUGET_PACKAGES}"/${nuget_name} || die
+	fi
+}
+
+# @FUNCTION: nuget_link-system-nugets
+# @DESCRIPTION:
+# Link all system NuGet packages to the "NUGET_PACKAGES" directory.
+#
+# Example:
+# @CODE
+# src_unpack() {
+#     nuget_link-system-nugets
+#     default
+# }
+# @CODE
+#
+# This function is used inside "dotnet-pkg_src_unpack"
+# from the "dotnet-pkg" eclass.
+nuget_link-system-nugets() {
+	local runtime_nuget
+	for runtime_nuget in "${EPREFIX}${SYSTEM_NUGETS}"/*.nupkg ; do
+		if [[ -f "${runtime_nuget}" ]] ; then
+			nuget_link "${runtime_nuget}"
+		fi
+	done
+}
+
+# @FUNCTION: nuget_donuget
+# @USAGE: <nuget-path> ...
+# @DESCRIPTION:
+# Install NuGet package(s) at "nuget-path" to the system nugets directory.
+#
+# Example:
+# @CODE
+# src_install() {
+#     nuget_donuget my-pkg.nupkg
+# }
+# @CODE
+nuget_donuget() {
+	insinto "${SYSTEM_NUGETS}"
+	doins "${@}"
+}
+
+fi
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: introduce new eclass
  2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
@ 2023-07-16 12:38 ` Maciej Barć
  2023-07-16 12:48   ` Sam James
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: " Maciej Barć
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 12:38 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

Bug: https://bugs.gentoo.org/900597
Bug: https://github.com/gentoo/gentoo/pull/29309
Signed-off-by: Maciej Barć <xgqt@gentoo.org>
---
 eclass/dotnet-pkg-utils.eclass | 598 +++++++++++++++++++++++++++++++++
 1 file changed, 598 insertions(+)
 create mode 100644 eclass/dotnet-pkg-utils.eclass

diff --git a/eclass/dotnet-pkg-utils.eclass b/eclass/dotnet-pkg-utils.eclass
new file mode 100644
index 0000000000..aeabebc92d
--- /dev/null
+++ b/eclass/dotnet-pkg-utils.eclass
@@ -0,0 +1,598 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: dotnet-pkg-utils.eclass
+# @MAINTAINER:
+# Gentoo Dotnet project <dotnet@gentoo.org>
+# @AUTHOR:
+# Anna Figueiredo Gomes <navi@vlhl.dev>
+# Maciej Barć <xgqt@gentoo.org>
+# @SUPPORTED_EAPIS: 7 8
+# @PROVIDES: nuget
+# @BLURB: common functions and variables for builds using .NET SDK
+# @DESCRIPTION:
+# This eclass is designed to provide common definitions for .NET packages.
+#
+# This eclass does not export any phase functions, for that see
+# the "dotnet-pkg" eclass.
+
+case "${EAPI}" in
+	7 | 8 )
+		:
+		;;
+	* )
+		die "${ECLASS}: EAPI ${EAPI} unsupported."
+		;;
+esac
+
+if [[ -z ${_DOTNET_PKG_UTILS_ECLASS} ]] ; then
+_DOTNET_PKG_UTILS_ECLASS=1
+
+inherit edo multiprocessing nuget
+
+# @ECLASS_VARIABLE: DOTNET_COMPAT
+# @REQUIRED
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Allows to choose a slot for dotnet.
+#
+# Most .NET packages will lock onto one supported .NET major version.
+# DOTNET_COMPAT should specify which version was chosen by package upstream.
+# In case multiple .NET versions are specified in the project, then the highest
+# should be picked by the maintainer.
+if [[ ${CATEGORY}/${PN} != dev-dotnet/dotnet-runtime-nugets ]] ; then
+	if [[ ! ${DOTNET_COMPAT} ]] ; then
+		die "${ECLASS}: DOTNET_COMPAT not set"
+	fi
+
+	RDEPEND+=" virtual/dotnet-sdk:${DOTNET_COMPAT} "
+	BDEPEND+=" ${RDEPEND} "
+
+	if [[ ${CATEGORY}/${PN} != dev-dotnet/csharp-gentoodotnetinfo ]] ; then
+		BDEPEND+=" dev-dotnet/csharp-gentoodotnetinfo "
+	fi
+
+	IUSE+=" debug "
+fi
+
+# Needed otherwise the binaries may break.
+RESTRICT+=" strip "
+
+# Everything is built by "dotnet".
+QA_PREBUILT=".*"
+
+# Special .NET SDK environment variables.
+# Setting them either prevents annoying information from being generated
+# or stops services that may interfere with a clean package build.
+export DOTNET_CLI_TELEMETRY_OPTOUT=1
+export DOTNET_NOLOGO=1
+export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
+export MSBUILDDISABLENODEREUSE=1
+export POWERSHELL_TELEMETRY_OPTOUT=1
+export POWERSHELL_UPDATECHECK=0
+# Overwrite selected MSBuild properties ("-p:XYZ").
+export UseSharedCompilation=false
+
+# @ECLASS_VARIABLE: DOTNET_RUNTIME
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Sets the runtime used to build a package.
+#
+# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
+
+# @ECLASS_VARIABLE: DOTNET_EXECUTABLE
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Sets path of a "dotnet" executable.
+#
+# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
+
+# @ECLASS_VARIABLE: DOTNET_CONFIGURATION
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Configuration value passed to "dotnet" in the compile phase.
+# Is either Debug or Release, depending on the "debug" USE flag.
+#
+# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
+
+# @ECLASS_VARIABLE: DOTNET_OUTPUT
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Path of the output directory, where the package artifacts are placed during
+# the building of packages with "dotnet-pkg-utils_build" function.
+#
+# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
+
+# @VARIABLE: DOTNET_LAUNCHERDEST
+# @INTERNAL
+# @DESCRIPTION:
+# Sets the path that .NET launchers are installed into by
+# the "dotnet-pkg-utils_dolauncher" function.
+#
+# The function "dotnet-pkg-utils_launcherinto" is able to manipulate this
+# variable.
+#
+# Defaults to "/usr/bin".
+DOTNET_LAUNCHERDEST=/usr/bin
+
+# @VARIABLE: DOTNET_LAUNCHERVARS
+# @INTERNAL
+# @DESCRIPTION:
+# Sets additional variables for .NET launchers created by
+# the "dotnet-pkg-utils_dolauncher" function.
+#
+# The function "dotnet-pkg-utils_append_launchervar" is able to manipulate this
+# variable.
+#
+# Defaults to a empty array.
+DOTNET_LAUNCHERVARS=()
+
+# @FUNCTION: dotnet-pkg-utils_get-configuration
+# @DESCRIPTION:
+# Return .NET configuration type of the current package.
+#
+# It is advised to refer to the "DOTNET_CONFIGURATION" variable instead of
+# calling this function if necessary.
+#
+# Used by "dotnet-pkg-utils_setup".
+dotnet-pkg-utils_get-configuration() {
+	if in_iuse debug && use debug ; then
+		echo Debug
+	else
+		echo Release
+	fi
+}
+
+# @FUNCTION: dotnet-pkg-utils_get-output
+# @USAGE: <name>
+# @DESCRIPTION:
+# Return a specially constructed name of a directory for output of
+# "dotnet build" artifacts ("--output" flag, see "dotnet-pkg-utils_build").
+#
+# It is very rare that a maintainer would use this function in an ebuild.
+#
+# This function is used inside "dotnet-pkg-utils_setup".
+dotnet-pkg-utils_get-output() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	[[ ! ${DOTNET_CONFIGURATION} ]] &&
+		die "${FUNCNAME}: DOTNET_CONFIGURATION is not set."
+
+	echo "${WORKDIR}"/${1}_net${DOTNET_COMPAT}_${DOTNET_CONFIGURATION}
+}
+
+# @FUNCTION: dotnet-pkg-utils_get-runtime
+# @DESCRIPTION:
+# Return the .NET runtime used for the current package.
+#
+# Used by "dotnet-pkg-utils_setup".
+dotnet-pkg-utils_get-runtime() {
+	local libc="$(usex elibc_musl "-musl" "")"
+
+	if use amd64 ; then
+		echo linux${libc}-x64
+	elif use x86 ; then
+		echo linux${libc}-x86
+	elif use arm ; then
+		echo linux${libc}-arm
+	elif use arm64 ; then
+		echo linux${libc}-arm64
+	else
+		die "${FUNCNAME}: Unsupported architecture: ${ARCH}"
+	fi
+}
+
+# @FUNCTION: dotnet-pkg-utils_setup
+# @DESCRIPTION:
+# Sets up "DOTNET_EXECUTABLE" variable for later use in "edotnet".
+# Also sets up "DOTNET_CONFIGURATION" and "DOTNET_OUTPUT"
+# for "dotnet-pkg_src_configure" and "dotnet-pkg_src_compile".
+#
+# This functions should be called by "pkg_setup".
+#
+# Used by "dotnet-pkg_pkg_setup" from the "dotnet-pkg" eclass.
+dotnet-pkg-utils_setup() {
+	local _dotnet
+	for _dotnet in dotnet{,-bin}-${DOTNET_COMPAT} ; do
+		if type ${_dotnet} >/dev/null 2>&1 ; then
+			DOTNET_EXECUTABLE=${_dotnet}
+			DOTNET_EXECUTABLE_PATH="$(command -v ${_dotnet})"
+			break
+		fi
+	done
+
+	# Link "DOTNET_EXECUTABLE" to "dotnet" only for the package build.
+	local dotnet_spoof_path="${T}"/dotnet_spoof/${DOTNET_COMPAT}
+	mkdir -p "${dotnet_spoof_path}" || die
+	ln -s "${DOTNET_EXECUTABLE_PATH}" "${dotnet_spoof_path}"/dotnet || die
+	export PATH="${dotnet_spoof_path}:${PATH}"
+
+	einfo "Using dotnet SDK \"${DOTNET_EXECUTABLE}\" from \"${DOTNET_EXECUTABLE_PATH}\"."
+
+	# The picked "DOTNET_EXECUTABLE" should set "DOTNET_ROOT" internally
+	# and not rely upon this environment variable.
+	unset DOTNET_ROOT
+
+	# Unset .NET and NuGet directories.
+	unset DOTNET_DATA
+	unset NUGET_DATA
+
+	DOTNET_RUNTIME=$(dotnet-pkg-utils_get-runtime)
+	DOTNET_CONFIGURATION=$(dotnet-pkg-utils_get-configuration)
+	DOTNET_OUTPUT="$(dotnet-pkg-utils_get-output ${P})"
+}
+
+# @FUNCTION: dotnet-pkg-utils_remove-global-json
+# @USAGE: [directory]
+# @DESCRIPTION:
+# Remove the "global.json" if it exists.
+# The file in question might lock target package to a specified .NET
+# version, which might be unnecessary (as it is in most cases).
+#
+# Optional "directory" argument defaults to the current directory path.
+#
+# Used by "dotnet-pkg_src_prepare" from the "dotnet-pkg" eclass.
+dotnet-pkg-utils_remove-global-json() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local file="${1:-.}"/global.json
+
+	if [[ -f "${file}" ]] ; then
+		ebegin "Removing the global.json file"
+		rm "${file}"
+		eend ${?} || die "${FUNCNAME}: failed to remove ${file}"
+	fi
+}
+
+# @FUNCTION: edotnet
+# @USAGE: <command> [args...]
+# @DESCRIPTION:
+# Call dotnet, passing the supplied arguments.
+edotnet() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	if [[ ! "${DOTNET_EXECUTABLE}" ]] ; then
+	   die "${FUNCNAME}: DOTNET_EXECUTABLE not set. Was dotnet-pkg-utils_setup called?"
+	fi
+
+	edo "${DOTNET_EXECUTABLE}" "${@}"
+}
+
+# @FUNCTION: dotnet-pkg-utils_info
+# @DESCRIPTION:
+# Show information about current .NET SDK that is being used.
+#
+# Depends upon the "gentoo-dotnet-info" program installed by
+# the "dev-dotnet/csharp-gentoodotnetinfo" package.
+#
+# Used by "dotnet-pkg_src_configure" from the "dotnet-pkg" eclass.
+dotnet-pkg-utils_info() {
+	if [[ ${CATEGORY}/${PN} == dev-dotnet/csharp-gentoodotnetinfo ]] ; then
+		debug-print-function "${FUNCNAME}: ${P} is a special package, skipping dotnet-pkg-utils_info"
+	elif ! command -v gentoo-dotnet-info >/dev/null ; then
+		ewarn "${FUNCNAME}: gentoo-dotnet-info not available"
+	else
+		gentoo-dotnet-info || die "${FUNCNAME}: failed to execute gentoo-dotnet-info"
+	fi
+}
+
+# @FUNCTION: dotnet-pkg-utils_foreach-solution
+# @USAGE: <function> [directory]
+# @DESCRIPTION:
+# Execute a function for each solution file (.sln) in a specified directory.
+# This function may yield no real results because solutions are discovered
+# automatically.
+#
+# Optional "directory" argument defaults to the current directory path.
+#
+# Used by "dotnet-pkg_src_configure" from the "dotnet-pkg" eclass.
+dotnet-pkg-utils_foreach-solution() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local dotnet_solution
+	for dotnet_solution in $(find "${2:-.}" -maxdepth 1 -type f -name "*.sln") ; do
+		einfo "Running \"${1}\" for solution: \"$(basename "${dotnet_solution}")\""
+		"${1}" "${dotnet_solution}"
+	done
+}
+
+# @FUNCTION: dotnet-pkg-utils_restore
+# @USAGE: [directory] [args] ...
+# @DESCRIPTION:
+# Restore the package using "dotnet restore" in a specified directory.
+#
+# Optional "directory" argument defaults to the current directory path.
+#
+# Additionally any number of "args" maybe be given, they are appended to
+# the "dotnet" command invocation.
+#
+# Used by "dotnet-pkg_src_configure" from the "dotnet-pkg" eclass.
+dotnet-pkg-utils_restore() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local directory
+	if [[ "${1}" ]] ; then
+		directory="${1}"
+		shift
+	else
+		directory="$(pwd)"
+	fi
+
+	local -a restore_args=(
+		--runtime ${DOTNET_RUNTIME}
+		--source "${NUGET_PACKAGES}"
+		-maxCpuCount:$(makeopts_jobs)
+		"${@}"
+	)
+
+	edotnet restore "${restore_args[@]}" "${directory}"
+}
+
+# @FUNCTION: dotnet-pkg-utils_restore_tools
+# @USAGE: [config-file] [args] ...
+# @DESCRIPTION:
+# Restore dotnet tools for a project in the current directory.
+#
+# Optional "config-file" argument is used to specify a file for the
+# "--configfile" option which records what tools should be restored.
+#
+# Additionally any number of "args" maybe be given, they are appended to
+# the "dotnet" command invocation.
+dotnet-pkg-utils_restore_tools() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local -a tool_restore_args=(
+		--add-source "${NUGET_PACKAGES}"
+	)
+
+	if [[ "${1}" ]] ; then
+		tool_restore_args+=( --configfile "${1}" )
+		shift
+	fi
+
+	tool_restore_args+=( "${@}" )
+
+	edotnet tool restore "${tool_restore_args[@]}"
+}
+
+# @FUNCTION: dotnet-pkg-utils_build
+# @USAGE: [directory] [args] ...
+# @DESCRIPTION:
+# Build the package using "dotnet build" in a specified directory.
+#
+# Optional "directory" argument defaults to the current directory path.
+#
+# Additionally any number of "args" maybe be given, they are appended to
+# the "dotnet" command invocation.
+#
+# Used by "dotnet-pkg_src_compile" from the "dotnet-pkg" eclass.
+dotnet-pkg-utils_build() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local directory
+	if [[ "${1}" ]] ; then
+		directory="${1}"
+		shift
+	else
+		directory="$(pwd)"
+	fi
+
+	local -a build_args=(
+		--configuration "${DOTNET_CONFIGURATION}"
+		--no-restore
+		--no-self-contained
+		--output "${DOTNET_OUTPUT}"
+		--runtime ${DOTNET_RUNTIME}
+		-maxCpuCount:$(makeopts_jobs)
+		"${@}"
+	)
+
+	if ! use debug ; then
+		build_args+=(
+			-p:StripSymbols=true
+			-p:NativeDebugSymbols=false
+		)
+	fi
+
+	edotnet build "${build_args[@]}" "${directory}"
+}
+
+# @FUNCTION: dotnet-pkg-utils_test
+# @USAGE: [directory] [args] ...
+# @DESCRIPTION:
+# Test the package using "dotnet test" in a specified directory.
+#
+# Optional "directory" argument defaults to the current directory path.
+#
+# Additionally any number of "args" maybe be given, they are appended to
+# the "dotnet" command invocation.
+#
+# Used by "dotnet-pkg_src_test" from the "dotnet-pkg" eclass.
+dotnet-pkg-utils_test() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local directory
+	if [[ "${1}" ]] ; then
+		directory="${1}"
+		shift
+	else
+		directory="$(pwd)"
+	fi
+
+	local -a test_args=(
+		--configuration "${DOTNET_CONFIGURATION}"
+		--no-restore
+		-maxCpuCount:$(makeopts_jobs)
+		"${@}"
+	)
+
+	edotnet test "${test_args[@]}" "${directory}"
+}
+
+# @FUNCTION: dotnet-pkg-utils_install
+# @USAGE: [directory]
+# @DESCRIPTION:
+# Install the contents of "DOTNET_OUTPUT" into a directory, defaults to
+# "/usr/share/${PN}".
+#
+# Installation directory is relative to "ED".
+dotnet-pkg-utils_install() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local installation_directory="${1:-/usr/share/${P}}"
+
+	dodir "${installation_directory}"
+	cp -r "${DOTNET_OUTPUT}"/* "${ED}"/"${installation_directory}"/ || die
+}
+
+# @FUNCTION: dotnet-pkg-utils_launcherinto
+# @USAGE: <directory>
+# @DESCRIPTION:
+# Changes the path .NET launchers are installed into via subsequent
+# "dotnet-pkg-utils_dolauncher" calls.
+#
+# For more info see the "DOTNET_LAUNCHERDEST" variable.
+dotnet-pkg-utils_launcherinto() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	[[ ! "${1}" ]] && die "${FUNCNAME}: no directory specified"
+
+	DOTNET_LAUNCHERDEST="${1}"
+}
+
+# @FUNCTION: dotnet-pkg-utils_append_launchervar
+# @USAGE: <variable-setting>
+# @DESCRIPTION:
+# Appends a given variable setting to the "DOTNET_LAUNCHERVARS".
+#
+# WARNING: This functions modifies a global variable permanently!
+# This means that all launchers created in subsequent
+# "dotnet-pkg-utils_dolauncher" calls of a given package will have
+# the given variable set.
+#
+# Example:
+# @CODE
+# dotnet-pkg-utils_append_launchervar "DOTNET_EnableAlternateStackCheck=1"
+# @CODE
+#
+# For more info see the "DOTNET_LAUNCHERVARS" variable.
+dotnet-pkg-utils_append_launchervar() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	[[ ! "${1}" ]] && die "${FUNCNAME}: no variable setting specified"
+
+	DOTNET_LAUNCHERVARS+=( "${1}" )
+}
+
+# @FUNCTION: dotnet-pkg-utils_dolauncher
+# @USAGE: <executable-path> [filename]
+# @DESCRIPTION:
+# Make a wrapper script to launch an executable built from a .NET package.
+#
+# If no file name is given, the `basename` of the executable is used.
+#
+# Parameters:
+# ${1} - path of the executable to launch,
+# ${2} - filename of launcher to create (optional).
+#
+# Example:
+# @CODE
+# dotnet-pkg-utils_install
+# dotnet-pkg-utils_dolauncher /usr/share/${P}/${PN^}
+# @CODE
+#
+# The path is prepended by "EPREFIX".
+dotnet-pkg-utils_dolauncher() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local executable_path executable_name
+
+	if [[ "${1}" ]] ; then
+		local executable_path="${1}"
+		shift
+	else
+		die "${FUNCNAME}: No executable path given."
+	fi
+
+	if [[ ${#} = 0 ]] ; then
+		executable_name="$(basename "${executable_path}")"
+	else
+		executable_name="${1}"
+		shift
+	fi
+
+	local executable_target="${T}/${executable_name}"
+
+	cat > "${executable_target}" <<-EOF
+	#!/bin/sh
+
+	# Lanucher script for ${executable_path} (${executable_name}),
+	# created from package "${CATEGORY}/${P}",
+	# compatible with dotnet version ${DOTNET_COMPAT}.
+
+	for __dotnet_root in \\
+		${EPREFIX}/usr/$(get_libdir)/dotnet-sdk-${DOTNET_COMPAT} \\
+		${EPREFIX}/opt/dotnet-sdk-bin-${DOTNET_COMPAT} ; do
+		[ -d \${__dotnet_root} ] && break
+	done
+
+	DOTNET_ROOT="\${__dotnet_root}"
+	export DOTNET_ROOT
+
+	$(for var in "${DOTNET_LAUNCHERVARS[@]}" ; do
+		echo "${var}"
+		echo "export ${var%%=*}"
+	done)
+
+	exec "${EPREFIX}${executable_path}" "\${@}"
+	EOF
+
+	dodir "${DOTNET_LAUNCHERDEST}"
+	exeinto "${DOTNET_LAUNCHERDEST}"
+	doexe "${executable_target}"
+}
+
+# @FUNCTION: dotnet-pkg-utils_dolauncher_portable
+# @USAGE: <dll-path> <filename>
+# @DESCRIPTION:
+# Make a wrapper script to launch a .NET DLL file built from a .NET package.
+#
+# Parameters:
+# ${1} - path of the DLL to launch,
+# ${2} - filename of launcher to create.
+#
+# Example:
+# @CODE
+# dotnet-pkg-utils_dolauncher_portable \
+#     /usr/share/${P}/GentooDotnetInfo.dll gentoo-dotnet-info
+# @CODE
+#
+# The path is prepended by "EPREFIX".
+dotnet-pkg-utils_dolauncher_portable() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local dll_path="${1}"
+	local executable_name="${2}"
+	local executable_target="${T}/${executable_name}"
+
+	cat > "${executable_target}" <<-EOF
+	#!/bin/sh
+
+	# Lanucher script for ${dll_path} (${executable_name}),
+	# created from package "${CATEGORY}/${P}",
+	# compatible with any dotnet version, built on ${DOTNET_COMPAT}.
+
+	$(for var in "${DOTNET_LAUNCHERVARS[@]}" ; do
+		echo "${var}"
+		echo "export ${var%%=*}"
+	done)
+
+	exec dotnet exec "${EPREFIX}${dll_path}" "\${@}"
+	EOF
+
+	dodir "${DOTNET_LAUNCHERDEST}"
+	exeinto "${DOTNET_LAUNCHERDEST}"
+	doexe "${executable_target}"
+}
+
+fi
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: introduce new eclass
  2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
@ 2023-07-16 12:38 ` Maciej Barć
  2023-07-16 12:56   ` Sam James
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 4/7] dev-dotnet/dotnet-runtime-nugets: new package Maciej Barć
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 12:38 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

Bug: https://bugs.gentoo.org/900597
Bug: https://github.com/gentoo/gentoo/pull/29309
Signed-off-by: Maciej Barć <xgqt@gentoo.org>
---
 eclass/dotnet-pkg.eclass | 249 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 249 insertions(+)
 create mode 100644 eclass/dotnet-pkg.eclass

diff --git a/eclass/dotnet-pkg.eclass b/eclass/dotnet-pkg.eclass
new file mode 100644
index 0000000000..2b711467f5
--- /dev/null
+++ b/eclass/dotnet-pkg.eclass
@@ -0,0 +1,249 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: dotnet-pkg.eclass
+# @MAINTAINER:
+# Gentoo Dotnet project <dotnet@gentoo.org>
+# @AUTHOR:
+# Anna Figueiredo Gomes <navi@vlhl.dev>
+# Maciej Barć <xgqt@gentoo.org>
+# @SUPPORTED_EAPIS: 7 8
+# @PROVIDES: dotnet-pkg-utils nuget
+# @BLURB: common functions and variables for .NET packages
+# @DESCRIPTION:
+# This eclass is designed to help with building and installing packages that
+# use the .NET SDK.
+#
+# .NET SDK is a open-source framework from Microsoft, it is a cross-platform
+# successor to .NET Framework.
+#
+# .NET packages require proper inspection before packaging:
+# - the compatible .NET SDK version has to be declared,
+#   this can be done by inspecting the package's "*proj" files,
+#   unlike JAVA, .NET packages tend to lock onto one selected .NET SDK
+#   version, so building with other .NET versions will be mostly unsupported,
+# - nugets, which are similar to JAVA's JARs (package .NET dependencies),
+#   have to be listed using either the "NUGETS" variable or bundled inside
+#   a "prebuilt" archive, in second case also the "NUGET_PACKAGES" variable
+#   has to be explicitly set.
+# - the main project file (.*proj) that builds the project has to be specified
+#   by the "DOTNET_PROJECT" variable.
+
+case "${EAPI}" in
+	7 | 8 )
+		:
+		;;
+	* )
+		die "${ECLASS}: EAPI ${EAPI} unsupported."
+		;;
+esac
+
+if [[ -z ${_DOTNET_PKG_ECLASS} ]] ; then
+_DOTNET_PKG_ECLASS=1
+
+inherit dotnet-pkg-utils
+
+# @ECLASS_VARIABLE: DOTNET_PROJECTS
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Path to the main .NET project files (".csproj", ".fsproj", ".vbproj")
+# used by default by "dotnet-pkg_src_compile" phase function.
+#
+# In .NET version 6.0 and lower it was possible to build a project solution
+# (".sln") immediately with output to a specified directory ("--output DIR"),
+# but versions >= 7.0 deprecated this behavior. This means that
+# "dotnet-pkg-utils_build" will fail when pointed to a solution or a directory
+# containing a solution file.
+#
+# It is up to the maintainer if this variable is set before inheriting
+# "dotnet-pkg-utils" eclass, but it is advised that it is set after
+# the variable "${S}" is set, it should also integrate with it
+# (see the example below).
+#
+# Example:
+# @CODE
+# SRC_URI="..."
+# S="${S}"/src
+#
+# LICENSE="MIT"
+# SLOT="0"
+# KEYWORDS="~amd64"
+#
+# DOTNET_PROJECTS=( "${S}/DotnetProject" )
+#
+# src_prepare() {
+#     ...
+# @CODE
+
+# @ECLASS_VARIABLE: DOTNET_RESTORE_EXTRA_ARGS
+# @DESCRIPTION:
+# Extra arguments to pass to the package restore, in the "src_configure" phase.
+#
+# This is passed only when restoring the specified "DOTNET_PROJECT".
+# Other project restorers do not use this variable.
+#
+# It is up to the maintainer if this variable is set before inheriting
+# "dotnet-pkg.eclass", but it is advised that it is set after the variable
+# "DOTNET_PROJECT" (from "dotnet-pkg-utils" eclass) is set.
+#
+# Default value is an empty array.
+#
+# For more info see the "DOTNET_PROJECT" variable and "dotnet-pkg_src_configure".
+DOTNET_RESTORE_EXTRA_ARGS=()
+
+# @ECLASS_VARIABLE: DOTNET_BUILD_EXTRA_ARGS
+# @DESCRIPTION:
+# Extra arguments to pass to the package build, in the "src_compile" phase.
+#
+# This is passed only when building the specified "DOTNET_PROJECT".
+# Other project builds do not use this variable.
+#
+# It is up to the maintainer if this variable is set before inheriting
+# "dotnet-pkg.eclass", but it is advised that it is set after the variable
+# "DOTNET_PROJECT" (from "dotnet-pkg-utils" eclass) is set.
+#
+# Default value is an empty array.
+#
+# Example:
+# @CODE
+# DOTNET_BUILD_EXTRA_ARGS=( -p:WarningLevel=0 )
+# @CODE
+#
+# For more info see the "DOTNET_PROJECT" variable and "dotnet-pkg_src_compile".
+DOTNET_BUILD_EXTRA_ARGS=()
+
+# @FUNCTION: dotnet-pkg_pkg_setup
+# @DESCRIPTION:
+# Default "pkg_setup" for the "dotnet-pkg" eclass.
+# Pre-build configuration and checks.
+#
+# Calls "dotnet-pkg-utils_pkg_setup".
+dotnet-pkg_pkg_setup() {
+	dotnet-pkg-utils_setup
+}
+
+# @FUNCTION: dotnet-pkg_src_unpack
+# @DESCRIPTION:
+# Default "src_unpack" for the "dotnet-pkg" eclass.
+# Unpack the package sources.
+#
+# Includes a special exception for nugets (".nupkg" files) - they are instead
+# copied into the "NUGET_PACKAGES" directory.
+dotnet-pkg_src_unpack() {
+	nuget_link-system-nugets
+
+	local archive
+	for archive in ${A} ; do
+		case ${archive} in
+			*.nupkg )
+				nuget_link "${DISTDIR}"/${archive}
+				;;
+			* )
+				unpack ${archive}
+				;;
+		esac
+	done
+}
+
+# @FUNCTION: dotnet-pkg_src_prepare
+# @DESCRIPTION:
+# Default "src_prepare" for the "dotnet-pkg" eclass.
+# Prepare the package sources.
+#
+# Run "dotnet-pkg-utils_remove-global-json".
+dotnet-pkg_src_prepare() {
+	dotnet-pkg-utils_remove-global-json
+
+	default
+}
+
+# @FUNCTION: dotnet-pkg_foreach-project
+# @USAGE: <args> ...
+# @DESCRIPTION:
+# Run a specified command for each project listed inside the "DOTNET_PROJECTS"
+# variable.
+#
+# Used by "dotnet-pkg_src_configure" and "dotnet-pkg_src_compile".
+dotnet-pkg_foreach-project() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local dotnet_project
+	for dotnet_project in "${DOTNET_PROJECTS[@]}" ; do
+		einfo "Running \"${@}\" for project: \"$(basename "${dotnet_project}")\""
+		"${@}" "${dotnet_project}"
+	done
+}
+
+# @FUNCTION: dotnet-pkg_src_configure
+# @DESCRIPTION:
+# Default "src_configure" for the "dotnet-pkg" eclass.
+# Configure the package.
+#
+# First show information about current .NET SDK that is being used,
+# then restore the project file specified by "DOTNET_PROJECT",
+# afterwards restore any found solutions.
+dotnet-pkg_src_configure() {
+	dotnet-pkg-utils_info
+
+	dotnet-pkg_foreach-project \
+		dotnet-pkg-utils_restore "${DOTNET_RESTORE_EXTRA_ARGS[@]}"
+
+	dotnet-pkg-utils_foreach-solution dotnet-pkg-utils_restore "$(pwd)"
+}
+
+# @FUNCTION: dotnet-pkg_src_compile
+# @DESCRIPTION:
+# Default "src_compile" for the "dotnet-pkg" eclass.
+# Build the package.
+#
+# Build the package using "dotnet build" in the directory specified by either
+# "DOTNET_PROJECT" or "S" (temporary build directory) variables.
+#
+# For more info see: "DOTNET_PROJECT" variable
+# and "dotnet-pkg-utils_get-project" function.
+dotnet-pkg_src_compile() {
+	dotnet-pkg_foreach-project \
+		dotnet-pkg-utils_build "${DOTNET_BUILD_EXTRA_ARGS[@]}"
+}
+
+# @FUNCTION: dotnet-pkg_src_test
+# @DESCRIPTION:
+# Default "src_test" for the "dotnet-pkg" eclass.
+# Test the package.
+#
+# Test the package by testing any found solutions.
+#
+# It is very likely that this function will either not execute any tests or
+# will execute wrong or incomplete test suite. Maintainers should inspect if
+# any and/or correct tests are ran.
+dotnet-pkg_src_test() {
+	dotnet-pkg-utils_foreach-solution dotnet-pkg-utils_test "$(pwd)"
+}
+
+# @FUNCTION: dotnet-pkg_src_install
+# @DESCRIPTION:
+# Default "src_install" for the "dotnet-pkg" eclass.
+# Install the package.
+#
+# This is the default package install function for the "dotnet-pkg" eclass.
+#
+# It is very likely that this function is either insufficient or has to be
+# redefined in a ebuild.
+dotnet-pkg_src_install() {
+	# Install the compiled .NET package artifacts,
+	# for more info see "dotnet-pkg-utils_install" and "DOTNET_OUTPUT".
+	dotnet-pkg-utils_install
+
+	# Create launcher from the .NET package directory to "/usr/bin".
+	# For example: /usr/bin/Nake -> /usr/share/nake-3.0.0/Nake
+	dotnet-pkg-utils_dolauncher /usr/share/${P}/${PN^}
+
+	# Create a compatibility symlink and also for ease of use from CLI.
+	dosym -r /usr/bin/${PN^} /usr/bin/${PN}
+
+	einstalldocs
+}
+
+EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install
+
+fi
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [gentoo-dev] [PATCH 4/7] dev-dotnet/dotnet-runtime-nugets: new package
  2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: " Maciej Barć
@ 2023-07-16 12:38 ` Maciej Barć
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: " Maciej Barć
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 12:38 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

Bug: https://bugs.gentoo.org/900597
Bug: https://github.com/gentoo/gentoo/pull/29309
Signed-off-by: Maciej Barć <xgqt@gentoo.org>
---
 dev-dotnet/dotnet-runtime-nugets/Manifest     | 117 ++++++++++++++++++
 .../dotnet-runtime-nugets-3.1.32.ebuild       |  45 +++++++
 .../dotnet-runtime-nugets-6.0.12.ebuild       |  48 +++++++
 .../dotnet-runtime-nugets-6.0.14.ebuild       |  48 +++++++
 .../dotnet-runtime-nugets-6.0.16.ebuild       |  48 +++++++
 .../dotnet-runtime-nugets-7.0.3.ebuild        |  48 +++++++
 .../dotnet-runtime-nugets-7.0.5.ebuild        |  48 +++++++
 dev-dotnet/dotnet-runtime-nugets/metadata.xml |   9 ++
 8 files changed, 411 insertions(+)
 create mode 100644 dev-dotnet/dotnet-runtime-nugets/Manifest
 create mode 100644 dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-3.1.32.ebuild
 create mode 100644 dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.12.ebuild
 create mode 100644 dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.14.ebuild
 create mode 100644 dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.16.ebuild
 create mode 100644 dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-7.0.3.ebuild
 create mode 100644 dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-7.0.5.ebuild
 create mode 100644 dev-dotnet/dotnet-runtime-nugets/metadata.xml

diff --git a/dev-dotnet/dotnet-runtime-nugets/Manifest b/dev-dotnet/dotnet-runtime-nugets/Manifest
new file mode 100644
index 0000000000..8b2278ec5b
--- /dev/null
+++ b/dev-dotnet/dotnet-runtime-nugets/Manifest
@@ -0,0 +1,117 @@
+DIST microsoft.aspnetcore.app.ref.3.1.10.nupkg 2535203 BLAKE2B de332022234864a337f7430966fa98dad3cde28f3a5bc049365636855b51054e4a3d452474a61c4df647c9f6eb33db80c155d442c5df41770d93e25b2dabe852
+DIST microsoft.aspnetcore.app.ref.6.0.12.nupkg 3341830 BLAKE2B 460b1f8a5bb4a49b494f8582c8f06792b48d1e5f24d990456c4510189881cb995d9cf0de0f4a464105a3dce0a59e9efd7c6a73aaad95d83518cbd595df8b7014
+DIST microsoft.aspnetcore.app.ref.6.0.14.nupkg 3340852 BLAKE2B 8481d2ec13e937c24335fbb7480941fd2679d3dfa2f5f2245bce48c9be04050c5dde9f2ec9e54625f1306d68223a5b953ae6d779335990cba244217ec0a44659
+DIST microsoft.aspnetcore.app.ref.6.0.16.nupkg 3341587 BLAKE2B 4a3588d50412a0659b9776482e494055a5b476dfd8748c8455777e068e6f86a58349c069f8f3288c088dd52b7d1f219fce520f40d5ee952eb3249bef3be89c46 SHA512 7b994bf1cf10a2b9c24f333046adbd78a14a5a969d1c235cb23ac93af51d1fe6a01304b61983b00bea9eb4c772bf6c9439f95d40d1db0f09c10d141bbe068cf2
+DIST microsoft.aspnetcore.app.ref.7.0.3.nupkg 3557271 BLAKE2B aec4693047178e484c75775975e5eb7501a8f72c6adbab90206c7fb357f5e28fe1ed1955db323180e8067302851c21b722b05d4edc1a81a14ed8124f5b712d1b
+DIST microsoft.aspnetcore.app.ref.7.0.5.nupkg 3555506 BLAKE2B 6cc7ea23b65e6416f8394af50fca31803c760a4ecef080c64fc2fb0d938161a45707497d66147b2ce4398ca3b0e1796d33e84b852d4e5c1b8db3218b04932218 SHA512 1f7952a5ea05cd8c68b215a8025c11ee97639e4f523943b7d32256390184ab9cac81598965da76ec5a3fc1af1c3077b440b7f198bf483badb409312d00cd0e80
+DIST microsoft.aspnetcore.app.runtime.linux-arm.3.1.32.nupkg 9422779 BLAKE2B 1fc5426e790842ad03ee9dadd62447c59cbb6cc462acfda2d3688e75c68581f478a69a2f5b3b2648b17e8a637f89f7fc45b0ef09423d8a3ae8bc8dfa4870b5ce
+DIST microsoft.aspnetcore.app.runtime.linux-arm.6.0.12.nupkg 10095058 BLAKE2B abd9ac8ed867b2e2e827e8c80dd0d8303262daf9076e80892caac268cc54656982a0b3ad67877e8a7c845ec3f6638f3122a25340609d5a34580de03be23c0f9c
+DIST microsoft.aspnetcore.app.runtime.linux-arm.6.0.14.nupkg 10095297 BLAKE2B 4af3698eeda253c2eb5e90aae464ef496c8ccffcae201b2f8dc3e9695cb4ee2cd00a270f6e48871c8378ebb4182b7ca25eda957df036611194e572453b898690
+DIST microsoft.aspnetcore.app.runtime.linux-arm.6.0.16.nupkg 10095817 BLAKE2B 939b1f0008af535aede118ee5e4559e3fcafdc39c392f41f80ed0200420495137d3d6049fd305c1baed4c605c1ead4a7adb9a629f4c242b8dd3363517c9bb23b SHA512 40dfef2423b5a8cd8ec6ba97bc2e6e6e121664809499540f9f77b4766f49655990056b546d8ff1027dcec84007a4c8144cf7a50de0722be65d61aeec09fe1bb5
+DIST microsoft.aspnetcore.app.runtime.linux-arm.7.0.3.nupkg 10803489 BLAKE2B 2f5c1cccd718ad00d851ae7482402fd059145ac963ba611a884e757219bade0184c37db6badf5d3aa9a76df75b9d194568203d9105e673e08a0db22d9d2f62b7 SHA512 af20c42549dcf7f25a2046aa6ef071d0231c554e0b5c5a357207fc708384d46a1d57e6f2e054a4eddeb2f04fe64d7ef3c9974fc50878d6e3ae018b0f735cd141
+DIST microsoft.aspnetcore.app.runtime.linux-arm.7.0.5.nupkg 10806144 BLAKE2B c2305cde423b51359ca4ecaec6925ff4afd378b992d775ee89598543da4ae530d5ce533e22cddebded18509653e886b97d33269e8d2bb79ad81ba2e79f895212 SHA512 2ba63d7eea0758fc109f947e687e6265089c4c7a6f3dc44cee269139cd5171e027125afacf5bc9d21c63292b9419d776b513149547efeb6acbb6c31f37ededc3
+DIST microsoft.aspnetcore.app.runtime.linux-arm64.3.1.32.nupkg 8938556 BLAKE2B 16dca004bfe9741ab542e3ac1155a587750ebf6d128ac981e60f190ce2375891dd50fb5c186f50aadd9b67690477e5de41215661fc2d8b215f1bb4664de11770
+DIST microsoft.aspnetcore.app.runtime.linux-arm64.6.0.12.nupkg 9864158 BLAKE2B 1000452879b7efdd7d47927f61122c42873a3c320652a592e754b8cfdbd13b608c5fa63e3634b7384da26560ee016ff005923da81978e1b23373e40f951c8bfc
+DIST microsoft.aspnetcore.app.runtime.linux-arm64.6.0.14.nupkg 9865041 BLAKE2B 34097557119166f34d6dfa95d60f9a0e660fc75c0bf97e149b51aa1d71928b073093aa0bc6d37c0346b71e9327d21b49e8e77bda3a39c738a16e8cc19b3213ce
+DIST microsoft.aspnetcore.app.runtime.linux-arm64.6.0.16.nupkg 9864411 BLAKE2B b3d9ab200b3186b2295e6e0c653cb326789c890cfb076c3f3ea281e8df771e82051a37043473db4139c94784563069a8d2017ba94411464e9510fa324b41d88b SHA512 41c61b076e3c700ccbcd53be66682f0321eba8a71fc376ce4d766074de764e0ee7d42f1b62d6ef09e5d9545569bf21960f772d2cc0d6d1e3f8eba15d897240fe
+DIST microsoft.aspnetcore.app.runtime.linux-arm64.7.0.3.nupkg 10610438 BLAKE2B 2a9aaa7e8e923af67752668c48bd75a42adc95446e34a5405adb7c01181629d9476040a4774e89f978658b4f299d432951964e43ea964726517020663071b839 SHA512 15a2fbfed3d2bb2433c560e2ddd5f292d3c35912855f912d4544f7d24be9144d0c910f65db041399c1d06aaa726616e984f0cf62223ca214587c6620645c5bca
+DIST microsoft.aspnetcore.app.runtime.linux-arm64.7.0.5.nupkg 10608885 BLAKE2B 26b47d72cdaacc31deb47657ef77a56274d23f98186a998541db19efb9ef4505eec605dbd54f3daa36153d640d0d584807da32be09498766e79aa1721f156521 SHA512 ee24fd027ee33f3d2fb4f571d141da02b66b994dec40c7ae1c485a85adb9a442a04b9590a495ae2fbd61c334cb10d21a633f6937babc6ca903a88cf3e379ba47
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm.6.0.12.nupkg 10096432 BLAKE2B 4deb9e75af26fe06de2688c14c4ff24f75c8338528c3726e5f6aaad337c03d7a5ffae7438620538a8741304067d1baaaeb9d6a6bec2034ff08d9a098db77e060
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm.6.0.14.nupkg 10096718 BLAKE2B f609c27e50d98586d245a7e7be75ee89970d590708e4d3aa6448278c2bb0ea5b206afe3c6d28e8798a7bb3a3b03fe3e97f1e74a6030111aed0ec3035dfa93bb0
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm.6.0.16.nupkg 10097181 BLAKE2B 1dff7f89523aeac732feb5cb26756ca839efc0d54fd9b8fcb6bdd522c3b61ca63a7a098650be51a804b322cf684e6eb4a579154cc106602bcefe9c8320ff68c3 SHA512 b2db9ad634bbe8074908aff9953bf71c1e224d38d89b7cd1bf23321179f58ddd680d3ffbc44bcacf9aafe74482cffeadece7e408db88389384940242b87f292f
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm.7.0.3.nupkg 10809233 BLAKE2B 980b453245797237903a8530d1539e89ecd239b438b15635d9b9358091d002d1a525e58f3540687d7d85db01493d440d444328e3f6823fe63f8e56f13c9cca3a SHA512 2855fbea4e88a2c94c1c0af0b98c5113ddfbf8033a2facdac06454435d8a434d97ee2c23df0a0716f824d0fc63a5646d42cb0a34a5b6ecb5e05c97a929c8ee4c
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm.7.0.5.nupkg 10807297 BLAKE2B c9d5de17d1a1940d808f927637e9f5a3e7fdbfb12060ee4afc0dc77cfdb1ebb5069c4231eac33c1b300d790bc4bbf79d7d75372146e4ac2285b782c1b0def57b SHA512 96720fbc38cc26c33ee71b926b5dbac7822a38291c1f9ae9f4db8aadab2b90447a64797772fc4a7a50acc82702b7a16839a89164438098be09a37605fba1050b
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm64.3.1.32.nupkg 8940010 BLAKE2B ff49b04ca5036d1217531486db112f21ab4e8654554b8a41c1f307259452adcd400fe28c52b6da0368fcb39f0c41a6081530c345665233dc3108473f66fd2723
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm64.6.0.12.nupkg 9865493 BLAKE2B 870083c92ecb0e88b34cd90f63dd7a1c9e12231f7d3ba22224226dab855ccfc52b1974633a77e3cb51f7ccca3323b98a7afb49419d8c1d506b30be34896c783b
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm64.6.0.14.nupkg 9866524 BLAKE2B 16b991081fca944869fdf23e18e2feca0866d7a44826c3dfcb398086665cdf4a3a9a9dcf1fb1ed117d4b928edfd1cdfa5b16d748ec1979818b6cc1422ae151a3
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm64.6.0.16.nupkg 9865809 BLAKE2B db8d5ac28e6eeb69b1e535d95cdd941e3f35e97b7332ab6df25918256aa6bd8443cd81e491a9f5787a232ee8f64892be907e8c3c234267e6863218ea72c2ffad SHA512 51b9cbfe8d42aa1fdb01e839806715dcd60a5d3c738970589750fc22a9fa7b969c2de8a9837071ed6ef632dd671b0a08ae2621ca8aeed062ce67ca5c0bc34151
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm64.7.0.3.nupkg 10610602 BLAKE2B 6d047faa2a60932e991916a35f31ef84a089a09f5ec44239b022ac457486d91afed28d582f38ce575dba097efdd411464506ec7c8a4f832c143808d236936bb4 SHA512 72258e2760acc96356e84a1b9b481b31a1746960c1f079db62e381786e56a0234742e8fca791fe16f845890d6054bddf19299aeece1082459a32f16097e5698b
+DIST microsoft.aspnetcore.app.runtime.linux-musl-arm64.7.0.5.nupkg 10611724 BLAKE2B ee569efa4e8d2ff201d6bc5322ba88f39f3a11ba809720420b67ca7a97a42358b9869202a10d4c92b92b61043757bf18e8ef7b163756f933de1a76f30f1cb087 SHA512 b912293ab6cec69764b74ebaa02adc659cbb8712084e38ea97a7e57c92c8161b1a28db19dbb6d401bbfe9240bda82a55d8cb6609f543094032cf57ab4d106913
+DIST microsoft.aspnetcore.app.runtime.linux-musl-x64.3.1.32.nupkg 8916920 BLAKE2B a2ccc108057dcbf234e3f6f58b79952a0f8071da4ed888475708b7eeb7a0beb836c9ab4cd224a5c58cea84b551afea26c4a103198b0ca020acadcf32aad3e988
+DIST microsoft.aspnetcore.app.runtime.linux-musl-x64.6.0.12.nupkg 10217939 BLAKE2B dfc065862323a4fb9fdf6aebc5af71153a183de07a631f22af23e04d5c34aa2e0360745cc945bb6d7572f066e2a694629f32cc8f41615546a212781d51433867
+DIST microsoft.aspnetcore.app.runtime.linux-musl-x64.6.0.14.nupkg 10217284 BLAKE2B 8509e5845a17aa539ae3d17c486d911b77b8dd7bb68ecc32b570d613e15460fd2ce11132121c4adcd7d287bf70e753aba26f98301b34dd7e7f3091a9bb061d20
+DIST microsoft.aspnetcore.app.runtime.linux-musl-x64.6.0.16.nupkg 10218867 BLAKE2B 88b25f5528a4cd4422f8bf39f6980dbd6c8faa1a4f320fbb9e72759556c7174b6b7d7c5be367b5e51bbd0ee28031d1c1c8fc2174188fa44878365d115600f91c SHA512 dc61782cf95f0ba3dda2109a66f61886d90f061772706be5f5f338617aa9fe410923eed6fb1243763ee0c6f3397b59052d1a5da68979a8bbc228b1485147127d
+DIST microsoft.aspnetcore.app.runtime.linux-musl-x64.7.0.3.nupkg 10864510 BLAKE2B c2a48eb8b610781d7c775d6e67882b0d0eb4de35feb6af36f4e980637db7235ba9d2fe6b8825f7a7289f00ee28b4c51d65e5d0310ac4b74ccb5ecc29c40e6580 SHA512 2b08e1e1f0281a136979ca61641ada5ed07b159a89370af0b477b13a5109f78df40b9801e5b3f42fbd1d30aea684eba97872caccca7dae5b446b3ddd8ba6c889
+DIST microsoft.aspnetcore.app.runtime.linux-musl-x64.7.0.5.nupkg 10864992 BLAKE2B 1255fd0b4d928c755d0e3caff28dc61ac801514c81c8e929a24c8913afb876bf13b1d5b26634eb950460b45a70abac3042321f8edb0781eab04845bc05d577c9 SHA512 ef48ebf80a4b2e356b358d40341b9e2ab087fe8e2743d611a2d9748d3d25dc1c318d29c0e7b9df805e70799ea3fd4bd81aef1194908d143a0436929ac2c4a794
+DIST microsoft.aspnetcore.app.runtime.linux-x64.3.1.32.nupkg 8916775 BLAKE2B cb894741f37b0b11dc0fac0f3b0f9dc333ca9b1cb3c2805ee12aecef51f57063da090a39882c4ba6b9f62a3a63ffbc778b95207e09d1bc112c249d87f2373dea
+DIST microsoft.aspnetcore.app.runtime.linux-x64.6.0.12.nupkg 10216624 BLAKE2B 0eef3cfce00db73c90dd4690e6e93e7085364b3c3365e91a4e02e3241a7a3cb10a4e246e7616378aee2b7d6c0546c937e5e9ce96877e37a261c0dc5ec20e2c53
+DIST microsoft.aspnetcore.app.runtime.linux-x64.6.0.14.nupkg 10215906 BLAKE2B 383d925211c25ff28da2816b9c013753bb1768380421dcba2c9d05185966839d859095db467f307ca7755bb70c8b5a525907709c02075553465a6379d421e82e
+DIST microsoft.aspnetcore.app.runtime.linux-x64.6.0.16.nupkg 10217501 BLAKE2B d8a5f82f0fba2ae4d10b9cd6d0c31e52d6d43b5f99141ad452055c78699140a6018161fc049c22e5272203ba65074dc884a99117a9a2aba2c6ada2f1ef0872e1 SHA512 bfe54e8b21796517b08fdc2cd01c5b5340a7626627dfff3aa5c74fe9f7bb97a3c35b7562bd1c670a13e9cb32438e4e0445062d31c9747c04f5d38e740f2c4271
+DIST microsoft.aspnetcore.app.runtime.linux-x64.7.0.3.nupkg 10863919 BLAKE2B a5cb9378f240a6e553c0a038cef9a5d65844308ad43be3a2c8fd1b8bf3326081812f8dfac3aa642a3c17b0f1ec0a8b3cc551fadb04a1025cffa39d2ec807738d SHA512 5d5260808836083ea348d5c99e5f447eef0de117672c3b00113874e1f3b25c7eca7ae0036a10a167f788cbf5953ddaa9f3a84f9ea9944dca079b7a44c4aa7ad6
+DIST microsoft.aspnetcore.app.runtime.linux-x64.7.0.5.nupkg 10862693 BLAKE2B 211520fb7e9bd9fcfd1471c2e138f97a322ab0b846f3eafae10a46742230aba7d5ccec7c411d63db79666409b6ad65cb87256790b760aadf108f79dce7dcfc9c SHA512 edf2e134549550574dc753a075e359871be6c0c881527a6242394171958617c345ddaa8c5fab5b1d4b180e384842960e37e3998459ee642189c7b6c68aa6d7d9
+DIST microsoft.netcore.app.host.linux-arm.3.1.32.nupkg 103102 BLAKE2B fa2f26def2343aaf04b37aedcb1284f3d39b7d5b8704248fe4a7b2c913166a49b65f4997cdadbc84c359b9ac9937bca852bd960fb1a7447cd4b9e3cba38bdcba
+DIST microsoft.netcore.app.host.linux-arm.6.0.12.nupkg 4047106 BLAKE2B 0f448deee114be6331c09f5cb7b2aea66a17592e133baf720d7fbd08a1c48eb89d6ae75eda312a7e85213745bbec1c0f44055523377f9d4d2583fd6b665c21a2
+DIST microsoft.netcore.app.host.linux-arm.6.0.14.nupkg 4047281 BLAKE2B 85f0c7f197b6c2b38bfac8a9e025819fd7b6075b609fe745062d781feb81face1956991caebdbd106f9e2108fdd3c225058fc5ddc4cff3613cc5c87f3f072226
+DIST microsoft.netcore.app.host.linux-arm.6.0.16.nupkg 4047648 BLAKE2B 3b45b6df181435568af84217bfc7630128fa332796a27257f97f62589f72054430694fa275f3915cdc86c53bd44440529a49c2d3a5e5d903b1bee477743fe6e7 SHA512 f8c73d0bb36531333662d2c907cf2e44a2da6bd546e28e7be30db6235d2f5a71670625d53229405e48f3998672f72b029bcee03024818cb29ac933a13b6cc0e1
+DIST microsoft.netcore.app.host.linux-arm.7.0.3.nupkg 4048059 BLAKE2B a167cfd00e63918f80cb3bae82a21b93e8abaf22685e1602f8a007fe49e5f56747286e2203c6c846597af24ea187e323a648382a97290c0fef2d5231631977a9 SHA512 239e85f28555563aac18a59d72b0c859542a16b1d0b1c9e974f0d65ddaee4ab70fc67dc7321fe283b70d321735689f84582423bf7bc8a948fa921ce45bdbdbaf
+DIST microsoft.netcore.app.host.linux-arm.7.0.5.nupkg 4052494 BLAKE2B 554279c897b56c84d21ce18ce6fbaeca98ecdd72424b57ea68f9844ff618b2c74e7d4e9d458057d2952419d6c62bf3d336edd24b86ac568c8156f488303422d5 SHA512 e6164be4ae1c73af4f801f8da328d054c561a9f1ccd1d912f4600e36b960c06e686a49bc3903d6850d235bc785b6fe820003ccfdc3680f9ef99bcc807d7c2114
+DIST microsoft.netcore.app.host.linux-arm64.3.1.32.nupkg 95676 BLAKE2B c9bad9a8f43924b1ca0bfdad6f1499ab584bdf3f39d596c09295fa6faf676be70832518736b8ba7a3dbd91b1c5d2cb3302832b1bc1003fc408f81c01cfde6d4b
+DIST microsoft.netcore.app.host.linux-arm64.6.0.12.nupkg 4518168 BLAKE2B 85e96297f5c6513588574713e6a9ac8472b459d703300efa70f5ca159a77ed421534e0423b21a30537e8f33f5b060347dc5b4582fe1b9920095a18c8b0fe8961
+DIST microsoft.netcore.app.host.linux-arm64.6.0.14.nupkg 4518206 BLAKE2B ee31fe7b274abd19c7ae0f02c1f947f468ce6f6ba62668e6dc7f51ea8d200cadb1e602eb30cda40efb64dc0d9addf960ad7e507b4e49e39c80a21d15ac16b8be
+DIST microsoft.netcore.app.host.linux-arm64.6.0.16.nupkg 4518723 BLAKE2B a4db8b382293f10666eea023ba7125605e81b9dd0ad96813c01a568acd486b4226257632f9bb702920d0aebe5a1087e13c31c6598c87d7bfb936a6a939113775 SHA512 a5af95e905dc32eb887421441e028fa3de04adf4fec0dd7ed80f5e599cc356b22a0f3efaa8f59b8940b977b04ea80f3bfae77d55cbb37ec8b7714f4187aa8356
+DIST microsoft.netcore.app.host.linux-arm64.7.0.3.nupkg 4603807 BLAKE2B a88219202bf6a52d39cbfdf314ef477af723f54c84bec46962339ff2419de60f5b8f8f6154ef1bf8ffb1f3508fd9ca40c3aff4fe12e8133347a0dd9f8a51e1fc SHA512 622abbe1bde17424401f385c42cb54b113a36ae35ac2f7b01180331568439b48d15276ecd118fcda4fc2abc8ea691e3f3ae186162de8e1a6213b45d2f783212e
+DIST microsoft.netcore.app.host.linux-arm64.7.0.5.nupkg 4601263 BLAKE2B e86742f804e46705916af1ebcf911f248627f464ef54fc889eee14bc1e7b69bdae0dbb70235d2a2e084c51a11daed6aefb9c0caf5a1a8bf532674de57f3900c2 SHA512 23c3bc8a852aafbc30a02fa08dd44a9da135a4120df6c53bfd90bcd35372f69007c57e7e2fa6977b2dce4d0475cec214ba5ff0db3cc591511b1e62c125c09a29
+DIST microsoft.netcore.app.host.linux-musl-arm.6.0.12.nupkg 4053227 BLAKE2B 614938cda8078dacf57dfa3e7d03744c64cc616139f5bf8a5c826fca2bb5b93804f705ec9fe0a70329a894d61cddd50546e7fd38c444d52911f7fad25e8cbb21
+DIST microsoft.netcore.app.host.linux-musl-arm.6.0.14.nupkg 4053406 BLAKE2B a339643a7c243bf9ef6b0dc8c44293d9327bcee06344c03a758be4dc43b0de6274ecdfc5fb87f1d8d808644aa86b6f75aa3114edbfff6ee3cb82c239f353bbd7
+DIST microsoft.netcore.app.host.linux-musl-arm.6.0.16.nupkg 4054180 BLAKE2B 782d7ff1e495c61fb2f13eedd2010bbd6f664cb478608b7d96b32927d1059a0d7f28976fc9cc53aec18f2b3adb10384420b4de0093213d668a2c63c746e96cd1 SHA512 37523f832b09db894085351fa784e1b05a89b79d59c7288b84e1aa54e53988f07598dd05f86174b24d447b927fdd6209bfde593011f623cd072af01f2e3d95af
+DIST microsoft.netcore.app.host.linux-musl-arm.7.0.3.nupkg 4053484 BLAKE2B 87b42a48983761aff50ecf9d61700fe4648c8cef3d0c72fc8414bcd93bf4a84060c08a3354964c7fa821412a224cf305bfc0b5890b92a28483d7ec3c16bda496 SHA512 fae3f228395c946b7a4dafb88a9d99e05fa498525e75e535ea3945cddd593f92b3d12fb2dd451a55e4fe90f3c506845f767a590a75d877187d633a9259104242
+DIST microsoft.netcore.app.host.linux-musl-arm.7.0.5.nupkg 4057566 BLAKE2B 9fbe66205be4159b937f2c33d8b47fbba07b0b8d9265db057c06a2d25bffff2970f9ec871256c002895d7f248a0649b155eed133456171d397b24dd00d620cf1 SHA512 12ef936c3e79e649ecf23d8dd74b16e6714700e0899f2c21806e1a6135501a9d12de070ba399d573ec68c0a37e8d24e412a177a9a966d3023dac29abe4223ee6
+DIST microsoft.netcore.app.host.linux-musl-arm64.3.1.32.nupkg 98237 BLAKE2B bcef64f25d90180af9c03113d29fe7b4ef7a6b75f141bda9492dfd5f7d1b8f2ad47c2b6bf4ff7b9b2350a13f269072c7ddb7540d046b7bcc0f398d0c5fb4f06b
+DIST microsoft.netcore.app.host.linux-musl-arm64.6.0.12.nupkg 4525186 BLAKE2B 00638f7aaea0407cf518488ff0d68c6efe6c956e7a702c39634d24f97669961aedf317e6528861d2894dd2842c349866005a29ccbd72ca869a8d99fd15beb582
+DIST microsoft.netcore.app.host.linux-musl-arm64.6.0.14.nupkg 4525258 BLAKE2B 3f8d28810bad31de245fd09f20f0ffc00d57cf9a7b9111c86739a9cd01589c555e4195fe3dff96e5840369254562bc5505db4c72d1535cd1da34815fee72b5e0
+DIST microsoft.netcore.app.host.linux-musl-arm64.6.0.16.nupkg 4525681 BLAKE2B 4b545f4392a6f4d529e827fc0807fb21f2fd1ba5c1d68077faba45806b7af086331bbfc42ad4771ad596297920ba57be5acc2d199d287dbe12a64719516fcdbd SHA512 aee2d0892c8aa830d29489d43ed214a41f3358d222d5d6e605fcae0e14a3f07eb6ac3749f839c51fc6150e4e08017900e06029ba25696eed9daa1ecc874a6348
+DIST microsoft.netcore.app.host.linux-musl-arm64.7.0.3.nupkg 4605901 BLAKE2B 7ad548684f397356b5e45c67fd0069d19643c2a733535100eed9122de073e144c762aad932c2d7b71230d06763dcda9e6628c475f6dc8ebec1bddd8ed598649c SHA512 6f242fc2477d0f04ae23135d0927aeb9ca7f0ef7cf4a2084b2d3adaff4fa04336e55e02b829d99cbc3a1929ae4009ed668fd56c3f1e259fc20c26989fd08a1c3
+DIST microsoft.netcore.app.host.linux-musl-arm64.7.0.5.nupkg 4609393 BLAKE2B 5f480728cfb5b787943ab4d08009c143364dee3bd082708992d83ea2284e59b9a6d7587686edaf90604180292fa7e47d386cee85cdf975022a6071e7a592e358 SHA512 86c2d63d5241ecb212de69351914331428a1b4ae851db3b01b843794d31a8bfcfdd72df120c157fb9730466cfe74a870965ade9950df2b2475a8ec7e651b125b
+DIST microsoft.netcore.app.host.linux-musl-x64.3.1.32.nupkg 100602 BLAKE2B 7db8687899a5a8e752661f24f074ade915b054348261fe371b3459e71a28f5c982ded381b7197fea4824d0f3f75d69704053f65cd84ee13da04142c52557fcae
+DIST microsoft.netcore.app.host.linux-musl-x64.6.0.12.nupkg 4910982 BLAKE2B d908ac255ceddfdc107b1b47a3025282ffbc268c27bea83b67d07fa39d47707d5b72741ef24a2fd99c4de95bc87cc6a468d704818a30049973a186334d25e9e4
+DIST microsoft.netcore.app.host.linux-musl-x64.6.0.14.nupkg 4910923 BLAKE2B ec2a12068a215c1cbd798ce5573db8dfc11a36adc1c124728828c3ed4627453110ea2c58ac8cdf28542fe303a7ff9210e8ceb9ba19b3db48fb7d2d4a3d8e6069
+DIST microsoft.netcore.app.host.linux-musl-x64.6.0.16.nupkg 4911436 BLAKE2B 3608c26678169abc98517346afbf323300a53f66c42945add423edf441ec944d730082063612a1dfec0e04b3d8bc3a95ba5018a5b159f1a9c1543965cc07157f SHA512 846253d3deba80f35881d6ea57de6795e9a7ce6236db12e8abf2a2600310fd9e41c9a11df7f5418ef36abb1e81b0347c82a8863899db1d8b67fd9fef6084cfed
+DIST microsoft.netcore.app.host.linux-musl-x64.7.0.3.nupkg 4926897 BLAKE2B dd2e97ae1e0f97e35e447f96c17e8ef42a1dc2c4fdc9482b54c8f0ad02beede77da42b0d146ba51b4192716727e6f7d808d5cab986af8c1d7dc5b8f404cc7fe7 SHA512 74dc6880f6e9d63b78808d9f05328f4a01c38349be4c8e7e797ce1d6880937fe4ed2220a1038559dca34cb585e0baff4ed23ba360017edb92b3d99e942a6a2f9
+DIST microsoft.netcore.app.host.linux-musl-x64.7.0.5.nupkg 4932469 BLAKE2B 332beeb60cb08937f622294448dbc1e45997ebb00b39c801e0253d0f19a36cff90cfebb5df9345a7ce6f0566e8cf8bd0a74b2ae7ed8464084a4408fbec125da7 SHA512 c5164627a1e4c593f62bcd8043017d0ed22c6ab512ba2bf35ae57c6644eecd248a81763dc6c6a1d55dd908706103e4d19d19b9eba461ab509ec881f9b7239ec3
+DIST microsoft.netcore.app.host.linux-x64.3.1.32.nupkg 98908 BLAKE2B 744ea4bf52b5eee4dc2423f051f85fb880f5d9833758bb25a86a585179398823f79d5308f9ba7c2fa7eb65a058148866e0cccaf63e8a30b88ef79f69f7df962f
+DIST microsoft.netcore.app.host.linux-x64.6.0.12.nupkg 5005900 BLAKE2B 858561598d53c03af106af8bc4ea6e069b716de5717801d66ddd051d61975fd5b98e9c0f0bda3fb3a4482e18453ebb9543d5584024fc1027913417874539f6b7
+DIST microsoft.netcore.app.host.linux-x64.6.0.14.nupkg 5006259 BLAKE2B 2963994d1df89c66e63a87a66c7e1a70c5188817b16ce98d3ff5afc51ce87f4890ef4c40ffa161504f6118e6fe2e240fcf1358126b50f1091c9724d82c489622
+DIST microsoft.netcore.app.host.linux-x64.6.0.16.nupkg 5006764 BLAKE2B ff5c4bc39aea32d07d06d229417d4059cc4e383efe53839f0278afa0d6ded34b1b609a4da68dd5e074f7f14c815ccd33143806a8ce8327655b330ef449241d77 SHA512 dcf97632028481ee7bfee9cf35864a6006c9d97b8e767931e4ef7367495c859dc21aaf6398ffb7fe5a012a5f012cace6ac846d0d22ea251e3aa001f51e643300
+DIST microsoft.netcore.app.host.linux-x64.7.0.3.nupkg 5031819 BLAKE2B 830f7333632d2ce37edf60cc36761d0a574186403a94bd9f381097b351ce3eb04b5709865158dfa953fea2cc4aee7ffe08fe50dc489016f13c1b773dbd6d59dd
+DIST microsoft.netcore.app.host.linux-x64.7.0.5.nupkg 5035907 BLAKE2B 271ef42314f63ad0f869e5536395aab71b5bc7a4abba3e9438e9855ce5d02760b7c58233fd81ef5e709efa507a3d17095718cab9c60bb680ba3b90449940549b SHA512 ba915f5e0229efdb906ffa8fa292c761b2985b2d853c95935d539fd3dd63f25e28097cc67b8e7e4d3c54e419b7321a50e635716cf3b2f2349f8cc189223f490d
+DIST microsoft.netcore.app.ref.3.1.0.nupkg 3892619 BLAKE2B 6d2cd21096726a0fa0b48199544ac4427dcfd502bcf86661415d51d23ad06e248a21854507b37c00dd50e716989327e90233fa5c1574e21e8279bd893c2aa139
+DIST microsoft.netcore.app.ref.6.0.12.nupkg 4764711 BLAKE2B c552af26f0c31091b928d355a5da626c2978407c71959c1afd4efb544c62dc6e9005b4211a44609dd3c5640b25c7cf91a124c45561ce45079866e532a1c6f9fe
+DIST microsoft.netcore.app.ref.6.0.14.nupkg 4762992 BLAKE2B 7b353af2107f40697bbe17e046489132be29eaffc25dc16cc21994967fdbf8bb35b0775348c9a2149e0d4a09666ded0df8af4e69a35667873cdb5986910b423c
+DIST microsoft.netcore.app.ref.6.0.16.nupkg 4763850 BLAKE2B 84e544ad861f9c60945d5da71a18b7fbf6a92849bdd0d198148538ea006e5ba15d39804952e906ea95eb4bb9dc0ac1e06e4606f7ef90a4c04c26463b5e244c2f SHA512 62782cccfc95ae35d8bf1b47ed7bc61191bf221618dd3dd616b5d06f4f8abcad37ca7f1b34984094c9bfd12b8cac00d82fb2958fbd53f94124c241eb4af90f98
+DIST microsoft.netcore.app.ref.7.0.3.nupkg 5915062 BLAKE2B 5de9d745cebaf474cfc9298cadde73ef020a979a2dc0b3eb0df522778bdc57154cebdf321ff29f9621f352d1e941b1fbf3ae367c73459d5cefc58ee2d2dd76d1
+DIST microsoft.netcore.app.ref.7.0.5.nupkg 5915500 BLAKE2B f99802467609db912bedf8ada9c0a6fdc8b39c2e93c7173e9532d022629bf86c1dfb5d91ec79bdf856b6ede1b79c6c50d944267c37281b27c70f0d9e23a7efbb SHA512 2710e231ef0c1f4c1847ce435da67719223413443ee0c1ca68adb45c9f024e848aa187442b5cce63140e59aed46111b9d5b80e673fa391dc5c95e49338eb6b7c
+DIST microsoft.netcore.app.runtime.linux-arm.3.1.32.nupkg 37758463 BLAKE2B c9104f3641882b35bc7f4b7e9bdabe0e7a49cdedc0d3a9499dc984d91bdfb04605fc73b5f35d8875cd3faa3cc74b3c5bab22bc9850d90fab35809288ff6f2274
+DIST microsoft.netcore.app.runtime.linux-arm.6.0.12.nupkg 33359309 BLAKE2B bca1c7a20ac5867ac977892b204b8affe4e63d2330a3cf177e28393c485d60f1ffdbf79921dcc41d30f06610a0697376dcbc0735e50d9a4fe8d1c5d0ac4daa62
+DIST microsoft.netcore.app.runtime.linux-arm.6.0.14.nupkg 33360488 BLAKE2B 9d250a5b0e24405c42806529fbd33674d50041770c37543363158376ef7bb6773990987de5537ce991a51ae3651a408877793a222af9a33bf765f14a9e428565
+DIST microsoft.netcore.app.runtime.linux-arm.6.0.16.nupkg 33369636 BLAKE2B 7d0b893644515313e8fb3b4893e004d79c07938fd70e2ab7a3661440a6a7cb8ddb4d9d7bb9e0eea815b6913be146b3c6a2e32e7ae1d54bf8396d85bdc8685821 SHA512 a260b56736b04b191b99ab19222650aff493061da8a98aaedb6fb3ea665cfd972cf937546c387b74885f1f877dff7d5f1064ce9f0a4be58953f94d2478fdbdde
+DIST microsoft.netcore.app.runtime.linux-arm.7.0.3.nupkg 32429549 BLAKE2B 75964c2131b6375d67613366f0b31432853f2b2b5a8927da726474b502cae4e644453e9081b6c7bf94b210336e180eeb824a09993a12dba226a2f4281f4c2b48 SHA512 33dce0732a115e8b598edc0df37643f6d88aaa9885ac58653394b42131833aea2d71c54c69a4fa6aec2ea03064ce1414eb98c4dd1a1c74a9fc5f57376c8e7796
+DIST microsoft.netcore.app.runtime.linux-arm.7.0.5.nupkg 32438987 BLAKE2B 996cf70b6d0b46fea8a08e76f40e45c73f22a8840ac325444149a6471c0349f4ba97a7e16bd7d523b12f27b37a8e15931cb66e1bd09b1f4f160a0851ae5ab2f3 SHA512 b5190ef75194ab0eb468490fb66aa31225cb982846bafcfe24120e9e937118d59f6d133685a41bd94129b0646264044c3fbf375ed6111a1719fd298584c811ba
+DIST microsoft.netcore.app.runtime.linux-arm64.3.1.32.nupkg 36264275 BLAKE2B 691f93cba8790dac3084f951e71958cd18ebfc0ba5aba6a523b020abda0370dd51ab368f295552634c9269ee3377b6d637e7d0995989586ba0d7c26547754ec8
+DIST microsoft.netcore.app.runtime.linux-arm64.6.0.12.nupkg 33179994 BLAKE2B 4ba884a2968f94390bfa8397dcd6884b31427818bcbc87c4edb5d531d5a349198560cb635f9b3898bc5818aaabdeea92838d82912f8e1cb9c87e41d044c7bf80
+DIST microsoft.netcore.app.runtime.linux-arm64.6.0.14.nupkg 33179539 BLAKE2B 7ff0a2f31e21027f6f8054a02bf48d1a831d0bbe36a32e3de86de6bc8d96982ce38f627613096a7478585ab1b4ee909362850a1bee260d883061a272f73c7bba
+DIST microsoft.netcore.app.runtime.linux-arm64.6.0.16.nupkg 33190706 BLAKE2B 8a1d17c8cfc771e9494c5b645f80b86ef149f01ed56559ea5d6782af28deb2e185d6ed784d9ebaf1a2e24917a687a6134febcb565340c3211f3cbe48fc7813f7 SHA512 925342e71f180adc4824c8b9e26aaed0b5c7167476c1d326389215f32aff70f204546ec52cfd0560cfe5235ffe16d7be35fdf0ca86de87fa6b64149fef62227e
+DIST microsoft.netcore.app.runtime.linux-arm64.7.0.3.nupkg 32474994 BLAKE2B 0fe00301f3fd87234d94dfa400d4390d862e8fa5bd344e24644e53807f4817dfe7a02f42f5517f964ba9d85d09eaeb0ae54d1eccb23995bb665a95a9a6dcbaf9 SHA512 49f15b132aa6a48b318304450ee94afbec8580ba2b46ac2c8a6800237ca6b1b59b74e7f3fa5fc4020909d99f267863f0f8733debf1a6da3679ac8b1f42d525e0
+DIST microsoft.netcore.app.runtime.linux-arm64.7.0.5.nupkg 32485155 BLAKE2B 7c9e48036d00ff39cfb57ec389ccb4f9b7a656247a3316c69135fa4d62a3f14f0560da02d25483eda0bf838989c416d4c241a5d144f523cb499032bb676f5c56 SHA512 68333bc5e936477c387696245f4131c6b14f392f34d0acd4c7a938de1518e7243cd7d65f82d9394c02a2e0198d39d436dff4b0872e6b6580b81c8d6d128ea18b
+DIST microsoft.netcore.app.runtime.linux-musl-arm.6.0.12.nupkg 33383910 BLAKE2B 234d6886fe8ea0de25d0325991973976729e4d9a09eafc286ed50c7d07eee7a61842ba5ce3d3ca4a44c0c18c3ecd5ad424544dfcc77ae1d1905e2e890cbab4f4
+DIST microsoft.netcore.app.runtime.linux-musl-arm.6.0.14.nupkg 33385451 BLAKE2B 44660ca8778c39e168953872b07cb3ab0d19f20d8072d01c99ae51f8e66d30dbb6fe210c6a8f8480e4278c1ea1bdf94a28ef165391784f93d5360b1f1bb3351f
+DIST microsoft.netcore.app.runtime.linux-musl-arm.6.0.16.nupkg 33395418 BLAKE2B 89c77458a9944eba5d4ffc2fb80255f1871281ede6baf317e15a84ae623f2f93bb8d19dbc3c093fe36bd17dc91bf94d4f2855ad744fb6f4e96f98c13b9e0cc68 SHA512 8d0aed8369154eff7c5a3ff80dadf31ce03590a80335a216db7bd8f986abbe3d341b71fe5902d3217d37015ec15606cfe34069a118c8600bae02801b1c783442
+DIST microsoft.netcore.app.runtime.linux-musl-arm.7.0.3.nupkg 32438022 BLAKE2B 66138b0b0eca0639b4a09ade2ef0af05e6696138c80e1d6d9f706b8bb07f4f570bc7ed409866cef792cbcff3315bd9c3d6214086038ba4420afa878bb1eef70c SHA512 388e825f891fbcd1b2c5c7db5f5db39772ed5fda349238c40de935f62bd76e5589df0d98a7e5fe7780026aa0fe5a8c0a469d71a481b0647ef57b334fba3cfbca
+DIST microsoft.netcore.app.runtime.linux-musl-arm.7.0.5.nupkg 32447520 BLAKE2B 6c74ef3bbe0cd026f45b8f95ca67f877d7cee3a83d08635698b5b1ecf4cf1f432cc7d09e7a692343acf3e92872db36c280680492774b109986e0a6809cc9b7bf SHA512 b59ca64f34455fb34dda953ed960fbc27bb237b0cef1eab6c08abf951f4e71cddd1e209eed2a5a0af0d2507bfe02243b3e2614993a9490259619b4ae70cf1499
+DIST microsoft.netcore.app.runtime.linux-musl-arm64.3.1.32.nupkg 36435184 BLAKE2B 1b43e07f1e2e7c5c1e27d8b3da9db6fd97fe9cdc6b19c5b25fdf023e73d1c9c5fef545f4e174ef64053295bc532dea7ef0e9064d5d8d452f90ec141dee621475
+DIST microsoft.netcore.app.runtime.linux-musl-arm64.6.0.12.nupkg 33196731 BLAKE2B 7ac6b3c0502b3dc6b168d5f3d016f1293b5e4df150eb3da044e6cb3c0394b2246c378ba94fbea61e6358fb0c1085cbbc446d3d4b921f3b5f7c64e14371b9b60b
+DIST microsoft.netcore.app.runtime.linux-musl-arm64.6.0.14.nupkg 33196306 BLAKE2B c68f52491af188a2397efdadcbb3978518d80672a7668858aedafa3ad16d7140c3738aed6a6166f4f7daab0b23d32ce63636935a034db2af9b6a5253b711fb14
+DIST microsoft.netcore.app.runtime.linux-musl-arm64.6.0.16.nupkg 33207154 BLAKE2B 1521b64303b5b377b33a445e9a08b17c616e2ac9f95ee2e8f68d93b5e1448d11f2d6bf65ccaaacc1f19c92bd82353a0c4429ce2795e88f94b282745bfaafa0e8 SHA512 b4d2cea96e93d812d745aa2016321da5f8e7311d1a5d2533aae235818c4c194f71631b934284b17850576c5f72911fb00aef2982e91967bc0bb258eb705ad155
+DIST microsoft.netcore.app.runtime.linux-musl-arm64.7.0.3.nupkg 32476105 BLAKE2B 3172134b8ad06fb34e91534b6ae564588f0b414704d89c5b959d81b2e41dc4cc07b4e24a0cc5bf84aab84bf1f3e0c10536b0dec13b49cc00eb6b80f1989f8e3b SHA512 cbde90576df46545e400870532e40640699ce5435354728323e9d6574292c5ea7d4ff9be2c9f639603fc95f96b7b677ce19b099df6a3b39f00f9b079bb6d22b4
+DIST microsoft.netcore.app.runtime.linux-musl-arm64.7.0.5.nupkg 32487083 BLAKE2B 9e068659f1b78cee6d4469c455c450b734c91e3d2c4a7473717c9d499c41e7005455677fe4c83cefcb42befbd05704728d2cc1ffaa1840a58d5af1668e0a6a8d SHA512 29e2ed9e5687ccaf368cd96425f619a553d524f8a9f99b53f5aeb11a2df178d3f21fc0752b4c4240483c6a84a5574c2f296b86e596a66e6c87834a3744ca8345
+DIST microsoft.netcore.app.runtime.linux-musl-x64.3.1.32.nupkg 33873328 BLAKE2B b64108e5bc193608adbb98662982d64480354c7295d82e97290a643b9f6445aa3799ecfd5f1fe7b1bee83248bec88bf43c71f3dc642fa9b1672bb594d6369072
+DIST microsoft.netcore.app.runtime.linux-musl-x64.6.0.12.nupkg 32804692 BLAKE2B ff3768e4ed7104757d5df619ca261a307ceaa4e01e34ecde1e8ada8ce8c319506a1f065c6debf95771dc0d3c35143292a9a63d7bf8097fd8e9828a7952c7d30d
+DIST microsoft.netcore.app.runtime.linux-musl-x64.6.0.14.nupkg 32804875 BLAKE2B 3bb95a216007756309a45bdef4b4be88543ff79b95f3e08d8e949000964d784989d1879ff6cfb5eb526eff3650472d5bb525862237b447eaebba0e04d05631e6
+DIST microsoft.netcore.app.runtime.linux-musl-x64.6.0.16.nupkg 32813762 BLAKE2B 3aff826e4991420104bd2b23ad65783e55e88415e80ff3b5d9fa836e65f67fb6fc54ff7cf9c102731cca03258d0d14354eab4e8aa30a75376a633d7a1f594a73 SHA512 814ae8a46e9c8d252f60bd1e67e87c08c3a8991c1e6c9fdb97b1856818be4b265b9e7ad9caab83d74c8fce6d37efb0d7ee741adfceb711f4ac90f6064f5352e8
+DIST microsoft.netcore.app.runtime.linux-musl-x64.7.0.3.nupkg 33766650 BLAKE2B 76934900181641cd66ddef7c2bbdb0eeb80b2e2bf83085dc6331d2a6cb87e8b57935f85075e9999d6567dbfba6da956f47d72600b983fe15ba52d01d0d8223ad SHA512 085db738f5baa52ce962bc91b2b67d48196d7ae578597ba4a067036bec3e68f6fad2bfe0dd09e4a16af69173d861c90379f6d5b477b8f2835f20d8e55a4818a8
+DIST microsoft.netcore.app.runtime.linux-musl-x64.7.0.5.nupkg 33777492 BLAKE2B bc37edf5b9a1c1ea0bf2b1be7a5e4ceea247ed302b18d890337dadaa6387eb47829d8519aa5ee79d0db4c3fefbd7eed7a982fddb066d0ecc37937e6e04efb981 SHA512 60b7f39ea4e655f9429bf786dddf377d218d9b88fa8579ff0a5851c781642e6502579ef3d2973250a0672a2dbb1710fba9ddcffdd488eaf7e94ad53bfc2af051
+DIST microsoft.netcore.app.runtime.linux-x64.3.1.32.nupkg 33393085 BLAKE2B 5d3cc8d71889d7b25af31b54b735dabd229a12748be8cd4ab8aeef81331faac358813f15dee70c65fae7f3a64fd1156cffedf96577826c0b7120fed53bfc18ca
+DIST microsoft.netcore.app.runtime.linux-x64.6.0.12.nupkg 33224601 BLAKE2B eef5b6090c3839358f0644d6320c9ef2a73173ac1002043bb09b22256b6fe155c891ed16732916e9554e3423943f66b87b78bcf359a630f684af760edaeae28d
+DIST microsoft.netcore.app.runtime.linux-x64.6.0.14.nupkg 33224625 BLAKE2B dfdc44ed88a55385dfc0a11e9033d700ee9acef453e3348fde22a7df50f7436ed7064e0a4513105e29ca13798e55e00f5aad6f03ee77d079c11ef796053e3d01
+DIST microsoft.netcore.app.runtime.linux-x64.6.0.16.nupkg 33233680 BLAKE2B 71597c75faf589d420c4884930106bbd73c253df862351f1fbce1dbf85c67ee21c8ba5fbc9a3bdc2a6e26f09695d6f5b89373b7ab95469a22d6b87416b8e2c10 SHA512 b1a2a1e397404f2f5abaf9299d5da50c10ad192e0dacd015b5ec8d7c65a960d29da91f221b6067e35cd22b0a88a70465ef08c93fb294c9b166d6ec47461c541b
+DIST microsoft.netcore.app.runtime.linux-x64.7.0.3.nupkg 34178303 BLAKE2B 636bae8ee7e1f257b95849693cce4bc4f85b55a2489677eaa31e7897b93011cbf65f746adb86789a0d42f0d387b953bce36f29c4c0a87c047dc927826049298d SHA512 8e82d6cc1c72b1fb098e857d66e9a0445ac99f66d9f94ecdb5c68f398bf71f95783982c7e33f8ca0869778fcba8e9f3d78dacd93003c715f11fa5f987fff10ac
+DIST microsoft.netcore.app.runtime.linux-x64.7.0.5.nupkg 34188538 BLAKE2B 5ddc52de91081a31d2a3cdcd8152b2deba21a59cd34ac71e5828e254bd714247d0682daa90e48726a4f737f3133d98e33585ea0b694dd2475dda68c8b95115b7 SHA512 3b27892f653aaa797fdef286ad57365dcb1a8ce403e0baa924f22b76f8a686a502024022d5c9d04548fba16e38ebc4395b732b9605b2a346b1cb050d7c52d53e
diff --git a/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-3.1.32.ebuild b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-3.1.32.ebuild
new file mode 100644
index 0000000000..2ce83f4d60
--- /dev/null
+++ b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-3.1.32.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOTNET_COMPAT=$(ver_cut 1-2)
+NUGETS="
+microsoft.aspnetcore.app.ref-3.1.10
+microsoft.aspnetcore.app.runtime.linux-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-x64-${PV}
+microsoft.aspnetcore.app.runtime.linux-x64-${PV}
+microsoft.netcore.app.host.linux-arm-${PV}
+microsoft.netcore.app.host.linux-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-x64-${PV}
+microsoft.netcore.app.host.linux-x64-${PV}
+microsoft.netcore.app.ref-3.1.0
+microsoft.netcore.app.runtime.linux-arm-${PV}
+microsoft.netcore.app.runtime.linux-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-x64-${PV}
+microsoft.netcore.app.runtime.linux-x64-${PV}
+"
+
+inherit dotnet-pkg-utils
+
+DESCRIPTION=".NET runtime nugets"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="$(nuget_uris)"
+S="${WORKDIR}"
+
+LICENSE="MIT"
+SLOT="${DOTNET_COMPAT}/${PV}"  # WARNING: Mixed NUGETS versions.
+KEYWORDS="~amd64 ~arm ~arm64"
+
+src_unpack() {
+	:
+}
+
+src_install() {
+	nuget_donuget "${DISTDIR}"/microsoft.*.ref.*.nupkg
+	nuget_donuget "${DISTDIR}"/*$(dotnet-pkg-utils_get-runtime)*.nupkg
+}
diff --git a/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.12.ebuild b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.12.ebuild
new file mode 100644
index 0000000000..f764b4c6be
--- /dev/null
+++ b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.12.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOTNET_COMPAT=$(ver_cut 1-2)
+NUGETS="
+microsoft.aspnetcore.app.ref-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-x64-${PV}
+microsoft.aspnetcore.app.runtime.linux-x64-${PV}
+microsoft.netcore.app.host.linux-arm-${PV}
+microsoft.netcore.app.host.linux-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-arm-${PV}
+microsoft.netcore.app.host.linux-musl-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-x64-${PV}
+microsoft.netcore.app.host.linux-x64-${PV}
+microsoft.netcore.app.ref-${PV}
+microsoft.netcore.app.runtime.linux-arm-${PV}
+microsoft.netcore.app.runtime.linux-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-x64-${PV}
+microsoft.netcore.app.runtime.linux-x64-${PV}
+"
+
+inherit dotnet-pkg-utils
+
+DESCRIPTION=".NET runtime nugets"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="$(nuget_uris)"
+S="${WORKDIR}"
+
+LICENSE="MIT"
+SLOT="${PV}/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64"
+
+src_unpack() {
+	:
+}
+
+src_install() {
+	nuget_donuget "${DISTDIR}"/microsoft.*.ref.${PV}.nupkg
+	nuget_donuget "${DISTDIR}"/*$(dotnet-pkg-utils_get-runtime)*.nupkg
+}
diff --git a/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.14.ebuild b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.14.ebuild
new file mode 100644
index 0000000000..f764b4c6be
--- /dev/null
+++ b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.14.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOTNET_COMPAT=$(ver_cut 1-2)
+NUGETS="
+microsoft.aspnetcore.app.ref-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-x64-${PV}
+microsoft.aspnetcore.app.runtime.linux-x64-${PV}
+microsoft.netcore.app.host.linux-arm-${PV}
+microsoft.netcore.app.host.linux-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-arm-${PV}
+microsoft.netcore.app.host.linux-musl-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-x64-${PV}
+microsoft.netcore.app.host.linux-x64-${PV}
+microsoft.netcore.app.ref-${PV}
+microsoft.netcore.app.runtime.linux-arm-${PV}
+microsoft.netcore.app.runtime.linux-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-x64-${PV}
+microsoft.netcore.app.runtime.linux-x64-${PV}
+"
+
+inherit dotnet-pkg-utils
+
+DESCRIPTION=".NET runtime nugets"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="$(nuget_uris)"
+S="${WORKDIR}"
+
+LICENSE="MIT"
+SLOT="${PV}/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64"
+
+src_unpack() {
+	:
+}
+
+src_install() {
+	nuget_donuget "${DISTDIR}"/microsoft.*.ref.${PV}.nupkg
+	nuget_donuget "${DISTDIR}"/*$(dotnet-pkg-utils_get-runtime)*.nupkg
+}
diff --git a/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.16.ebuild b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.16.ebuild
new file mode 100644
index 0000000000..f764b4c6be
--- /dev/null
+++ b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-6.0.16.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOTNET_COMPAT=$(ver_cut 1-2)
+NUGETS="
+microsoft.aspnetcore.app.ref-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-x64-${PV}
+microsoft.aspnetcore.app.runtime.linux-x64-${PV}
+microsoft.netcore.app.host.linux-arm-${PV}
+microsoft.netcore.app.host.linux-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-arm-${PV}
+microsoft.netcore.app.host.linux-musl-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-x64-${PV}
+microsoft.netcore.app.host.linux-x64-${PV}
+microsoft.netcore.app.ref-${PV}
+microsoft.netcore.app.runtime.linux-arm-${PV}
+microsoft.netcore.app.runtime.linux-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-x64-${PV}
+microsoft.netcore.app.runtime.linux-x64-${PV}
+"
+
+inherit dotnet-pkg-utils
+
+DESCRIPTION=".NET runtime nugets"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="$(nuget_uris)"
+S="${WORKDIR}"
+
+LICENSE="MIT"
+SLOT="${PV}/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64"
+
+src_unpack() {
+	:
+}
+
+src_install() {
+	nuget_donuget "${DISTDIR}"/microsoft.*.ref.${PV}.nupkg
+	nuget_donuget "${DISTDIR}"/*$(dotnet-pkg-utils_get-runtime)*.nupkg
+}
diff --git a/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-7.0.3.ebuild b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-7.0.3.ebuild
new file mode 100644
index 0000000000..f764b4c6be
--- /dev/null
+++ b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-7.0.3.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOTNET_COMPAT=$(ver_cut 1-2)
+NUGETS="
+microsoft.aspnetcore.app.ref-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-x64-${PV}
+microsoft.aspnetcore.app.runtime.linux-x64-${PV}
+microsoft.netcore.app.host.linux-arm-${PV}
+microsoft.netcore.app.host.linux-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-arm-${PV}
+microsoft.netcore.app.host.linux-musl-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-x64-${PV}
+microsoft.netcore.app.host.linux-x64-${PV}
+microsoft.netcore.app.ref-${PV}
+microsoft.netcore.app.runtime.linux-arm-${PV}
+microsoft.netcore.app.runtime.linux-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-x64-${PV}
+microsoft.netcore.app.runtime.linux-x64-${PV}
+"
+
+inherit dotnet-pkg-utils
+
+DESCRIPTION=".NET runtime nugets"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="$(nuget_uris)"
+S="${WORKDIR}"
+
+LICENSE="MIT"
+SLOT="${PV}/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64"
+
+src_unpack() {
+	:
+}
+
+src_install() {
+	nuget_donuget "${DISTDIR}"/microsoft.*.ref.${PV}.nupkg
+	nuget_donuget "${DISTDIR}"/*$(dotnet-pkg-utils_get-runtime)*.nupkg
+}
diff --git a/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-7.0.5.ebuild b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-7.0.5.ebuild
new file mode 100644
index 0000000000..f764b4c6be
--- /dev/null
+++ b/dev-dotnet/dotnet-runtime-nugets/dotnet-runtime-nugets-7.0.5.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOTNET_COMPAT=$(ver_cut 1-2)
+NUGETS="
+microsoft.aspnetcore.app.ref-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.aspnetcore.app.runtime.linux-musl-x64-${PV}
+microsoft.aspnetcore.app.runtime.linux-x64-${PV}
+microsoft.netcore.app.host.linux-arm-${PV}
+microsoft.netcore.app.host.linux-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-arm-${PV}
+microsoft.netcore.app.host.linux-musl-arm64-${PV}
+microsoft.netcore.app.host.linux-musl-x64-${PV}
+microsoft.netcore.app.host.linux-x64-${PV}
+microsoft.netcore.app.ref-${PV}
+microsoft.netcore.app.runtime.linux-arm-${PV}
+microsoft.netcore.app.runtime.linux-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm-${PV}
+microsoft.netcore.app.runtime.linux-musl-arm64-${PV}
+microsoft.netcore.app.runtime.linux-musl-x64-${PV}
+microsoft.netcore.app.runtime.linux-x64-${PV}
+"
+
+inherit dotnet-pkg-utils
+
+DESCRIPTION=".NET runtime nugets"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="$(nuget_uris)"
+S="${WORKDIR}"
+
+LICENSE="MIT"
+SLOT="${PV}/${PV}"
+KEYWORDS="~amd64 ~arm ~arm64"
+
+src_unpack() {
+	:
+}
+
+src_install() {
+	nuget_donuget "${DISTDIR}"/microsoft.*.ref.${PV}.nupkg
+	nuget_donuget "${DISTDIR}"/*$(dotnet-pkg-utils_get-runtime)*.nupkg
+}
diff --git a/dev-dotnet/dotnet-runtime-nugets/metadata.xml b/dev-dotnet/dotnet-runtime-nugets/metadata.xml
new file mode 100644
index 0000000000..08bae967b8
--- /dev/null
+++ b/dev-dotnet/dotnet-runtime-nugets/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+
+<pkgmetadata>
+  <maintainer type="project">
+    <email>dotnet@gentoo.org</email>
+    <name>Gentoo Dotnet Project</name>
+  </maintainer>
+</pkgmetadata>
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: new package
  2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
                   ` (2 preceding siblings ...)
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 4/7] dev-dotnet/dotnet-runtime-nugets: new package Maciej Barć
@ 2023-07-16 12:38 ` Maciej Barć
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism Maciej Barć
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 12:38 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

Bug: https://bugs.gentoo.org/900597
Bug: https://github.com/gentoo/gentoo/pull/29309
Signed-off-by: Maciej Barć <xgqt@gentoo.org>
---
 app-eselect/eselect-dotnet/Manifest           |  1 +
 .../eselect-dotnet-0.1.0.ebuild               | 25 +++++++++++++++++++
 app-eselect/eselect-dotnet/metadata.xml       |  9 +++++++
 3 files changed, 35 insertions(+)
 create mode 100644 app-eselect/eselect-dotnet/Manifest
 create mode 100644 app-eselect/eselect-dotnet/eselect-dotnet-0.1.0.ebuild
 create mode 100644 app-eselect/eselect-dotnet/metadata.xml

diff --git a/app-eselect/eselect-dotnet/Manifest b/app-eselect/eselect-dotnet/Manifest
new file mode 100644
index 0000000000..9cf36cadf1
--- /dev/null
+++ b/app-eselect/eselect-dotnet/Manifest
@@ -0,0 +1 @@
+DIST eselect-dotnet-0.1.0.tar.bz2 7788 BLAKE2B 141e5a2fc765454682de60a6a337d6634766b4dd76f218606e2f4eb18960fdcf8940b954deda2fb6b0903f72b161513936c1d767210883316c32200704188945 SHA512 879281ffff019d1e4a8a5ee3d3e6b6de3446ba573d253a5b3b0c59aa9faffcd6eb4382066e1752e18cb4e48c3e14340a278b2189c2674b1baa258ceb3980d13a
diff --git a/app-eselect/eselect-dotnet/eselect-dotnet-0.1.0.ebuild b/app-eselect/eselect-dotnet/eselect-dotnet-0.1.0.ebuild
new file mode 100644
index 0000000000..3923b1a5a3
--- /dev/null
+++ b/app-eselect/eselect-dotnet/eselect-dotnet-0.1.0.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Eselect module for management of multiple dotnet versions"
+HOMEPAGE="https://gitlab.gentoo.org/dotnet/eselect-dotnet/"
+
+if [[ ${PV} == *9999* ]] ; then
+	inherit git-r3
+	EGIT_REPO_URI="https://gitlab.gentoo.org/dotnet/${PN}.git"
+else
+	SRC_URI="https://gitlab.gentoo.org/dotnet/${PN}/-/archive/${PV}/${P}.tar.bz2"
+	KEYWORDS="~amd64 ~arm ~arm64"
+fi
+
+LICENSE="GPL-2+"
+SLOT="0"
+
+RDEPEND="app-admin/eselect"
+
+src_install() {
+	insinto /usr/share/eselect/modules
+	doins dotnet.eselect
+}
diff --git a/app-eselect/eselect-dotnet/metadata.xml b/app-eselect/eselect-dotnet/metadata.xml
new file mode 100644
index 0000000000..08bae967b8
--- /dev/null
+++ b/app-eselect/eselect-dotnet/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+
+<pkgmetadata>
+  <maintainer type="project">
+    <email>dotnet@gentoo.org</email>
+    <name>Gentoo Dotnet Project</name>
+  </maintainer>
+</pkgmetadata>
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism
  2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
                   ` (3 preceding siblings ...)
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: " Maciej Barć
@ 2023-07-16 12:38 ` Maciej Barć
  2023-07-16 12:58   ` Sam James
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 7/7] dev-dotnet/dotnet-sdk-bin: drop old Maciej Barć
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 12:38 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

Bug: https://bugs.gentoo.org/900597
Bug: https://github.com/gentoo/gentoo/pull/29309
Signed-off-by: Maciej Barć <xgqt@gentoo.org>
---
 dev-dotnet/dotnet-sdk-bin/Manifest            | 36 ++++++----
 .../dotnet-sdk-bin-6.0.402-r3.ebuild          | 65 ++++++++++++++++++
 .../dotnet-sdk-bin-6.0.404-r1.ebuild          | 65 ++++++++++++++++++
 .../dotnet-sdk-bin-7.0.200-r1.ebuild          | 66 +++++++++++++++++++
 .../dotnet-sdk-bin-7.0.203.ebuild             | 66 +++++++++++++++++++
 dev-dotnet/dotnet-sdk-bin/metadata.xml        |  6 +-
 6 files changed, 287 insertions(+), 17 deletions(-)
 create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
 create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild
 create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild
 create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild

diff --git a/dev-dotnet/dotnet-sdk-bin/Manifest b/dev-dotnet/dotnet-sdk-bin/Manifest
index 0db1365533..34d9d16893 100644
--- a/dev-dotnet/dotnet-sdk-bin/Manifest
+++ b/dev-dotnet/dotnet-sdk-bin/Manifest
@@ -1,12 +1,24 @@
-DIST dotnet-sdk-6.0.404-linux-arm.tar.gz 181563995 BLAKE2B ff359d26264f0298d6210a2b7ae8cd0f1b577bf9937aaff09805f361e54349bdab5338182b674c81c8cb330c90f7a17a601ccce899e63f2e837a90bfd02c3726 SHA512 1b9b5e0c45f90a4c752bf6990e5dda4110403a62392dc78abf9145c69b1d329b2630945a88cb4d7756322b188b7f4a9334bfc376067edff5dcfabfd85098d7d8
-DIST dotnet-sdk-6.0.404-linux-arm64.tar.gz 180324700 BLAKE2B 33780337294f427da0b8d44d8a3819c4276c0b01ffefe5a846cc5524039a5af203a231fe5893c63dce5b1557cd1288c4cb3e1d93505320a49eeccd4fd22cefe7 SHA512 7c58595aa57b655ff5a268ae4fc680ff3fb15a84dcc0ce84ae7eb25ba27bf66f0c5273c985f15034583f5b05437a5354db68c4064953030dc4caebb11339ac76
-DIST dotnet-sdk-6.0.404-linux-musl-arm.tar.gz 182613890 BLAKE2B f0475535f703a80c23a881ef578eeac87923586b27bcc7ed018b75aa88dccc84dcbd9e20543b1e502e0e800b947afd8e6bbc3a44b4101ad786674d0ad2fb196a SHA512 d7818ea567db81832cfeed5057c42255d2f19750a741a2cbc57e2d7134267a27e9937f86846b30f393c6f0ad2dbf0f4c73a902ed78b0de56138f077f62f34686
-DIST dotnet-sdk-6.0.404-linux-musl-arm64.tar.gz 180323728 BLAKE2B ff32a89653f265df2fda39dc0bb2ff6853e6fced029fb1a16096436a7876ad061e55a1d45fd29f395e4d6585f67cde2e5d95b0c0c2bbaec2b073cfd2785c87e5 SHA512 999220f7247881d44c7f5a429b25c04d31044a1b91af5ede3f899df142af2d9f056a4ac6058c9e56f14b014a479f3a7455bd499f42f8e0f9b4fcacfeabc023b5
-DIST dotnet-sdk-6.0.404-linux-musl-x64.tar.gz 185037621 BLAKE2B 0ff97d56c4d061cb5f227c745afb34cf462c286f4c0347224885360cec861dfd59f90a6ef85571c49aa79b12d558111b07a29ac48451739f721e5b13d45f94c1 SHA512 5313d8cbb41e27f462a141914f852e3d3e729886ce063be82778e1444df2d44dadcd2829f60ae97ae300d19798fab9d3b3932a7d9b9d00e948a80ccebbf5e106
-DIST dotnet-sdk-6.0.404-linux-x64.tar.gz 185546757 BLAKE2B ce8447f82b93880c6491e06fd35d556b880f59403fd7c6161d228271de6bffc6c74810e5ec5d834e35a715b9bc6173cb028aeb443bd28717a2d8838b543eec9f SHA512 7a0f4b308d3fe98df9b426b0f8f8fb7bd7247244af3570e867a3969349c62c7ea4c6da81a1a2280788e300784167a2933db523f461985aef0681e0cf14bf8f0d
-DIST dotnet-sdk-7.0.200-linux-arm.tar.gz 192996891 BLAKE2B 43c271a53d2eeebfbbeb7702e0c7a203960b57246f4b1f557d78391abdf10d0cca87c7ee364a37151f8e9e91df53e427df077a7cc25e1ccce5ac5d37fc73bc3a SHA512 7b1072c8080a0f38946d207945417dbeea4cbb688c2ea2dba1cb31330da15652da0823d8571c063a08830fe2157dbacb635eb2a8c7f20033cd1b8a35a9cfde36
-DIST dotnet-sdk-7.0.200-linux-arm64.tar.gz 193106712 BLAKE2B 5db6eab8bf56a85a15e6107bd4bca0dd4669d9eb2b3db287b8aa7621e38e07ce213c8e2446add010623b78b7092c0658d17bf4c90a059440778519e5aa117a9e SHA512 2990b7d2b23adb2b2621786ba774450e8cf73bf872173ab57026d7658599accdb5a4cefb5292945e264408f833503210621ed787c8d77eb467d3b204da8073a8
-DIST dotnet-sdk-7.0.200-linux-musl-arm.tar.gz 192955116 BLAKE2B 5b5549e158ebc7059b123d601566efddaacd04aa6ee531699b3c70327b2f2005ed11cbb7dea7b9a8a9c5f792fcc7461ea34b0a33a81828b4085327f219224d19 SHA512 1e4f9160cb93ca9704015e787491bf78c5850c2a0aa7f5794b35f607f6f342903c9d8aa182593133d6609d5b9aded9bed769855213e0464311f357a65df0a640
-DIST dotnet-sdk-7.0.200-linux-musl-arm64.tar.gz 192893152 BLAKE2B ea793eebc9d414f5f8dd0c4a1b2c0330bf762db8fb1626aaa97d84b8fffe2a6b8d85f8cf735467dd49d6f588cd17254dad7ced926410f7e26488da08e0bb593a SHA512 63c568b1e0014e2039def200fde47d932e5366ba794fcd89f0efbcfd845e8b8b1c0ede6406a518f366356f5b566df2d0a1b53e6fdc9b58a26a59bdaa89e0ce32
-DIST dotnet-sdk-7.0.200-linux-musl-x64.tar.gz 197209986 BLAKE2B 4219149ed4f682ecb3d2c00cb2ed24f5352153ca0a5063bf07e7d42ddce95a5d3b4924e257bc166e1a1ca779dd9fb1d8e52d7a17a37ae73a596f3b5f4ed98c5b SHA512 e907c96e7f1c7a3497f8726176b1fad9e93050b7b5f30900a634d253c4c5c822c8d729b22b36fa00d5bb2be0834f6c683d47db8c22077fbb191e38ae67e12119
-DIST dotnet-sdk-7.0.200-linux-x64.tar.gz 197802070 BLAKE2B 100af2f1e3fda195542f383a449473b1e52a7c5c1ff40b3ee666305a883885e1440996be7e588d8ccad44702917cf8d5e87900a59d80b8a43f9ba76a8e602927 SHA512 bb88cc5099bcb090608f5e02e7fcdc4f6a82114881378efd469afb210e00909d8dcc4d07d188851ef2782ba755321096de175d83ca67af3c4dcb8d3c1d217756
+DIST dotnet-sdk-6.0.402-linux-arm.tar.gz 181622588 BLAKE2B 1010a7cd9f598e0487af127f9e1dac86681479cd6d95e39eb5f1fbf555fd3923be7e2a56bf0bc878259c17e7eb66b711da9587fcfc8ac3ab5f5b17abff1c6da7
+DIST dotnet-sdk-6.0.402-linux-arm64.tar.gz 179368834 BLAKE2B 102b1f2ce6d3162ad423b1e24c7f4730b2846aee5d6eb19a2fbbc52271f18cda1d98121c39fd9e2dd375c2837ab5a6714f8acc81245ab720f13c5b4c6e4e9dc3
+DIST dotnet-sdk-6.0.402-linux-musl-arm.tar.gz 181678689 BLAKE2B 66d059106c0daab97497585935f85febcc1099474dc8f72e25e7ec2ad91b0f118a4978a0875508d11f1d5b47b75ce29e0a6782fa84c4ab654f8f6a44444c31b2
+DIST dotnet-sdk-6.0.402-linux-musl-arm64.tar.gz 179488323 BLAKE2B 459bfc25c250e36ed351eb76037aac29f999ae111889662079d13555707e2006c719ec88516ffed013e6d88fc836d41148b81d194afaa3049ae2696b8c606d63
+DIST dotnet-sdk-6.0.402-linux-musl-x64.tar.gz 185028850 BLAKE2B 92f24b251d8d36d7cf154c44ff5096b069cd4df1fd3a1a3aea9d4aedb8934ab81ae2c33ae891cd892d942ecceb0ed677ee4c8eb242ad43a7c7f9a4ac2303a79a
+DIST dotnet-sdk-6.0.402-linux-x64.tar.gz 185619780 BLAKE2B 1880ec1f94bd8c79db550fae5c0bd684e7e96e5ee99d5bf41c20a0d9678facb6aaca0065d246015feaa265b0e99d95afaff4f1468fabd04594a9834224afc118
+DIST dotnet-sdk-6.0.404-linux-arm.tar.gz 181563995 BLAKE2B ff359d26264f0298d6210a2b7ae8cd0f1b577bf9937aaff09805f361e54349bdab5338182b674c81c8cb330c90f7a17a601ccce899e63f2e837a90bfd02c3726
+DIST dotnet-sdk-6.0.404-linux-arm64.tar.gz 180324700 BLAKE2B 33780337294f427da0b8d44d8a3819c4276c0b01ffefe5a846cc5524039a5af203a231fe5893c63dce5b1557cd1288c4cb3e1d93505320a49eeccd4fd22cefe7
+DIST dotnet-sdk-6.0.404-linux-musl-arm.tar.gz 182613890 BLAKE2B f0475535f703a80c23a881ef578eeac87923586b27bcc7ed018b75aa88dccc84dcbd9e20543b1e502e0e800b947afd8e6bbc3a44b4101ad786674d0ad2fb196a
+DIST dotnet-sdk-6.0.404-linux-musl-arm64.tar.gz 180323728 BLAKE2B ff32a89653f265df2fda39dc0bb2ff6853e6fced029fb1a16096436a7876ad061e55a1d45fd29f395e4d6585f67cde2e5d95b0c0c2bbaec2b073cfd2785c87e5
+DIST dotnet-sdk-6.0.404-linux-musl-x64.tar.gz 185037621 BLAKE2B 0ff97d56c4d061cb5f227c745afb34cf462c286f4c0347224885360cec861dfd59f90a6ef85571c49aa79b12d558111b07a29ac48451739f721e5b13d45f94c1
+DIST dotnet-sdk-6.0.404-linux-x64.tar.gz 185546757 BLAKE2B ce8447f82b93880c6491e06fd35d556b880f59403fd7c6161d228271de6bffc6c74810e5ec5d834e35a715b9bc6173cb028aeb443bd28717a2d8838b543eec9f
+DIST dotnet-sdk-7.0.200-linux-arm.tar.gz 192996891 BLAKE2B 43c271a53d2eeebfbbeb7702e0c7a203960b57246f4b1f557d78391abdf10d0cca87c7ee364a37151f8e9e91df53e427df077a7cc25e1ccce5ac5d37fc73bc3a
+DIST dotnet-sdk-7.0.200-linux-arm64.tar.gz 193106712 BLAKE2B 5db6eab8bf56a85a15e6107bd4bca0dd4669d9eb2b3db287b8aa7621e38e07ce213c8e2446add010623b78b7092c0658d17bf4c90a059440778519e5aa117a9e
+DIST dotnet-sdk-7.0.200-linux-musl-arm.tar.gz 192955116 BLAKE2B 5b5549e158ebc7059b123d601566efddaacd04aa6ee531699b3c70327b2f2005ed11cbb7dea7b9a8a9c5f792fcc7461ea34b0a33a81828b4085327f219224d19
+DIST dotnet-sdk-7.0.200-linux-musl-arm64.tar.gz 192893152 BLAKE2B ea793eebc9d414f5f8dd0c4a1b2c0330bf762db8fb1626aaa97d84b8fffe2a6b8d85f8cf735467dd49d6f588cd17254dad7ced926410f7e26488da08e0bb593a
+DIST dotnet-sdk-7.0.200-linux-musl-x64.tar.gz 197209986 BLAKE2B 4219149ed4f682ecb3d2c00cb2ed24f5352153ca0a5063bf07e7d42ddce95a5d3b4924e257bc166e1a1ca779dd9fb1d8e52d7a17a37ae73a596f3b5f4ed98c5b
+DIST dotnet-sdk-7.0.200-linux-x64.tar.gz 197802070 BLAKE2B 100af2f1e3fda195542f383a449473b1e52a7c5c1ff40b3ee666305a883885e1440996be7e588d8ccad44702917cf8d5e87900a59d80b8a43f9ba76a8e602927
+DIST dotnet-sdk-7.0.203-linux-arm.tar.gz 193128471 BLAKE2B 38f4c3d001770890b0de6f816a42e41ca7f05463f1924069fcbc15c344f2d713d68d5c8bbcbaba3adb1679b987cc543ef7c75a5f0afa0ba5def54cd1e3023a5d
+DIST dotnet-sdk-7.0.203-linux-arm64.tar.gz 193040248 BLAKE2B 38eb2d586de235bfa30b297099fe2287ce47afca648275d1a6b80e5237588107448f5310ab9e16e93eed91b4a2cb93727ec82451ab643d737a0467dce445bc46
+DIST dotnet-sdk-7.0.203-linux-musl-arm.tar.gz 193086103 BLAKE2B fbd943578a9ad1eeeb01a4d31c662b7bbf61409041f5595dd4d52e036fd76c55ea28d0d4f8b1b6ef213f2a7afbf8d724d7b1bd27925a0a7d3d34d9632e8a17bb
+DIST dotnet-sdk-7.0.203-linux-musl-arm64.tar.gz 193132851 BLAKE2B 6375b410b5e0c3163c4de0306aa618f72104574195b6076854a5222ba9720cc9fe7eb1ddff37f88a78758311dca58a3c093b503233aa4df60d93494b79435ada
+DIST dotnet-sdk-7.0.203-linux-musl-x64.tar.gz 197345038 BLAKE2B 7c9a016c0ac9a78b0337fc58670788e11950cd5db9d22ef9845ab40ff6969138f76d878dca9972183f73c35fef0940e690a57fa7e44bf7236e9cd73010e30267
+DIST dotnet-sdk-7.0.203-linux-x64.tar.gz 197819323 BLAKE2B f95c9d34f7feba5c0e1407c9c4012361f1bb282748d7644a9e823d3b39d62a42ab3de3e8ce2a310b40ea180069bddea3eef07973043ba2f20020365f9adfd52c
diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
new file mode 100644
index 0000000000..f2f49466ae
--- /dev/null
+++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="
+amd64? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
+)
+arm? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
+)
+arm64? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
+)
+"
+S="${WORKDIR}"
+
+SDK_SLOT="$(ver_cut 1-2)"
+RUNTIME_SLOT="${SDK_SLOT}.12"
+SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
+
+LICENSE="MIT"
+KEYWORDS="~amd64 ~arm ~arm64"
+RESTRICT+=" splitdebug "
+
+RDEPEND="
+	app-crypt/mit-krb5:0/0
+	dev-libs/icu
+	dev-util/lttng-ust:0/2.12
+	sys-libs/zlib:0/1
+"
+IDEPEND="app-eselect/eselect-dotnet"
+PDEPEND="
+	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
+	~dev-dotnet/dotnet-runtime-nugets-3.1.32
+"
+
+QA_PREBUILT="*"
+
+src_install() {
+	local dest=opt/${PN}-${SDK_SLOT}
+	dodir "${dest%/*}"
+
+	# Create a magic workloads file, bug #841896
+	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
+	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
+	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
+
+	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
+	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
+}
+
+pkg_postinst() {
+	eselect dotnet update ifunset
+}
+
+pkg_postrm() {
+	eselect dotnet update ifunset
+}
diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild
new file mode 100644
index 0000000000..f2f49466ae
--- /dev/null
+++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="
+amd64? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
+)
+arm? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
+)
+arm64? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
+)
+"
+S="${WORKDIR}"
+
+SDK_SLOT="$(ver_cut 1-2)"
+RUNTIME_SLOT="${SDK_SLOT}.12"
+SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
+
+LICENSE="MIT"
+KEYWORDS="~amd64 ~arm ~arm64"
+RESTRICT+=" splitdebug "
+
+RDEPEND="
+	app-crypt/mit-krb5:0/0
+	dev-libs/icu
+	dev-util/lttng-ust:0/2.12
+	sys-libs/zlib:0/1
+"
+IDEPEND="app-eselect/eselect-dotnet"
+PDEPEND="
+	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
+	~dev-dotnet/dotnet-runtime-nugets-3.1.32
+"
+
+QA_PREBUILT="*"
+
+src_install() {
+	local dest=opt/${PN}-${SDK_SLOT}
+	dodir "${dest%/*}"
+
+	# Create a magic workloads file, bug #841896
+	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
+	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
+	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
+
+	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
+	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
+}
+
+pkg_postinst() {
+	eselect dotnet update ifunset
+}
+
+pkg_postrm() {
+	eselect dotnet update ifunset
+}
diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild
new file mode 100644
index 0000000000..21f829f18d
--- /dev/null
+++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="
+amd64? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
+)
+arm? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
+)
+arm64? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
+)
+"
+S="${WORKDIR}"
+
+SDK_SLOT="$(ver_cut 1-2)"
+RUNTIME_SLOT="${SDK_SLOT}.3"
+SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
+
+LICENSE="MIT"
+KEYWORDS="~amd64 ~arm ~arm64"
+RESTRICT+=" splitdebug "
+
+RDEPEND="
+	app-crypt/mit-krb5:0/0
+	dev-libs/icu
+	dev-util/lttng-ust:0/2.12
+	sys-libs/zlib:0/1
+"
+IDEPEND="app-eselect/eselect-dotnet"
+PDEPEND="
+	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
+	~dev-dotnet/dotnet-runtime-nugets-3.1.32
+	~dev-dotnet/dotnet-runtime-nugets-6.0.14
+"
+
+QA_PREBUILT="*"
+
+src_install() {
+	local dest=opt/${PN}-${SDK_SLOT}
+	dodir "${dest%/*}"
+
+	# Create a magic workloads file, bug #841896
+	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
+	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
+	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
+
+	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
+	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
+}
+
+pkg_postinst() {
+	eselect dotnet update ifunset
+}
+
+pkg_postrm() {
+	eselect dotnet update ifunset
+}
diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild
new file mode 100644
index 0000000000..2677f7beeb
--- /dev/null
+++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
+HOMEPAGE="https://dotnet.microsoft.com/"
+SRC_URI="
+amd64? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
+)
+arm? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
+)
+arm64? (
+	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
+	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
+)
+"
+S="${WORKDIR}"
+
+SDK_SLOT="$(ver_cut 1-2)"
+RUNTIME_SLOT="${SDK_SLOT}.5"
+SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
+
+LICENSE="MIT"
+KEYWORDS="~amd64 ~arm ~arm64"
+RESTRICT+=" splitdebug "
+
+RDEPEND="
+	app-crypt/mit-krb5:0/0
+	dev-libs/icu
+	dev-util/lttng-ust:0/2.12
+	sys-libs/zlib:0/1
+"
+IDEPEND="app-eselect/eselect-dotnet"
+PDEPEND="
+	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
+	~dev-dotnet/dotnet-runtime-nugets-3.1.32
+	~dev-dotnet/dotnet-runtime-nugets-6.0.16
+"
+
+QA_PREBUILT="*"
+
+src_install() {
+	local dest=opt/${PN}-${SDK_SLOT}
+	dodir "${dest%/*}"
+
+	# Create a magic workloads file, bug #841896
+	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
+	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
+	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
+
+	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
+	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
+}
+
+pkg_postinst() {
+	eselect dotnet update ifunset
+}
+
+pkg_postrm() {
+	eselect dotnet update ifunset
+}
diff --git a/dev-dotnet/dotnet-sdk-bin/metadata.xml b/dev-dotnet/dotnet-sdk-bin/metadata.xml
index e32a6dd415..f0c088d014 100644
--- a/dev-dotnet/dotnet-sdk-bin/metadata.xml
+++ b/dev-dotnet/dotnet-sdk-bin/metadata.xml
@@ -6,13 +6,9 @@
     <email>dotnet@gentoo.org</email>
     <name>Gentoo Dotnet Project</name>
   </maintainer>
-  <use>
-    <flag name="dotnet-symlink">
-      Install a dotnet symlink that points to dotnet-bin.
-    </flag>
-  </use>
   <upstream>
     <doc>https://learn.microsoft.com/en-us/dotnet/</doc>
+    <bugs-to>https://github.com/dotnet/sdk/issues/</bugs-to>
     <remote-id type="github">dotnet/sdk</remote-id>
   </upstream>
 </pkgmetadata>
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [gentoo-dev] [PATCH 7/7] dev-dotnet/dotnet-sdk-bin: drop old
  2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
                   ` (4 preceding siblings ...)
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism Maciej Barć
@ 2023-07-16 12:38 ` Maciej Barć
  2023-07-16 12:43 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Sam James
  2023-07-16 13:40 ` Ulrich Mueller
  7 siblings, 0 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 12:38 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

Bug: https://bugs.gentoo.org/900597
Bug: https://github.com/gentoo/gentoo/pull/29309
Signed-off-by: Maciej Barć <xgqt@gentoo.org>
---
 dev-dotnet/dotnet-sdk-bin/Manifest            |  8 +--
 .../dotnet-sdk-bin-6.0.402-r3.ebuild          | 65 ------------------
 .../dotnet-sdk-bin-6.0.404.ebuild             | 67 -------------------
 .../dotnet-sdk-bin-7.0.200.ebuild             | 67 -------------------
 4 files changed, 1 insertion(+), 206 deletions(-)
 delete mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
 delete mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404.ebuild
 delete mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200.ebuild

diff --git a/dev-dotnet/dotnet-sdk-bin/Manifest b/dev-dotnet/dotnet-sdk-bin/Manifest
index 34d9d16893..8469c78ba4 100644
--- a/dev-dotnet/dotnet-sdk-bin/Manifest
+++ b/dev-dotnet/dotnet-sdk-bin/Manifest
@@ -1,15 +1,9 @@
-DIST dotnet-sdk-6.0.402-linux-arm.tar.gz 181622588 BLAKE2B 1010a7cd9f598e0487af127f9e1dac86681479cd6d95e39eb5f1fbf555fd3923be7e2a56bf0bc878259c17e7eb66b711da9587fcfc8ac3ab5f5b17abff1c6da7
-DIST dotnet-sdk-6.0.402-linux-arm64.tar.gz 179368834 BLAKE2B 102b1f2ce6d3162ad423b1e24c7f4730b2846aee5d6eb19a2fbbc52271f18cda1d98121c39fd9e2dd375c2837ab5a6714f8acc81245ab720f13c5b4c6e4e9dc3
-DIST dotnet-sdk-6.0.402-linux-musl-arm.tar.gz 181678689 BLAKE2B 66d059106c0daab97497585935f85febcc1099474dc8f72e25e7ec2ad91b0f118a4978a0875508d11f1d5b47b75ce29e0a6782fa84c4ab654f8f6a44444c31b2
-DIST dotnet-sdk-6.0.402-linux-musl-arm64.tar.gz 179488323 BLAKE2B 459bfc25c250e36ed351eb76037aac29f999ae111889662079d13555707e2006c719ec88516ffed013e6d88fc836d41148b81d194afaa3049ae2696b8c606d63
-DIST dotnet-sdk-6.0.402-linux-musl-x64.tar.gz 185028850 BLAKE2B 92f24b251d8d36d7cf154c44ff5096b069cd4df1fd3a1a3aea9d4aedb8934ab81ae2c33ae891cd892d942ecceb0ed677ee4c8eb242ad43a7c7f9a4ac2303a79a
-DIST dotnet-sdk-6.0.402-linux-x64.tar.gz 185619780 BLAKE2B 1880ec1f94bd8c79db550fae5c0bd684e7e96e5ee99d5bf41c20a0d9678facb6aaca0065d246015feaa265b0e99d95afaff4f1468fabd04594a9834224afc118
 DIST dotnet-sdk-6.0.404-linux-arm.tar.gz 181563995 BLAKE2B ff359d26264f0298d6210a2b7ae8cd0f1b577bf9937aaff09805f361e54349bdab5338182b674c81c8cb330c90f7a17a601ccce899e63f2e837a90bfd02c3726
 DIST dotnet-sdk-6.0.404-linux-arm64.tar.gz 180324700 BLAKE2B 33780337294f427da0b8d44d8a3819c4276c0b01ffefe5a846cc5524039a5af203a231fe5893c63dce5b1557cd1288c4cb3e1d93505320a49eeccd4fd22cefe7
 DIST dotnet-sdk-6.0.404-linux-musl-arm.tar.gz 182613890 BLAKE2B f0475535f703a80c23a881ef578eeac87923586b27bcc7ed018b75aa88dccc84dcbd9e20543b1e502e0e800b947afd8e6bbc3a44b4101ad786674d0ad2fb196a
 DIST dotnet-sdk-6.0.404-linux-musl-arm64.tar.gz 180323728 BLAKE2B ff32a89653f265df2fda39dc0bb2ff6853e6fced029fb1a16096436a7876ad061e55a1d45fd29f395e4d6585f67cde2e5d95b0c0c2bbaec2b073cfd2785c87e5
 DIST dotnet-sdk-6.0.404-linux-musl-x64.tar.gz 185037621 BLAKE2B 0ff97d56c4d061cb5f227c745afb34cf462c286f4c0347224885360cec861dfd59f90a6ef85571c49aa79b12d558111b07a29ac48451739f721e5b13d45f94c1
-DIST dotnet-sdk-6.0.404-linux-x64.tar.gz 185546757 BLAKE2B ce8447f82b93880c6491e06fd35d556b880f59403fd7c6161d228271de6bffc6c74810e5ec5d834e35a715b9bc6173cb028aeb443bd28717a2d8838b543eec9f
+DIST dotnet-sdk-6.0.404-linux-x64.tar.gz 185546757 BLAKE2B ce8447f82b93880c6491e06fd35d556b880f59403fd7c6161d228271de6bffc6c74810e5ec5d834e35a715b9bc6173cb028aeb443bd28717a2d8838b543eec9f SHA512 7a0f4b308d3fe98df9b426b0f8f8fb7bd7247244af3570e867a3969349c62c7ea4c6da81a1a2280788e300784167a2933db523f461985aef0681e0cf14bf8f0d
 DIST dotnet-sdk-7.0.200-linux-arm.tar.gz 192996891 BLAKE2B 43c271a53d2eeebfbbeb7702e0c7a203960b57246f4b1f557d78391abdf10d0cca87c7ee364a37151f8e9e91df53e427df077a7cc25e1ccce5ac5d37fc73bc3a
 DIST dotnet-sdk-7.0.200-linux-arm64.tar.gz 193106712 BLAKE2B 5db6eab8bf56a85a15e6107bd4bca0dd4669d9eb2b3db287b8aa7621e38e07ce213c8e2446add010623b78b7092c0658d17bf4c90a059440778519e5aa117a9e
 DIST dotnet-sdk-7.0.200-linux-musl-arm.tar.gz 192955116 BLAKE2B 5b5549e158ebc7059b123d601566efddaacd04aa6ee531699b3c70327b2f2005ed11cbb7dea7b9a8a9c5f792fcc7461ea34b0a33a81828b4085327f219224d19
diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
deleted file mode 100644
index f2f49466ae..0000000000
--- a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
-HOMEPAGE="https://dotnet.microsoft.com/"
-SRC_URI="
-amd64? (
-	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
-	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
-)
-arm? (
-	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
-	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
-)
-arm64? (
-	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
-	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
-)
-"
-S="${WORKDIR}"
-
-SDK_SLOT="$(ver_cut 1-2)"
-RUNTIME_SLOT="${SDK_SLOT}.12"
-SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
-
-LICENSE="MIT"
-KEYWORDS="~amd64 ~arm ~arm64"
-RESTRICT+=" splitdebug "
-
-RDEPEND="
-	app-crypt/mit-krb5:0/0
-	dev-libs/icu
-	dev-util/lttng-ust:0/2.12
-	sys-libs/zlib:0/1
-"
-IDEPEND="app-eselect/eselect-dotnet"
-PDEPEND="
-	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
-	~dev-dotnet/dotnet-runtime-nugets-3.1.32
-"
-
-QA_PREBUILT="*"
-
-src_install() {
-	local dest=opt/${PN}-${SDK_SLOT}
-	dodir "${dest%/*}"
-
-	# Create a magic workloads file, bug #841896
-	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
-	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
-	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
-
-	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
-	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
-}
-
-pkg_postinst() {
-	eselect dotnet update ifunset
-}
-
-pkg_postrm() {
-	eselect dotnet update ifunset
-}
diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404.ebuild
deleted file mode 100644
index 6286bad20f..0000000000
--- a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-MY_PV="${PV}"
-
-DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
-HOMEPAGE="https://dotnet.microsoft.com/"
-LICENSE="MIT"
-
-SRC_URI="
-amd64? (
-	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-x64.tar.gz )
-	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-musl-x64.tar.gz )
-)
-arm? (
-	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-arm.tar.gz )
-	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-musl-arm.tar.gz )
-)
-arm64? (
-	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-arm64.tar.gz )
-	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-musl-arm64.tar.gz )
-)
-"
-
-SLOT="6.0"
-KEYWORDS="~amd64 ~arm ~arm64"
-IUSE="+dotnet-symlink"
-QA_PREBUILT="*"
-RESTRICT+=" splitdebug"
-RDEPEND="
-	app-crypt/mit-krb5:0/0
-	dev-libs/icu
-	dev-util/lttng-ust:0/2.12
-	sys-libs/zlib:0/1
-	dotnet-symlink? (
-		!dev-dotnet/dotnet-sdk[dotnet-symlink(+)]
-		!dev-dotnet/dotnet-sdk-bin:3.1[dotnet-symlink(+)]
-		!dev-dotnet/dotnet-sdk-bin:5.0[dotnet-symlink(+)]
-		!dev-dotnet/dotnet-sdk-bin:7.0[dotnet-symlink(+)]
-	)
-"
-
-S=${WORKDIR}
-
-src_install() {
-	local dest="opt/${PN}-${SLOT}"
-	dodir "${dest%/*}"
-
-	# Create a magic workloads file, bug #841896
-	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
-	local workloads="metadata/workloads/${SLOT}.${featureband}"
-	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
-
-	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
-	dosym "../../${dest}/dotnet" "/usr/bin/dotnet-bin-${SLOT}"
-
-	if use dotnet-symlink; then
-		dosym "../../${dest}/dotnet" "/usr/bin/dotnet"
-		dosym "../../${dest}/dotnet" "/usr/bin/dotnet-${SLOT}"
-
-		# set an env-variable for 3rd party tools
-		echo "DOTNET_ROOT=/${dest}" > "${T}/90${PN}-${SLOT}" || die
-		doenvd "${T}/90${PN}-${SLOT}"
-	fi
-}
diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200.ebuild
deleted file mode 100644
index 6d0525d860..0000000000
--- a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-MY_PV="${PV}"
-
-DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
-HOMEPAGE="https://dotnet.microsoft.com/"
-LICENSE="MIT"
-
-SRC_URI="
-amd64? (
-	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-x64.tar.gz )
-	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-musl-x64.tar.gz )
-)
-arm? (
-	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-arm.tar.gz )
-	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-musl-arm.tar.gz )
-)
-arm64? (
-	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-arm64.tar.gz )
-	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${MY_PV}/dotnet-sdk-${MY_PV}-linux-musl-arm64.tar.gz )
-)
-"
-
-SLOT="7.0"
-KEYWORDS="~amd64 ~arm ~arm64"
-IUSE="+dotnet-symlink"
-QA_PREBUILT="*"
-RESTRICT+=" splitdebug"
-RDEPEND="
-	app-crypt/mit-krb5:0/0
-	dev-libs/icu
-	dev-util/lttng-ust:0/2.12
-	sys-libs/zlib:0/1
-	dotnet-symlink? (
-		!dev-dotnet/dotnet-sdk[dotnet-symlink(+)]
-		!dev-dotnet/dotnet-sdk-bin:3.1[dotnet-symlink(+)]
-		!dev-dotnet/dotnet-sdk-bin:5.0[dotnet-symlink(+)]
-		!dev-dotnet/dotnet-sdk-bin:6.0[dotnet-symlink(+)]
-	)
-"
-
-S=${WORKDIR}
-
-src_install() {
-	local dest="opt/${PN}-${SLOT}"
-	dodir "${dest%/*}"
-
-	# Create a magic workloads file, bug #841896
-	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
-	local workloads="metadata/workloads/${SLOT}.${featureband}"
-	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
-
-	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
-	dosym "../../${dest}/dotnet" "/usr/bin/dotnet-bin-${SLOT}"
-
-	if use dotnet-symlink; then
-		dosym "../../${dest}/dotnet" "/usr/bin/dotnet"
-		dosym "../../${dest}/dotnet" "/usr/bin/dotnet-${SLOT}"
-
-		# set an env-variable for 3rd party tools
-		echo "DOTNET_ROOT=/${dest}" > "${T}/90${PN}-${SLOT}" || die
-		doenvd "${T}/90${PN}-${SLOT}"
-	fi
-}
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
                   ` (5 preceding siblings ...)
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 7/7] dev-dotnet/dotnet-sdk-bin: drop old Maciej Barć
@ 2023-07-16 12:43 ` Sam James
  2023-07-16 13:44   ` Maciej Barć
  2023-07-16 13:40 ` Ulrich Mueller
  7 siblings, 1 reply; 18+ messages in thread
From: Sam James @ 2023-07-16 12:43 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć, Anna, dotnet

[-- Attachment #1: Type: text/plain, Size: 3977 bytes --]


Maciej Barć <xgqt@gentoo.org> writes:

> Bug: https://bugs.gentoo.org/900597
> Bug: https://github.com/gentoo/gentoo/pull/29309
> Signed-off-by: Maciej Barć <xgqt@gentoo.org>
> ---

First, thank you to you & navi for working on this. It's long overdue.

Left some small comments below.

>  eclass/nuget.eclass | 192 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 192 insertions(+)
>  create mode 100644 eclass/nuget.eclass
>
> diff --git a/eclass/nuget.eclass b/eclass/nuget.eclass
> new file mode 100644
> index 0000000000..cbc9bae4a1
> --- /dev/null
> +++ b/eclass/nuget.eclass
> @@ -0,0 +1,192 @@
> +# Copyright 1999-2023 Gentoo Authors
> +# Distributed under the terms of the GNU General Public License v2
> +
> +# @ECLASS: nuget.eclass
> +# @MAINTAINER:
> +# Gentoo Dotnet project <dotnet@gentoo.org>
> +# @AUTHOR:
> +# Anna Figueiredo Gomes <navi@vlhl.dev>
> +# Maciej Barć <xgqt@gentoo.org>
> +# @SUPPORTED_EAPIS: 7 8
> +# @BLURB: common functions and variables for handling .NET NuGets
> +# @DESCRIPTION:
> +# This eclass is designed to provide support for .NET NuGet's ".nupkg" files.
> +#
> +# This eclass does not export any phase functions, for that see
> +# the "dotnet-pkg" eclass.
> +
> +case "${EAPI}" in
> +	7 | 8 )
> +		:
> +		;;
> +	* )
> +		die "${ECLASS}: EAPI ${EAPI} unsupported."
> +		;;
> +esac
> +
> +if [[ -z ${_NUGET_ECLASS} ]] ; then
> +_NUGET_ECLASS=1
> +
> +# @ECLASS_VARIABLE: SYSTEM_NUGETS
> +# @DESCRIPTION:
> +# Location of the system NuGet packages directory.
> +SYSTEM_NUGETS=/opt/dotnet-nugets
> +

Not to bikeshed too hard, but wonder if this should be another
directory.

> +# @ECLASS_VARIABLE: NUGET_APIS
> +# @DESCRIPTION:
> +# NuGet API URLs to use for precompiled NuGet package ".nupkg" downloads.
> +# Set or append to this variable post-inherit, but before calling
> +# the "nuget_uris" function, preferably just before "SRC_URI".

Is there a reason we don't just mandate this per-inherit? Feels like
it'd be cleaner there.

> +#
> +# Example:
> +# @CODE
> +# SRC_URI="https://example.com/example.tar.xz"
> +# NUGET_APIS+=( "https://api.nuget.org/v3-flatcontainer" )
> +# SRC_URI+=" $(nuget_uris) "
> +# @CODE
> +NUGET_APIS=( "https://api.nuget.org/v3-flatcontainer" )
> +
> +# @ECLASS_VARIABLE: NUGET_PACKAGES
> +# @DEFAULT_UNSET
> +# @PRE_INHERIT
> +# @DESCRIPTION:
> +# Path from where NuGets will be restored from.
> +# Defaults to ${T}/nugets for use with "nuget_uris" but may be set to a custom
> +# location to, for example, restore NuGets extracted form a prepared archive.
> +# Do not set this variable in conjunction with non-empty "NUGETS".
> +if [[ "${NUGETS}" ]] || [[ ! "${NUGET_PACKAGES}" ]] ; then
> +	NUGET_PACKAGES="${T}"/nugets
> +fi
> +export NUGET_PACKAGES
> +
> +# @ECLASS_VARIABLE: NUGETS
> +# @DEFAULT_UNSET
> +# @PRE_INHERIT
> +# @DESCRIPTION:
> +# String containing all NuGet packages that need to be downloaded.
> +# Used by "nuget_uris".
> +#
> +# Example:
> +# @CODE
> +# NUGETS="
> +#	ImGui.NET-1.87.2
> +#	Config.Net-4.19.0
> +# "
> +#
> +# inherit dotnet-pkg
> +#
> +# ...
> +#
> +# SRC_URI+=" $(nuget_uris) "
> +# @CODE

Can we use the approach we're doing w/ cargo.eclass, so this isn't
the default option? (i.e. set a global variable instead).

> [...]
> +# @FUNCTION: nuget_link
> +# @USAGE: <nuget-path>
> +# @DESCRIPTION:
> +# Link a specified NuGet package at "nuget-path" to the "NUGET_PACKAGES"
> +# directory.
> +#
> +# Example:
> +# @CODE
> +# nuget_link "${DISTDIR}"/pkg.0.nupkg
> +# @CODE
> +#
> +# This function is used inside "dotnet-pkg_src_unpack"
> +# from the "dotnet-pkg" eclass.
> +nuget_link() {
> +	[[ ! "${1}" ]] && die "${FUNCNAME}: no nuget path given"
> +
> +	mkdir -p "${NUGET_PACKAGES}" || die
> +
> +	local nuget_name="$(basename "${1}")"

You should be able to do this with pure bash.

> [...]

best,
sam

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 377 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: introduce new eclass
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
@ 2023-07-16 12:48   ` Sam James
  2023-07-16 13:35     ` Maciej Barć
  0 siblings, 1 reply; 18+ messages in thread
From: Sam James @ 2023-07-16 12:48 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

[-- Attachment #1: Type: text/plain, Size: 19944 bytes --]


Maciej Barć <xgqt@gentoo.org> writes:

> Bug: https://bugs.gentoo.org/900597
> Bug: https://github.com/gentoo/gentoo/pull/29309
> Signed-off-by: Maciej Barć <xgqt@gentoo.org>
> ---
>  eclass/dotnet-pkg-utils.eclass | 598 +++++++++++++++++++++++++++++++++
>  1 file changed, 598 insertions(+)
>  create mode 100644 eclass/dotnet-pkg-utils.eclass
>
> diff --git a/eclass/dotnet-pkg-utils.eclass b/eclass/dotnet-pkg-utils.eclass
> new file mode 100644
> index 0000000000..aeabebc92d
> --- /dev/null
> +++ b/eclass/dotnet-pkg-utils.eclass
> @@ -0,0 +1,598 @@
> +# Copyright 1999-2023 Gentoo Authors
> +# Distributed under the terms of the GNU General Public License v2
> +
> +# @ECLASS: dotnet-pkg-utils.eclass
> +# @MAINTAINER:
> +# Gentoo Dotnet project <dotnet@gentoo.org>
> +# @AUTHOR:
> +# Anna Figueiredo Gomes <navi@vlhl.dev>
> +# Maciej Barć <xgqt@gentoo.org>
> +# @SUPPORTED_EAPIS: 7 8

Let's not add EAPI 7 to a new eclass.

> +# @PROVIDES: nuget
> +# @BLURB: common functions and variables for builds using .NET SDK
> +# @DESCRIPTION:
> +# This eclass is designed to provide common definitions for .NET packages.
> +#
> +# This eclass does not export any phase functions, for that see
> +# the "dotnet-pkg" eclass.
> +
> +case "${EAPI}" in
> +	7 | 8 )

Per above, drop this, but if keeping it: 7|8). Own style is fine for an
eclass ofc, but writing it like this is unconventional.

> +		:
> +		;;
> +	* )
> +		die "${ECLASS}: EAPI ${EAPI} unsupported."
> +		;;
> +esac
> +
> +if [[ -z ${_DOTNET_PKG_UTILS_ECLASS} ]] ; then
> +_DOTNET_PKG_UTILS_ECLASS=1
> +
> +inherit edo multiprocessing nuget
> +
> +# @ECLASS_VARIABLE: DOTNET_COMPAT
> +# @REQUIRED
> +# @PRE_INHERIT
> +# @DESCRIPTION:
> +# Allows to choose a slot for dotnet.
> +#
> +# Most .NET packages will lock onto one supported .NET major version.
> +# DOTNET_COMPAT should specify which version was chosen by package upstream.
> +# In case multiple .NET versions are specified in the project, then the highest
> +# should be picked by the maintainer.
> +if [[ ${CATEGORY}/${PN} != dev-dotnet/dotnet-runtime-nugets ]] ; then
> +	if [[ ! ${DOTNET_COMPAT} ]] ; then
> +		die "${ECLASS}: DOTNET_COMPAT not set"
> +	fi
> +
> +	RDEPEND+=" virtual/dotnet-sdk:${DOTNET_COMPAT} "
> +	BDEPEND+=" ${RDEPEND} "
> +
> +	if [[ ${CATEGORY}/${PN} != dev-dotnet/csharp-gentoodotnetinfo ]] ; then
> +		BDEPEND+=" dev-dotnet/csharp-gentoodotnetinfo "
> +	fi
> +
> +	IUSE+=" debug "
> +fi
> +
> +# Needed otherwise the binaries may break.
> +RESTRICT+=" strip "
> +
> +# Everything is built by "dotnet".
> +QA_PREBUILT=".*"
> +
> +# Special .NET SDK environment variables.
> +# Setting them either prevents annoying information from being generated
> +# or stops services that may interfere with a clean package build.
> +export DOTNET_CLI_TELEMETRY_OPTOUT=1
> +export DOTNET_NOLOGO=1
> +export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
> +export MSBUILDDISABLENODEREUSE=1
> +export POWERSHELL_TELEMETRY_OPTOUT=1
> +export POWERSHELL_UPDATECHECK=0
> +# Overwrite selected MSBuild properties ("-p:XYZ").
> +export UseSharedCompilation=false
> +
> +# @ECLASS_VARIABLE: DOTNET_RUNTIME
> +# @DEFAULT_UNSET
> +# @DESCRIPTION:
> +# Sets the runtime used to build a package.
> +#
> +# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
> +
> +# @ECLASS_VARIABLE: DOTNET_EXECUTABLE
> +# @DEFAULT_UNSET
> +# @DESCRIPTION:
> +# Sets path of a "dotnet" executable.
> +#
> +# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
> +
> +# @ECLASS_VARIABLE: DOTNET_CONFIGURATION
> +# @DEFAULT_UNSET
> +# @DESCRIPTION:
> +# Configuration value passed to "dotnet" in the compile phase.
> +# Is either Debug or Release, depending on the "debug" USE flag.
> +#
> +# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
> +
> +# @ECLASS_VARIABLE: DOTNET_OUTPUT
> +# @DEFAULT_UNSET
> +# @DESCRIPTION:
> +# Path of the output directory, where the package artifacts are placed during
> +# the building of packages with "dotnet-pkg-utils_build" function.
> +#
> +# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
> +
> +# @VARIABLE: DOTNET_LAUNCHERDEST
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Sets the path that .NET launchers are installed into by
> +# the "dotnet-pkg-utils_dolauncher" function.
> +#
> +# The function "dotnet-pkg-utils_launcherinto" is able to manipulate this
> +# variable.
> +#
> +# Defaults to "/usr/bin".
> +DOTNET_LAUNCHERDEST=/usr/bin
> +
> +# @VARIABLE: DOTNET_LAUNCHERVARS
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Sets additional variables for .NET launchers created by
> +# the "dotnet-pkg-utils_dolauncher" function.
> +#
> +# The function "dotnet-pkg-utils_append_launchervar" is able to manipulate this
> +# variable.
> +#
> +# Defaults to a empty array.
> +DOTNET_LAUNCHERVARS=()
> +
> +# @FUNCTION: dotnet-pkg-utils_get-configuration
> +# @DESCRIPTION:
> +# Return .NET configuration type of the current package.
> +#
> +# It is advised to refer to the "DOTNET_CONFIGURATION" variable instead of
> +# calling this function if necessary.
> +#
> +# Used by "dotnet-pkg-utils_setup".
> +dotnet-pkg-utils_get-configuration() {
> +	if in_iuse debug && use debug ; then
> +		echo Debug
> +	else
> +		echo Release
> +	fi
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_get-output
> +# @USAGE: <name>
> +# @DESCRIPTION:
> +# Return a specially constructed name of a directory for output of
> +# "dotnet build" artifacts ("--output" flag, see "dotnet-pkg-utils_build").
> +#
> +# It is very rare that a maintainer would use this function in an ebuild.
> +#
> +# This function is used inside "dotnet-pkg-utils_setup".
> +dotnet-pkg-utils_get-output() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	[[ ! ${DOTNET_CONFIGURATION} ]] &&
> +		die "${FUNCNAME}: DOTNET_CONFIGURATION is not set."
> +
> +	echo "${WORKDIR}"/${1}_net${DOTNET_COMPAT}_${DOTNET_CONFIGURATION}
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_get-runtime
> +# @DESCRIPTION:
> +# Return the .NET runtime used for the current package.
> +#
> +# Used by "dotnet-pkg-utils_setup".
> +dotnet-pkg-utils_get-runtime() {
> +	local libc="$(usex elibc_musl "-musl" "")"
> +
> +	if use amd64 ; then
> +		echo linux${libc}-x64
> +	elif use x86 ; then
> +		echo linux${libc}-x86
> +	elif use arm ; then
> +		echo linux${libc}-arm
> +	elif use arm64 ; then
> +		echo linux${libc}-arm64
> +	else
> +		die "${FUNCNAME}: Unsupported architecture: ${ARCH}"
> +	fi
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_setup
> +# @DESCRIPTION:
> +# Sets up "DOTNET_EXECUTABLE" variable for later use in "edotnet".
> +# Also sets up "DOTNET_CONFIGURATION" and "DOTNET_OUTPUT"
> +# for "dotnet-pkg_src_configure" and "dotnet-pkg_src_compile".
> +#
> +# This functions should be called by "pkg_setup".
> +#
> +# Used by "dotnet-pkg_pkg_setup" from the "dotnet-pkg" eclass.
> +dotnet-pkg-utils_setup() {
> +	local _dotnet
> +	for _dotnet in dotnet{,-bin}-${DOTNET_COMPAT} ; do
> +		if type ${_dotnet} >/dev/null 2>&1 ; then
> +			DOTNET_EXECUTABLE=${_dotnet}
> +			DOTNET_EXECUTABLE_PATH="$(command -v
> ${_dotnet})"

We can just change the original call to `type -P` (not `type`)
and reuse the result here.

> +			break
> +		fi
> +	done
> +
> +	# Link "DOTNET_EXECUTABLE" to "dotnet" only for the package build.
> +	local dotnet_spoof_path="${T}"/dotnet_spoof/${DOTNET_COMPAT}
> +	mkdir -p "${dotnet_spoof_path}" || die
> +	ln -s "${DOTNET_EXECUTABLE_PATH}" "${dotnet_spoof_path}"/dotnet || die
> +	export PATH="${dotnet_spoof_path}:${PATH}"
> +
> +	einfo "Using dotnet SDK \"${DOTNET_EXECUTABLE}\" from \"${DOTNET_EXECUTABLE_PATH}\"."
> +
> +	# The picked "DOTNET_EXECUTABLE" should set "DOTNET_ROOT" internally
> +	# and not rely upon this environment variable.
> +	unset DOTNET_ROOT
> +
> +	# Unset .NET and NuGet directories.
> +	unset DOTNET_DATA
> +	unset NUGET_DATA
> +
> +	DOTNET_RUNTIME=$(dotnet-pkg-utils_get-runtime)
> +	DOTNET_CONFIGURATION=$(dotnet-pkg-utils_get-configuration)
> +	DOTNET_OUTPUT="$(dotnet-pkg-utils_get-output ${P})"
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_remove-global-json
> +# @USAGE: [directory]
> +# @DESCRIPTION:
> +# Remove the "global.json" if it exists.
> +# The file in question might lock target package to a specified .NET
> +# version, which might be unnecessary (as it is in most cases).
> +#
> +# Optional "directory" argument defaults to the current directory path.
> +#
> +# Used by "dotnet-pkg_src_prepare" from the "dotnet-pkg" eclass.
> +dotnet-pkg-utils_remove-global-json() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local file="${1:-.}"/global.json
> +
> +	if [[ -f "${file}" ]] ; then
> +		ebegin "Removing the global.json file"
> +		rm "${file}"
> +		eend ${?} || die "${FUNCNAME}: failed to remove ${file}"
> +	fi
> +}
> +
> +# @FUNCTION: edotnet
> +# @USAGE: <command> [args...]
> +# @DESCRIPTION:
> +# Call dotnet, passing the supplied arguments.
> +edotnet() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	if [[ ! "${DOTNET_EXECUTABLE}" ]] ; then
> +	   die "${FUNCNAME}: DOTNET_EXECUTABLE not set. Was dotnet-pkg-utils_setup called?"
> +	fi
> +
> +	edo "${DOTNET_EXECUTABLE}" "${@}"
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_info
> +# @DESCRIPTION:
> +# Show information about current .NET SDK that is being used.
> +#
> +# Depends upon the "gentoo-dotnet-info" program installed by
> +# the "dev-dotnet/csharp-gentoodotnetinfo" package.
> +#
> +# Used by "dotnet-pkg_src_configure" from the "dotnet-pkg" eclass.
> +dotnet-pkg-utils_info() {
> +	if [[ ${CATEGORY}/${PN} == dev-dotnet/csharp-gentoodotnetinfo ]] ; then
> +		debug-print-function "${FUNCNAME}: ${P} is a special package, skipping dotnet-pkg-utils_info"
> +	elif ! command -v gentoo-dotnet-info >/dev/null ; then
> +		ewarn "${FUNCNAME}: gentoo-dotnet-info not available"
> +	else
> +		gentoo-dotnet-info || die "${FUNCNAME}: failed to execute gentoo-dotnet-info"
> +	fi
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_foreach-solution
> +# @USAGE: <function> [directory]
> +# @DESCRIPTION:
> +# Execute a function for each solution file (.sln) in a specified directory.
> +# This function may yield no real results because solutions are discovered
> +# automatically.
> +#
> +# Optional "directory" argument defaults to the current directory path.
> +#
> +# Used by "dotnet-pkg_src_configure" from the "dotnet-pkg" eclass.
> +dotnet-pkg-utils_foreach-solution() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local dotnet_solution
> +	for dotnet_solution in $(find "${2:-.}" -maxdepth 1 -type f -name "*.sln") ; do
> +		einfo "Running \"${1}\" for solution: \"$(basename "${dotnet_solution}")\""
> +		"${1}" "${dotnet_solution}"
> +	done

Ideally, please change this to:

```
while read ... ; do

done < <( ... )
```

> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_restore
> +# @USAGE: [directory] [args] ...
> +# @DESCRIPTION:
> +# Restore the package using "dotnet restore" in a specified directory.
> +#
> +# Optional "directory" argument defaults to the current directory path.
> +#
> +# Additionally any number of "args" maybe be given, they are appended to
> +# the "dotnet" command invocation.
> +#
> +# Used by "dotnet-pkg_src_configure" from the "dotnet-pkg" eclass.
> +dotnet-pkg-utils_restore() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local directory
> +	if [[ "${1}" ]] ; then
> +		directory="${1}"
> +		shift
> +	else
> +		directory="$(pwd)"
> +	fi
> +
> +	local -a restore_args=(
> +		--runtime ${DOTNET_RUNTIME}
> +		--source "${NUGET_PACKAGES}"
> +		-maxCpuCount:$(makeopts_jobs)
> +		"${@}"
> +	)
> +
> +	edotnet restore "${restore_args[@]}" "${directory}"
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_restore_tools
> +# @USAGE: [config-file] [args] ...
> +# @DESCRIPTION:
> +# Restore dotnet tools for a project in the current directory.
> +#
> +# Optional "config-file" argument is used to specify a file for the
> +# "--configfile" option which records what tools should be restored.
> +#
> +# Additionally any number of "args" maybe be given, they are appended to
> +# the "dotnet" command invocation.
> +dotnet-pkg-utils_restore_tools() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local -a tool_restore_args=(
> +		--add-source "${NUGET_PACKAGES}"
> +	)
> +
> +	if [[ "${1}" ]] ; then
> +		tool_restore_args+=( --configfile "${1}" )
> +		shift
> +	fi
> +
> +	tool_restore_args+=( "${@}" )
> +
> +	edotnet tool restore "${tool_restore_args[@]}"
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_build
> +# @USAGE: [directory] [args] ...
> +# @DESCRIPTION:
> +# Build the package using "dotnet build" in a specified directory.
> +#
> +# Optional "directory" argument defaults to the current directory path.
> +#
> +# Additionally any number of "args" maybe be given, they are appended to
> +# the "dotnet" command invocation.
> +#
> +# Used by "dotnet-pkg_src_compile" from the "dotnet-pkg" eclass.
> +dotnet-pkg-utils_build() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local directory
> +	if [[ "${1}" ]] ; then
> +		directory="${1}"
> +		shift
> +	else
> +		directory="$(pwd)"
> +	fi
> +
> +	local -a build_args=(
> +		--configuration "${DOTNET_CONFIGURATION}"
> +		--no-restore
> +		--no-self-contained
> +		--output "${DOTNET_OUTPUT}"
> +		--runtime ${DOTNET_RUNTIME}
> +		-maxCpuCount:$(makeopts_jobs)
> +		"${@}"
> +	)
> +
> +	if ! use debug ; then
> +		build_args+=(
> +			-p:StripSymbols=true
> +			-p:NativeDebugSymbols=false
> +		)
> +	fi
> +
> +	edotnet build "${build_args[@]}" "${directory}"
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_test
> +# @USAGE: [directory] [args] ...
> +# @DESCRIPTION:
> +# Test the package using "dotnet test" in a specified directory.
> +#
> +# Optional "directory" argument defaults to the current directory path.
> +#
> +# Additionally any number of "args" maybe be given, they are appended to
> +# the "dotnet" command invocation.
> +#
> +# Used by "dotnet-pkg_src_test" from the "dotnet-pkg" eclass.
> +dotnet-pkg-utils_test() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local directory
> +	if [[ "${1}" ]] ; then
> +		directory="${1}"
> +		shift
> +	else
> +		directory="$(pwd)"
> +	fi
> +
> +	local -a test_args=(
> +		--configuration "${DOTNET_CONFIGURATION}"
> +		--no-restore
> +		-maxCpuCount:$(makeopts_jobs)
> +		"${@}"
> +	)
> +
> +	edotnet test "${test_args[@]}" "${directory}"
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_install
> +# @USAGE: [directory]
> +# @DESCRIPTION:
> +# Install the contents of "DOTNET_OUTPUT" into a directory, defaults to
> +# "/usr/share/${PN}".
> +#
> +# Installation directory is relative to "ED".
> +dotnet-pkg-utils_install() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local installation_directory="${1:-/usr/share/${P}}"
> +

The docstring says it defaults to ${PN}, not ${P}?

> +	dodir "${installation_directory}"
> +	cp -r "${DOTNET_OUTPUT}"/* "${ED}"/"${installation_directory}"/ || die

I would just quote the whole second argument instead of selectively
doing it, but up to you.

> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_launcherinto
> +# @USAGE: <directory>
> +# @DESCRIPTION:
> +# Changes the path .NET launchers are installed into via subsequent
> +# "dotnet-pkg-utils_dolauncher" calls.
> +#
> +# For more info see the "DOTNET_LAUNCHERDEST" variable.
> +dotnet-pkg-utils_launcherinto() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	[[ ! "${1}" ]] && die "${FUNCNAME}: no directory specified"
> +
> +	DOTNET_LAUNCHERDEST="${1}"
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_append_launchervar
> +# @USAGE: <variable-setting>
> +# @DESCRIPTION:
> +# Appends a given variable setting to the "DOTNET_LAUNCHERVARS".
> +#
> +# WARNING: This functions modifies a global variable permanently!
> +# This means that all launchers created in subsequent
> +# "dotnet-pkg-utils_dolauncher" calls of a given package will have
> +# the given variable set.
> +#
> +# Example:
> +# @CODE
> +# dotnet-pkg-utils_append_launchervar "DOTNET_EnableAlternateStackCheck=1"
> +# @CODE
> +#
> +# For more info see the "DOTNET_LAUNCHERVARS" variable.
> +dotnet-pkg-utils_append_launchervar() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	[[ ! "${1}" ]] && die "${FUNCNAME}: no variable setting specified"
> +
> +	DOTNET_LAUNCHERVARS+=( "${1}" )
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_dolauncher
> +# @USAGE: <executable-path> [filename]
> +# @DESCRIPTION:
> +# Make a wrapper script to launch an executable built from a .NET package.
> +#
> +# If no file name is given, the `basename` of the executable is used.
> +#
> +# Parameters:
> +# ${1} - path of the executable to launch,
> +# ${2} - filename of launcher to create (optional).
> +#
> +# Example:
> +# @CODE
> +# dotnet-pkg-utils_install
> +# dotnet-pkg-utils_dolauncher /usr/share/${P}/${PN^}
> +# @CODE
> +#
> +# The path is prepended by "EPREFIX".
> +dotnet-pkg-utils_dolauncher() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local executable_path executable_name
> +
> +	if [[ "${1}" ]] ; then
> +		local executable_path="${1}"
> +		shift
> +	else
> +		die "${FUNCNAME}: No executable path given."
> +	fi
> +
> +	if [[ ${#} = 0 ]] ; then
> +		executable_name="$(basename "${executable_path}")"
> +	else
> +		executable_name="${1}"
> +		shift
> +	fi
> +
> +	local executable_target="${T}/${executable_name}"
> +
> +	cat > "${executable_target}" <<-EOF

Missing die.

> +	#!/bin/sh
> +
> +	# Lanucher script for ${executable_path} (${executable_name}),
> +	# created from package "${CATEGORY}/${P}",
> +	# compatible with dotnet version ${DOTNET_COMPAT}.
> +
> +	for __dotnet_root in \\
> +		${EPREFIX}/usr/$(get_libdir)/dotnet-sdk-${DOTNET_COMPAT} \\
> +		${EPREFIX}/opt/dotnet-sdk-bin-${DOTNET_COMPAT} ; do
> +		[ -d \${__dotnet_root} ] && break
> +	done
> +
> +	DOTNET_ROOT="\${__dotnet_root}"
> +	export DOTNET_ROOT
> +
> +	$(for var in "${DOTNET_LAUNCHERVARS[@]}" ; do
> +		echo "${var}"
> +		echo "export ${var%%=*}"
> +	done)
> +
> +	exec "${EPREFIX}${executable_path}" "\${@}"
> +	EOF
> +
> +	dodir "${DOTNET_LAUNCHERDEST}"
> +	exeinto "${DOTNET_LAUNCHERDEST}"
> +	doexe "${executable_target}"
> +}
> +
> +# @FUNCTION: dotnet-pkg-utils_dolauncher_portable
> +# @USAGE: <dll-path> <filename>
> +# @DESCRIPTION:
> +# Make a wrapper script to launch a .NET DLL file built from a .NET package.
> +#
> +# Parameters:
> +# ${1} - path of the DLL to launch,
> +# ${2} - filename of launcher to create.
> +#
> +# Example:
> +# @CODE
> +# dotnet-pkg-utils_dolauncher_portable \
> +#     /usr/share/${P}/GentooDotnetInfo.dll gentoo-dotnet-info
> +# @CODE
> +#
> +# The path is prepended by "EPREFIX".
> +dotnet-pkg-utils_dolauncher_portable() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local dll_path="${1}"
> +	local executable_name="${2}"
> +	local executable_target="${T}/${executable_name}"
> +
> +	cat > "${executable_target}" <<-EOF

Missing die.

> +	#!/bin/sh
> +
> +	# Lanucher script for ${dll_path} (${executable_name}),
> +	# created from package "${CATEGORY}/${P}",
> +	# compatible with any dotnet version, built on ${DOTNET_COMPAT}.
> +
> +	$(for var in "${DOTNET_LAUNCHERVARS[@]}" ; do
> +		echo "${var}"
> +		echo "export ${var%%=*}"
> +	done)
> +
> +	exec dotnet exec "${EPREFIX}${dll_path}" "\${@}"
> +	EOF
> +
> +	dodir "${DOTNET_LAUNCHERDEST}"
> +	exeinto "${DOTNET_LAUNCHERDEST}"
> +	doexe "${executable_target}"
> +}
> +
> +fi


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 377 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: introduce new eclass
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: " Maciej Barć
@ 2023-07-16 12:56   ` Sam James
  2023-07-16 13:38     ` Maciej Barć
  0 siblings, 1 reply; 18+ messages in thread
From: Sam James @ 2023-07-16 12:56 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

[-- Attachment #1: Type: text/plain, Size: 9157 bytes --]


Maciej Barć <xgqt@gentoo.org> writes:

> Bug: https://bugs.gentoo.org/900597
> Bug: https://github.com/gentoo/gentoo/pull/29309
> Signed-off-by: Maciej Barć <xgqt@gentoo.org>
> ---
>  eclass/dotnet-pkg.eclass | 249 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 249 insertions(+)
>  create mode 100644 eclass/dotnet-pkg.eclass
>
> diff --git a/eclass/dotnet-pkg.eclass b/eclass/dotnet-pkg.eclass
> new file mode 100644
> index 0000000000..2b711467f5
> --- /dev/null
> +++ b/eclass/dotnet-pkg.eclass
> @@ -0,0 +1,249 @@
> +# Copyright 1999-2023 Gentoo Authors
> +# Distributed under the terms of the GNU General Public License v2
> +
> +# @ECLASS: dotnet-pkg.eclass
> +# @MAINTAINER:
> +# Gentoo Dotnet project <dotnet@gentoo.org>
> +# @AUTHOR:
> +# Anna Figueiredo Gomes <navi@vlhl.dev>
> +# Maciej Barć <xgqt@gentoo.org>
> +# @SUPPORTED_EAPIS: 7 8
> +# @PROVIDES: dotnet-pkg-utils nuget
> +# @BLURB: common functions and variables for .NET packages
> +# @DESCRIPTION:
> +# This eclass is designed to help with building and installing packages that
> +# use the .NET SDK.
> +#
> +# .NET SDK is a open-source framework from Microsoft, it is a cross-platform
> +# successor to .NET Framework.
> +#
> +# .NET packages require proper inspection before packaging:
> +# - the compatible .NET SDK version has to be declared,
> +#   this can be done by inspecting the package's "*proj" files,
> +#   unlike JAVA, .NET packages tend to lock onto one selected .NET SDK
> +#   version, so building with other .NET versions will be mostly unsupported,
> +# - nugets, which are similar to JAVA's JARs (package .NET dependencies),
> +#   have to be listed using either the "NUGETS" variable or bundled inside
> +#   a "prebuilt" archive, in second case also the "NUGET_PACKAGES" variable
> +#   has to be explicitly set.
> +# - the main project file (.*proj) that builds the project has to be specified
> +#   by the "DOTNET_PROJECT" variable.
> +
> +case "${EAPI}" in
> +	7 | 8 )
> +		:
> +		;;
> +	* )
> +		die "${ECLASS}: EAPI ${EAPI} unsupported."
> +		;;
> +esac
> +
> +if [[ -z ${_DOTNET_PKG_ECLASS} ]] ; then
> +_DOTNET_PKG_ECLASS=1
> +
> +inherit dotnet-pkg-utils
> +
> +# @ECLASS_VARIABLE: DOTNET_PROJECTS
> +# @DEFAULT_UNSET
> +# @DESCRIPTION:
> +# Path to the main .NET project files (".csproj", ".fsproj", ".vbproj")
> +# used by default by "dotnet-pkg_src_compile" phase function.
> +#
> +# In .NET version 6.0 and lower it was possible to build a project solution
> +# (".sln") immediately with output to a specified directory ("--output DIR"),
> +# but versions >= 7.0 deprecated this behavior. This means that
> +# "dotnet-pkg-utils_build" will fail when pointed to a solution or a directory
> +# containing a solution file.
> +#
> +# It is up to the maintainer if this variable is set before inheriting
> +# "dotnet-pkg-utils" eclass, but it is advised that it is set after
> +# the variable "${S}" is set, it should also integrate with it
> +# (see the example below).
> +#
> +# Example:
> +# @CODE
> +# SRC_URI="..."
> +# S="${S}"/src
> +#
> +# LICENSE="MIT"
> +# SLOT="0"
> +# KEYWORDS="~amd64"
> +#
> +# DOTNET_PROJECTS=( "${S}/DotnetProject" )
> +#
> +# src_prepare() {
> +#     ...
> +# @CODE
> +
> +# @ECLASS_VARIABLE: DOTNET_RESTORE_EXTRA_ARGS
> +# @DESCRIPTION:
> +# Extra arguments to pass to the package restore, in the "src_configure" phase.
> +#
> +# This is passed only when restoring the specified "DOTNET_PROJECT".
> +# Other project restorers do not use this variable.
> +#
> +# It is up to the maintainer if this variable is set before inheriting
> +# "dotnet-pkg.eclass", but it is advised that it is set after the variable
> +# "DOTNET_PROJECT" (from "dotnet-pkg-utils" eclass) is set.
> +#
> +# Default value is an empty array.
> +#
> +# For more info see the "DOTNET_PROJECT" variable and "dotnet-pkg_src_configure".
> +DOTNET_RESTORE_EXTRA_ARGS=()
> +
> +# @ECLASS_VARIABLE: DOTNET_BUILD_EXTRA_ARGS
> +# @DESCRIPTION:
> +# Extra arguments to pass to the package build, in the "src_compile" phase.
> +#
> +# This is passed only when building the specified "DOTNET_PROJECT".
> +# Other project builds do not use this variable.
> +#
> +# It is up to the maintainer if this variable is set before inheriting
> +# "dotnet-pkg.eclass", but it is advised that it is set after the variable
> +# "DOTNET_PROJECT" (from "dotnet-pkg-utils" eclass) is set.
> +#
> +# Default value is an empty array.
> +#
> +# Example:
> +# @CODE
> +# DOTNET_BUILD_EXTRA_ARGS=( -p:WarningLevel=0 )
> +# @CODE
> +#
> +# For more info see the "DOTNET_PROJECT" variable and "dotnet-pkg_src_compile".
> +DOTNET_BUILD_EXTRA_ARGS=()
> +
> +# @FUNCTION: dotnet-pkg_pkg_setup
> +# @DESCRIPTION:
> +# Default "pkg_setup" for the "dotnet-pkg" eclass.
> +# Pre-build configuration and checks.
> +#
> +# Calls "dotnet-pkg-utils_pkg_setup".
> +dotnet-pkg_pkg_setup() {
> +	dotnet-pkg-utils_setup
> +}
> +
> +# @FUNCTION: dotnet-pkg_src_unpack
> +# @DESCRIPTION:
> +# Default "src_unpack" for the "dotnet-pkg" eclass.
> +# Unpack the package sources.
> +#
> +# Includes a special exception for nugets (".nupkg" files) - they are instead
> +# copied into the "NUGET_PACKAGES" directory.
> +dotnet-pkg_src_unpack() {
> +	nuget_link-system-nugets
> +
> +	local archive
> +	for archive in ${A} ; do
> +		case ${archive} in
> +			*.nupkg )
> +				nuget_link "${DISTDIR}"/${archive}
> +				;;
> +			* )
> +				unpack ${archive}
> +				;;
> +		esac
> +	done
> +}
> +
> +# @FUNCTION: dotnet-pkg_src_prepare
> +# @DESCRIPTION:
> +# Default "src_prepare" for the "dotnet-pkg" eclass.
> +# Prepare the package sources.
> +#
> +# Run "dotnet-pkg-utils_remove-global-json".
> +dotnet-pkg_src_prepare() {
> +	dotnet-pkg-utils_remove-global-json
> +
> +	default
> +}
> +
> +# @FUNCTION: dotnet-pkg_foreach-project
> +# @USAGE: <args> ...
> +# @DESCRIPTION:
> +# Run a specified command for each project listed inside the "DOTNET_PROJECTS"
> +# variable.
> +#
> +# Used by "dotnet-pkg_src_configure" and "dotnet-pkg_src_compile".
> +dotnet-pkg_foreach-project() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local dotnet_project
> +	for dotnet_project in "${DOTNET_PROJECTS[@]}" ; do
> +		einfo "Running \"${@}\" for project: \"$(basename "${dotnet_project}")\""
> +		"${@}" "${dotnet_project}"

No die?

> +	done
> +}
> +
> +# @FUNCTION: dotnet-pkg_src_configure
> +# @DESCRIPTION:
> +# Default "src_configure" for the "dotnet-pkg" eclass.
> +# Configure the package.
> +#
> +# First show information about current .NET SDK that is being used,
> +# then restore the project file specified by "DOTNET_PROJECT",
> +# afterwards restore any found solutions.
> +dotnet-pkg_src_configure() {
> +	dotnet-pkg-utils_info
> +
> +	dotnet-pkg_foreach-project \
> +		dotnet-pkg-utils_restore "${DOTNET_RESTORE_EXTRA_ARGS[@]}"
> +
> +	dotnet-pkg-utils_foreach-solution dotnet-pkg-utils_restore "$(pwd)"
> +}
> +
> +# @FUNCTION: dotnet-pkg_src_compile
> +# @DESCRIPTION:
> +# Default "src_compile" for the "dotnet-pkg" eclass.
> +# Build the package.
> +#
> +# Build the package using "dotnet build" in the directory specified by either
> +# "DOTNET_PROJECT" or "S" (temporary build directory) variables.
> +#
> +# For more info see: "DOTNET_PROJECT" variable
> +# and "dotnet-pkg-utils_get-project" function.
> +dotnet-pkg_src_compile() {
> +	dotnet-pkg_foreach-project \
> +		dotnet-pkg-utils_build "${DOTNET_BUILD_EXTRA_ARGS[@]}"
> +}
> +
> +# @FUNCTION: dotnet-pkg_src_test
> +# @DESCRIPTION:
> +# Default "src_test" for the "dotnet-pkg" eclass.
> +# Test the package.
> +#
> +# Test the package by testing any found solutions.
> +#
> +# It is very likely that this function will either not execute any tests or
> +# will execute wrong or incomplete test suite. Maintainers should inspect if
> +# any and/or correct tests are ran.
> +dotnet-pkg_src_test() {
> +	dotnet-pkg-utils_foreach-solution dotnet-pkg-utils_test "$(pwd)"
> +}
> +
> +# @FUNCTION: dotnet-pkg_src_install
> +# @DESCRIPTION:
> +# Default "src_install" for the "dotnet-pkg" eclass.
> +# Install the package.
> +#
> +# This is the default package install function for the "dotnet-pkg" eclass.
> +#
> +# It is very likely that this function is either insufficient or has to be
> +# redefined in a ebuild.
> +dotnet-pkg_src_install() {
> +	# Install the compiled .NET package artifacts,
> +	# for more info see "dotnet-pkg-utils_install" and "DOTNET_OUTPUT".
> +	dotnet-pkg-utils_install
> +
> +	# Create launcher from the .NET package directory to "/usr/bin".
> +	# For example: /usr/bin/Nake -> /usr/share/nake-3.0.0/Nake
> +	dotnet-pkg-utils_dolauncher /usr/share/${P}/${PN^}
> +
> +	# Create a compatibility symlink and also for ease of use from CLI.
> +	dosym -r /usr/bin/${PN^} /usr/bin/${PN}
> +
> +	einstalldocs
> +}
> +
> +EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install
> +
> +fi


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 377 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism
  2023-07-16 12:38 ` [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism Maciej Barć
@ 2023-07-16 12:58   ` Sam James
  2023-07-16 13:31     ` Maciej Barć
  0 siblings, 1 reply; 18+ messages in thread
From: Sam James @ 2023-07-16 12:58 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

[-- Attachment #1: Type: text/plain, Size: 20550 bytes --]


Maciej Barć <xgqt@gentoo.org> writes:

> Bug: https://bugs.gentoo.org/900597
> Bug: https://github.com/gentoo/gentoo/pull/29309
> Signed-off-by: Maciej Barć <xgqt@gentoo.org>
> ---
>  dev-dotnet/dotnet-sdk-bin/Manifest            | 36 ++++++----
>  .../dotnet-sdk-bin-6.0.402-r3.ebuild          | 65 ++++++++++++++++++
>  .../dotnet-sdk-bin-6.0.404-r1.ebuild          | 65 ++++++++++++++++++
>  .../dotnet-sdk-bin-7.0.200-r1.ebuild          | 66 +++++++++++++++++++
>  .../dotnet-sdk-bin-7.0.203.ebuild             | 66 +++++++++++++++++++
>  dev-dotnet/dotnet-sdk-bin/metadata.xml        |  6 +-
>  6 files changed, 287 insertions(+), 17 deletions(-)
>  create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
>  create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild
>  create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild
>  create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild
>
> diff --git a/dev-dotnet/dotnet-sdk-bin/Manifest b/dev-dotnet/dotnet-sdk-bin/Manifest
> index 0db1365533..34d9d16893 100644
> --- a/dev-dotnet/dotnet-sdk-bin/Manifest
> +++ b/dev-dotnet/dotnet-sdk-bin/Manifest
> @@ -1,12 +1,24 @@
> -DIST dotnet-sdk-6.0.404-linux-arm.tar.gz 181563995 BLAKE2B ff359d26264f0298d6210a2b7ae8cd0f1b577bf9937aaff09805f361e54349bdab5338182b674c81c8cb330c90f7a17a601ccce899e63f2e837a90bfd02c3726 SHA512 1b9b5e0c45f90a4c752bf6990e5dda4110403a62392dc78abf9145c69b1d329b2630945a88cb4d7756322b188b7f4a9334bfc376067edff5dcfabfd85098d7d8
> -DIST dotnet-sdk-6.0.404-linux-arm64.tar.gz 180324700 BLAKE2B 33780337294f427da0b8d44d8a3819c4276c0b01ffefe5a846cc5524039a5af203a231fe5893c63dce5b1557cd1288c4cb3e1d93505320a49eeccd4fd22cefe7 SHA512 7c58595aa57b655ff5a268ae4fc680ff3fb15a84dcc0ce84ae7eb25ba27bf66f0c5273c985f15034583f5b05437a5354db68c4064953030dc4caebb11339ac76
> -DIST dotnet-sdk-6.0.404-linux-musl-arm.tar.gz 182613890 BLAKE2B f0475535f703a80c23a881ef578eeac87923586b27bcc7ed018b75aa88dccc84dcbd9e20543b1e502e0e800b947afd8e6bbc3a44b4101ad786674d0ad2fb196a SHA512 d7818ea567db81832cfeed5057c42255d2f19750a741a2cbc57e2d7134267a27e9937f86846b30f393c6f0ad2dbf0f4c73a902ed78b0de56138f077f62f34686
> -DIST dotnet-sdk-6.0.404-linux-musl-arm64.tar.gz 180323728 BLAKE2B ff32a89653f265df2fda39dc0bb2ff6853e6fced029fb1a16096436a7876ad061e55a1d45fd29f395e4d6585f67cde2e5d95b0c0c2bbaec2b073cfd2785c87e5 SHA512 999220f7247881d44c7f5a429b25c04d31044a1b91af5ede3f899df142af2d9f056a4ac6058c9e56f14b014a479f3a7455bd499f42f8e0f9b4fcacfeabc023b5
> -DIST dotnet-sdk-6.0.404-linux-musl-x64.tar.gz 185037621 BLAKE2B 0ff97d56c4d061cb5f227c745afb34cf462c286f4c0347224885360cec861dfd59f90a6ef85571c49aa79b12d558111b07a29ac48451739f721e5b13d45f94c1 SHA512 5313d8cbb41e27f462a141914f852e3d3e729886ce063be82778e1444df2d44dadcd2829f60ae97ae300d19798fab9d3b3932a7d9b9d00e948a80ccebbf5e106
> -DIST dotnet-sdk-6.0.404-linux-x64.tar.gz 185546757 BLAKE2B ce8447f82b93880c6491e06fd35d556b880f59403fd7c6161d228271de6bffc6c74810e5ec5d834e35a715b9bc6173cb028aeb443bd28717a2d8838b543eec9f SHA512 7a0f4b308d3fe98df9b426b0f8f8fb7bd7247244af3570e867a3969349c62c7ea4c6da81a1a2280788e300784167a2933db523f461985aef0681e0cf14bf8f0d
> -DIST dotnet-sdk-7.0.200-linux-arm.tar.gz 192996891 BLAKE2B 43c271a53d2eeebfbbeb7702e0c7a203960b57246f4b1f557d78391abdf10d0cca87c7ee364a37151f8e9e91df53e427df077a7cc25e1ccce5ac5d37fc73bc3a SHA512 7b1072c8080a0f38946d207945417dbeea4cbb688c2ea2dba1cb31330da15652da0823d8571c063a08830fe2157dbacb635eb2a8c7f20033cd1b8a35a9cfde36
> -DIST dotnet-sdk-7.0.200-linux-arm64.tar.gz 193106712 BLAKE2B 5db6eab8bf56a85a15e6107bd4bca0dd4669d9eb2b3db287b8aa7621e38e07ce213c8e2446add010623b78b7092c0658d17bf4c90a059440778519e5aa117a9e SHA512 2990b7d2b23adb2b2621786ba774450e8cf73bf872173ab57026d7658599accdb5a4cefb5292945e264408f833503210621ed787c8d77eb467d3b204da8073a8
> -DIST dotnet-sdk-7.0.200-linux-musl-arm.tar.gz 192955116 BLAKE2B 5b5549e158ebc7059b123d601566efddaacd04aa6ee531699b3c70327b2f2005ed11cbb7dea7b9a8a9c5f792fcc7461ea34b0a33a81828b4085327f219224d19 SHA512 1e4f9160cb93ca9704015e787491bf78c5850c2a0aa7f5794b35f607f6f342903c9d8aa182593133d6609d5b9aded9bed769855213e0464311f357a65df0a640
> -DIST dotnet-sdk-7.0.200-linux-musl-arm64.tar.gz 192893152 BLAKE2B ea793eebc9d414f5f8dd0c4a1b2c0330bf762db8fb1626aaa97d84b8fffe2a6b8d85f8cf735467dd49d6f588cd17254dad7ced926410f7e26488da08e0bb593a SHA512 63c568b1e0014e2039def200fde47d932e5366ba794fcd89f0efbcfd845e8b8b1c0ede6406a518f366356f5b566df2d0a1b53e6fdc9b58a26a59bdaa89e0ce32
> -DIST dotnet-sdk-7.0.200-linux-musl-x64.tar.gz 197209986 BLAKE2B 4219149ed4f682ecb3d2c00cb2ed24f5352153ca0a5063bf07e7d42ddce95a5d3b4924e257bc166e1a1ca779dd9fb1d8e52d7a17a37ae73a596f3b5f4ed98c5b SHA512 e907c96e7f1c7a3497f8726176b1fad9e93050b7b5f30900a634d253c4c5c822c8d729b22b36fa00d5bb2be0834f6c683d47db8c22077fbb191e38ae67e12119
> -DIST dotnet-sdk-7.0.200-linux-x64.tar.gz 197802070 BLAKE2B 100af2f1e3fda195542f383a449473b1e52a7c5c1ff40b3ee666305a883885e1440996be7e588d8ccad44702917cf8d5e87900a59d80b8a43f9ba76a8e602927 SHA512 bb88cc5099bcb090608f5e02e7fcdc4f6a82114881378efd469afb210e00909d8dcc4d07d188851ef2782ba755321096de175d83ca67af3c4dcb8d3c1d217756
> +DIST dotnet-sdk-6.0.402-linux-arm.tar.gz 181622588 BLAKE2B 1010a7cd9f598e0487af127f9e1dac86681479cd6d95e39eb5f1fbf555fd3923be7e2a56bf0bc878259c17e7eb66b711da9587fcfc8ac3ab5f5b17abff1c6da7
> +DIST dotnet-sdk-6.0.402-linux-arm64.tar.gz 179368834 BLAKE2B 102b1f2ce6d3162ad423b1e24c7f4730b2846aee5d6eb19a2fbbc52271f18cda1d98121c39fd9e2dd375c2837ab5a6714f8acc81245ab720f13c5b4c6e4e9dc3
> +DIST dotnet-sdk-6.0.402-linux-musl-arm.tar.gz 181678689 BLAKE2B 66d059106c0daab97497585935f85febcc1099474dc8f72e25e7ec2ad91b0f118a4978a0875508d11f1d5b47b75ce29e0a6782fa84c4ab654f8f6a44444c31b2
> +DIST dotnet-sdk-6.0.402-linux-musl-arm64.tar.gz 179488323 BLAKE2B 459bfc25c250e36ed351eb76037aac29f999ae111889662079d13555707e2006c719ec88516ffed013e6d88fc836d41148b81d194afaa3049ae2696b8c606d63
> +DIST dotnet-sdk-6.0.402-linux-musl-x64.tar.gz 185028850 BLAKE2B 92f24b251d8d36d7cf154c44ff5096b069cd4df1fd3a1a3aea9d4aedb8934ab81ae2c33ae891cd892d942ecceb0ed677ee4c8eb242ad43a7c7f9a4ac2303a79a
> +DIST dotnet-sdk-6.0.402-linux-x64.tar.gz 185619780 BLAKE2B 1880ec1f94bd8c79db550fae5c0bd684e7e96e5ee99d5bf41c20a0d9678facb6aaca0065d246015feaa265b0e99d95afaff4f1468fabd04594a9834224afc118
> +DIST dotnet-sdk-6.0.404-linux-arm.tar.gz 181563995 BLAKE2B ff359d26264f0298d6210a2b7ae8cd0f1b577bf9937aaff09805f361e54349bdab5338182b674c81c8cb330c90f7a17a601ccce899e63f2e837a90bfd02c3726
> +DIST dotnet-sdk-6.0.404-linux-arm64.tar.gz 180324700 BLAKE2B 33780337294f427da0b8d44d8a3819c4276c0b01ffefe5a846cc5524039a5af203a231fe5893c63dce5b1557cd1288c4cb3e1d93505320a49eeccd4fd22cefe7
> +DIST dotnet-sdk-6.0.404-linux-musl-arm.tar.gz 182613890 BLAKE2B f0475535f703a80c23a881ef578eeac87923586b27bcc7ed018b75aa88dccc84dcbd9e20543b1e502e0e800b947afd8e6bbc3a44b4101ad786674d0ad2fb196a
> +DIST dotnet-sdk-6.0.404-linux-musl-arm64.tar.gz 180323728 BLAKE2B ff32a89653f265df2fda39dc0bb2ff6853e6fced029fb1a16096436a7876ad061e55a1d45fd29f395e4d6585f67cde2e5d95b0c0c2bbaec2b073cfd2785c87e5
> +DIST dotnet-sdk-6.0.404-linux-musl-x64.tar.gz 185037621 BLAKE2B 0ff97d56c4d061cb5f227c745afb34cf462c286f4c0347224885360cec861dfd59f90a6ef85571c49aa79b12d558111b07a29ac48451739f721e5b13d45f94c1
> +DIST dotnet-sdk-6.0.404-linux-x64.tar.gz 185546757 BLAKE2B ce8447f82b93880c6491e06fd35d556b880f59403fd7c6161d228271de6bffc6c74810e5ec5d834e35a715b9bc6173cb028aeb443bd28717a2d8838b543eec9f
> +DIST dotnet-sdk-7.0.200-linux-arm.tar.gz 192996891 BLAKE2B 43c271a53d2eeebfbbeb7702e0c7a203960b57246f4b1f557d78391abdf10d0cca87c7ee364a37151f8e9e91df53e427df077a7cc25e1ccce5ac5d37fc73bc3a
> +DIST dotnet-sdk-7.0.200-linux-arm64.tar.gz 193106712 BLAKE2B 5db6eab8bf56a85a15e6107bd4bca0dd4669d9eb2b3db287b8aa7621e38e07ce213c8e2446add010623b78b7092c0658d17bf4c90a059440778519e5aa117a9e
> +DIST dotnet-sdk-7.0.200-linux-musl-arm.tar.gz 192955116 BLAKE2B 5b5549e158ebc7059b123d601566efddaacd04aa6ee531699b3c70327b2f2005ed11cbb7dea7b9a8a9c5f792fcc7461ea34b0a33a81828b4085327f219224d19
> +DIST dotnet-sdk-7.0.200-linux-musl-arm64.tar.gz 192893152 BLAKE2B ea793eebc9d414f5f8dd0c4a1b2c0330bf762db8fb1626aaa97d84b8fffe2a6b8d85f8cf735467dd49d6f588cd17254dad7ced926410f7e26488da08e0bb593a
> +DIST dotnet-sdk-7.0.200-linux-musl-x64.tar.gz 197209986 BLAKE2B 4219149ed4f682ecb3d2c00cb2ed24f5352153ca0a5063bf07e7d42ddce95a5d3b4924e257bc166e1a1ca779dd9fb1d8e52d7a17a37ae73a596f3b5f4ed98c5b
> +DIST dotnet-sdk-7.0.200-linux-x64.tar.gz 197802070 BLAKE2B 100af2f1e3fda195542f383a449473b1e52a7c5c1ff40b3ee666305a883885e1440996be7e588d8ccad44702917cf8d5e87900a59d80b8a43f9ba76a8e602927
> +DIST dotnet-sdk-7.0.203-linux-arm.tar.gz 193128471 BLAKE2B 38f4c3d001770890b0de6f816a42e41ca7f05463f1924069fcbc15c344f2d713d68d5c8bbcbaba3adb1679b987cc543ef7c75a5f0afa0ba5def54cd1e3023a5d
> +DIST dotnet-sdk-7.0.203-linux-arm64.tar.gz 193040248 BLAKE2B 38eb2d586de235bfa30b297099fe2287ce47afca648275d1a6b80e5237588107448f5310ab9e16e93eed91b4a2cb93727ec82451ab643d737a0467dce445bc46
> +DIST dotnet-sdk-7.0.203-linux-musl-arm.tar.gz 193086103 BLAKE2B fbd943578a9ad1eeeb01a4d31c662b7bbf61409041f5595dd4d52e036fd76c55ea28d0d4f8b1b6ef213f2a7afbf8d724d7b1bd27925a0a7d3d34d9632e8a17bb
> +DIST dotnet-sdk-7.0.203-linux-musl-arm64.tar.gz 193132851 BLAKE2B 6375b410b5e0c3163c4de0306aa618f72104574195b6076854a5222ba9720cc9fe7eb1ddff37f88a78758311dca58a3c093b503233aa4df60d93494b79435ada
> +DIST dotnet-sdk-7.0.203-linux-musl-x64.tar.gz 197345038 BLAKE2B 7c9a016c0ac9a78b0337fc58670788e11950cd5db9d22ef9845ab40ff6969138f76d878dca9972183f73c35fef0940e690a57fa7e44bf7236e9cd73010e30267
> +DIST dotnet-sdk-7.0.203-linux-x64.tar.gz 197819323 BLAKE2B f95c9d34f7feba5c0e1407c9c4012361f1bb282748d7644a9e823d3b39d62a42ab3de3e8ce2a310b40ea180069bddea3eef07973043ba2f20020365f9adfd52c
> diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
> new file mode 100644
> index 0000000000..f2f49466ae
> --- /dev/null
> +++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
> @@ -0,0 +1,65 @@
> +# Copyright 1999-2023 Gentoo Authors
> +# Distributed under the terms of the GNU General Public License v2
> +
> +EAPI=8
> +
> +DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
> +HOMEPAGE="https://dotnet.microsoft.com/"
> +SRC_URI="
> +amd64? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
> +)
> +arm? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
> +)
> +arm64? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
> +)
> +"
> +S="${WORKDIR}"
> +
> +SDK_SLOT="$(ver_cut 1-2)"
> +RUNTIME_SLOT="${SDK_SLOT}.12"
> +SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
> +
> +LICENSE="MIT"
> +KEYWORDS="~amd64 ~arm ~arm64"
> +RESTRICT+=" splitdebug "
> +

Why? Add a comment.

> +RDEPEND="
> +	app-crypt/mit-krb5:0/0
> +	dev-libs/icu
> +	dev-util/lttng-ust:0/2.12
> +	sys-libs/zlib:0/1
> +"
> +IDEPEND="app-eselect/eselect-dotnet"
> +PDEPEND="
> +	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
> +	~dev-dotnet/dotnet-runtime-nugets-3.1.32
> +"
> +

What's this about?

> +QA_PREBUILT="*"
> +
> +src_install() {
> +	local dest=opt/${PN}-${SDK_SLOT}
> +	dodir "${dest%/*}"
> +
> +	# Create a magic workloads file, bug #841896
> +	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
> +	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
> +	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
> +
> +	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
> +	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
> +}
> +
> +pkg_postinst() {
> +	eselect dotnet update ifunset
> +}
> +
> +pkg_postrm() {
> +	eselect dotnet update ifunset
> +}
> diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild
> new file mode 100644
> index 0000000000..f2f49466ae
> --- /dev/null
> +++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild
> @@ -0,0 +1,65 @@
> +# Copyright 1999-2023 Gentoo Authors
> +# Distributed under the terms of the GNU General Public License v2
> +
> +EAPI=8
> +
> +DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
> +HOMEPAGE="https://dotnet.microsoft.com/"
> +SRC_URI="
> +amd64? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
> +)
> +arm? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
> +)
> +arm64? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
> +)
> +"
> +S="${WORKDIR}"
> +
> +SDK_SLOT="$(ver_cut 1-2)"
> +RUNTIME_SLOT="${SDK_SLOT}.12"
> +SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
> +
> +LICENSE="MIT"
> +KEYWORDS="~amd64 ~arm ~arm64"
> +RESTRICT+=" splitdebug "
> +
> +RDEPEND="
> +	app-crypt/mit-krb5:0/0
> +	dev-libs/icu
> +	dev-util/lttng-ust:0/2.12
> +	sys-libs/zlib:0/1
> +"
> +IDEPEND="app-eselect/eselect-dotnet"
> +PDEPEND="
> +	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
> +	~dev-dotnet/dotnet-runtime-nugets-3.1.32
> +"
> +
> +QA_PREBUILT="*"
> +
> +src_install() {
> +	local dest=opt/${PN}-${SDK_SLOT}
> +	dodir "${dest%/*}"
> +
> +	# Create a magic workloads file, bug #841896
> +	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
> +	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
> +	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
> +
> +	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
> +	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
> +}
> +
> +pkg_postinst() {
> +	eselect dotnet update ifunset
> +}
> +
> +pkg_postrm() {
> +	eselect dotnet update ifunset
> +}
> diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild
> new file mode 100644
> index 0000000000..21f829f18d
> --- /dev/null
> +++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild
> @@ -0,0 +1,66 @@
> +# Copyright 1999-2023 Gentoo Authors
> +# Distributed under the terms of the GNU General Public License v2
> +
> +EAPI=8
> +
> +DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
> +HOMEPAGE="https://dotnet.microsoft.com/"
> +SRC_URI="
> +amd64? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
> +)
> +arm? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
> +)
> +arm64? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
> +)
> +"
> +S="${WORKDIR}"
> +
> +SDK_SLOT="$(ver_cut 1-2)"
> +RUNTIME_SLOT="${SDK_SLOT}.3"
> +SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
> +
> +LICENSE="MIT"
> +KEYWORDS="~amd64 ~arm ~arm64"
> +RESTRICT+=" splitdebug "
> +
> +RDEPEND="
> +	app-crypt/mit-krb5:0/0
> +	dev-libs/icu
> +	dev-util/lttng-ust:0/2.12
> +	sys-libs/zlib:0/1
> +"
> +IDEPEND="app-eselect/eselect-dotnet"
> +PDEPEND="
> +	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
> +	~dev-dotnet/dotnet-runtime-nugets-3.1.32
> +	~dev-dotnet/dotnet-runtime-nugets-6.0.14
> +"
> +
> +QA_PREBUILT="*"
> +
> +src_install() {
> +	local dest=opt/${PN}-${SDK_SLOT}
> +	dodir "${dest%/*}"
> +
> +	# Create a magic workloads file, bug #841896
> +	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
> +	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
> +	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
> +
> +	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
> +	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
> +}
> +
> +pkg_postinst() {
> +	eselect dotnet update ifunset
> +}
> +
> +pkg_postrm() {
> +	eselect dotnet update ifunset
> +}
> diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild
> new file mode 100644
> index 0000000000..2677f7beeb
> --- /dev/null
> +++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild
> @@ -0,0 +1,66 @@
> +# Copyright 1999-2023 Gentoo Authors
> +# Distributed under the terms of the GNU General Public License v2
> +
> +EAPI=8
> +
> +DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
> +HOMEPAGE="https://dotnet.microsoft.com/"
> +SRC_URI="
> +amd64? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
> +)
> +arm? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
> +)
> +arm64? (
> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
> +)
> +"
> +S="${WORKDIR}"
> +
> +SDK_SLOT="$(ver_cut 1-2)"
> +RUNTIME_SLOT="${SDK_SLOT}.5"
> +SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
> +
> +LICENSE="MIT"
> +KEYWORDS="~amd64 ~arm ~arm64"
> +RESTRICT+=" splitdebug "
> +
> +RDEPEND="
> +	app-crypt/mit-krb5:0/0
> +	dev-libs/icu
> +	dev-util/lttng-ust:0/2.12
> +	sys-libs/zlib:0/1
> +"
> +IDEPEND="app-eselect/eselect-dotnet"
> +PDEPEND="
> +	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
> +	~dev-dotnet/dotnet-runtime-nugets-3.1.32
> +	~dev-dotnet/dotnet-runtime-nugets-6.0.16
> +"
> +
> +QA_PREBUILT="*"
> +
> +src_install() {
> +	local dest=opt/${PN}-${SDK_SLOT}
> +	dodir "${dest%/*}"
> +
> +	# Create a magic workloads file, bug #841896
> +	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
> +	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
> +	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
> +
> +	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
> +	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
> +}
> +
> +pkg_postinst() {
> +	eselect dotnet update ifunset
> +}
> +
> +pkg_postrm() {
> +	eselect dotnet update ifunset
> +}
> diff --git a/dev-dotnet/dotnet-sdk-bin/metadata.xml b/dev-dotnet/dotnet-sdk-bin/metadata.xml
> index e32a6dd415..f0c088d014 100644
> --- a/dev-dotnet/dotnet-sdk-bin/metadata.xml
> +++ b/dev-dotnet/dotnet-sdk-bin/metadata.xml
> @@ -6,13 +6,9 @@
>      <email>dotnet@gentoo.org</email>
>      <name>Gentoo Dotnet Project</name>
>    </maintainer>
> -  <use>
> -    <flag name="dotnet-symlink">
> -      Install a dotnet symlink that points to dotnet-bin.
> -    </flag>
> -  </use>
>    <upstream>
>      <doc>https://learn.microsoft.com/en-us/dotnet/</doc>
> +    <bugs-to>https://github.com/dotnet/sdk/issues/</bugs-to>
>      <remote-id type="github">dotnet/sdk</remote-id>
>    </upstream>
>  </pkgmetadata>


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 377 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism
  2023-07-16 12:58   ` Sam James
@ 2023-07-16 13:31     ` Maciej Barć
  0 siblings, 0 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 13:31 UTC (permalink / raw
  To: Sam James, gentoo-dev

>> +RESTRICT+=" splitdebug "
>> +
> 
> Why? Add a comment.
> 

Added by previous maint.

>> +PDEPEND="
>> +	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
>> +	~dev-dotnet/dotnet-runtime-nugets-3.1.32
>> +"
>> +
> 
> What's this about?

Wanted to comment right away, but needed to wait for mialing list to 
digest my patches.

Ok, so essentially when building .NET packages dotnet-sdk will 
**always** pull in a set of predefined nugets that need to be in the 
${NUGET_PACKAGES} dir. If they are not there, then the build fails.

Because otherwise we would have to have a very ugly if-else in the 
eclass we pull them regardless if user will build dev-dotnet packages.

The elcass later copies those nugets from /opt/dotnet-nugest to 
NUGEt_PACKAGES dir.

This set is different for each dotnet-sdk version and has to be checked 
while packaging new dotnet-sdk versions by restoring a package without 
other dependencies for each supported .NET version: that is: 3.1, 6.0 
and 7.0.

W dniu 16.07.2023 o 14:58, Sam James pisze:
> 
> Maciej Barć <xgqt@gentoo.org> writes:
> 
>> Bug: https://bugs.gentoo.org/900597
>> Bug: https://github.com/gentoo/gentoo/pull/29309
>> Signed-off-by: Maciej Barć <xgqt@gentoo.org>
>> ---
>>   dev-dotnet/dotnet-sdk-bin/Manifest            | 36 ++++++----
>>   .../dotnet-sdk-bin-6.0.402-r3.ebuild          | 65 ++++++++++++++++++
>>   .../dotnet-sdk-bin-6.0.404-r1.ebuild          | 65 ++++++++++++++++++
>>   .../dotnet-sdk-bin-7.0.200-r1.ebuild          | 66 +++++++++++++++++++
>>   .../dotnet-sdk-bin-7.0.203.ebuild             | 66 +++++++++++++++++++
>>   dev-dotnet/dotnet-sdk-bin/metadata.xml        |  6 +-
>>   6 files changed, 287 insertions(+), 17 deletions(-)
>>   create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
>>   create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild
>>   create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild
>>   create mode 100644 dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild
>>
>> diff --git a/dev-dotnet/dotnet-sdk-bin/Manifest b/dev-dotnet/dotnet-sdk-bin/Manifest
>> index 0db1365533..34d9d16893 100644
>> --- a/dev-dotnet/dotnet-sdk-bin/Manifest
>> +++ b/dev-dotnet/dotnet-sdk-bin/Manifest
>> @@ -1,12 +1,24 @@
>> -DIST dotnet-sdk-6.0.404-linux-arm.tar.gz 181563995 BLAKE2B ff359d26264f0298d6210a2b7ae8cd0f1b577bf9937aaff09805f361e54349bdab5338182b674c81c8cb330c90f7a17a601ccce899e63f2e837a90bfd02c3726 SHA512 1b9b5e0c45f90a4c752bf6990e5dda4110403a62392dc78abf9145c69b1d329b2630945a88cb4d7756322b188b7f4a9334bfc376067edff5dcfabfd85098d7d8
>> -DIST dotnet-sdk-6.0.404-linux-arm64.tar.gz 180324700 BLAKE2B 33780337294f427da0b8d44d8a3819c4276c0b01ffefe5a846cc5524039a5af203a231fe5893c63dce5b1557cd1288c4cb3e1d93505320a49eeccd4fd22cefe7 SHA512 7c58595aa57b655ff5a268ae4fc680ff3fb15a84dcc0ce84ae7eb25ba27bf66f0c5273c985f15034583f5b05437a5354db68c4064953030dc4caebb11339ac76
>> -DIST dotnet-sdk-6.0.404-linux-musl-arm.tar.gz 182613890 BLAKE2B f0475535f703a80c23a881ef578eeac87923586b27bcc7ed018b75aa88dccc84dcbd9e20543b1e502e0e800b947afd8e6bbc3a44b4101ad786674d0ad2fb196a SHA512 d7818ea567db81832cfeed5057c42255d2f19750a741a2cbc57e2d7134267a27e9937f86846b30f393c6f0ad2dbf0f4c73a902ed78b0de56138f077f62f34686
>> -DIST dotnet-sdk-6.0.404-linux-musl-arm64.tar.gz 180323728 BLAKE2B ff32a89653f265df2fda39dc0bb2ff6853e6fced029fb1a16096436a7876ad061e55a1d45fd29f395e4d6585f67cde2e5d95b0c0c2bbaec2b073cfd2785c87e5 SHA512 999220f7247881d44c7f5a429b25c04d31044a1b91af5ede3f899df142af2d9f056a4ac6058c9e56f14b014a479f3a7455bd499f42f8e0f9b4fcacfeabc023b5
>> -DIST dotnet-sdk-6.0.404-linux-musl-x64.tar.gz 185037621 BLAKE2B 0ff97d56c4d061cb5f227c745afb34cf462c286f4c0347224885360cec861dfd59f90a6ef85571c49aa79b12d558111b07a29ac48451739f721e5b13d45f94c1 SHA512 5313d8cbb41e27f462a141914f852e3d3e729886ce063be82778e1444df2d44dadcd2829f60ae97ae300d19798fab9d3b3932a7d9b9d00e948a80ccebbf5e106
>> -DIST dotnet-sdk-6.0.404-linux-x64.tar.gz 185546757 BLAKE2B ce8447f82b93880c6491e06fd35d556b880f59403fd7c6161d228271de6bffc6c74810e5ec5d834e35a715b9bc6173cb028aeb443bd28717a2d8838b543eec9f SHA512 7a0f4b308d3fe98df9b426b0f8f8fb7bd7247244af3570e867a3969349c62c7ea4c6da81a1a2280788e300784167a2933db523f461985aef0681e0cf14bf8f0d
>> -DIST dotnet-sdk-7.0.200-linux-arm.tar.gz 192996891 BLAKE2B 43c271a53d2eeebfbbeb7702e0c7a203960b57246f4b1f557d78391abdf10d0cca87c7ee364a37151f8e9e91df53e427df077a7cc25e1ccce5ac5d37fc73bc3a SHA512 7b1072c8080a0f38946d207945417dbeea4cbb688c2ea2dba1cb31330da15652da0823d8571c063a08830fe2157dbacb635eb2a8c7f20033cd1b8a35a9cfde36
>> -DIST dotnet-sdk-7.0.200-linux-arm64.tar.gz 193106712 BLAKE2B 5db6eab8bf56a85a15e6107bd4bca0dd4669d9eb2b3db287b8aa7621e38e07ce213c8e2446add010623b78b7092c0658d17bf4c90a059440778519e5aa117a9e SHA512 2990b7d2b23adb2b2621786ba774450e8cf73bf872173ab57026d7658599accdb5a4cefb5292945e264408f833503210621ed787c8d77eb467d3b204da8073a8
>> -DIST dotnet-sdk-7.0.200-linux-musl-arm.tar.gz 192955116 BLAKE2B 5b5549e158ebc7059b123d601566efddaacd04aa6ee531699b3c70327b2f2005ed11cbb7dea7b9a8a9c5f792fcc7461ea34b0a33a81828b4085327f219224d19 SHA512 1e4f9160cb93ca9704015e787491bf78c5850c2a0aa7f5794b35f607f6f342903c9d8aa182593133d6609d5b9aded9bed769855213e0464311f357a65df0a640
>> -DIST dotnet-sdk-7.0.200-linux-musl-arm64.tar.gz 192893152 BLAKE2B ea793eebc9d414f5f8dd0c4a1b2c0330bf762db8fb1626aaa97d84b8fffe2a6b8d85f8cf735467dd49d6f588cd17254dad7ced926410f7e26488da08e0bb593a SHA512 63c568b1e0014e2039def200fde47d932e5366ba794fcd89f0efbcfd845e8b8b1c0ede6406a518f366356f5b566df2d0a1b53e6fdc9b58a26a59bdaa89e0ce32
>> -DIST dotnet-sdk-7.0.200-linux-musl-x64.tar.gz 197209986 BLAKE2B 4219149ed4f682ecb3d2c00cb2ed24f5352153ca0a5063bf07e7d42ddce95a5d3b4924e257bc166e1a1ca779dd9fb1d8e52d7a17a37ae73a596f3b5f4ed98c5b SHA512 e907c96e7f1c7a3497f8726176b1fad9e93050b7b5f30900a634d253c4c5c822c8d729b22b36fa00d5bb2be0834f6c683d47db8c22077fbb191e38ae67e12119
>> -DIST dotnet-sdk-7.0.200-linux-x64.tar.gz 197802070 BLAKE2B 100af2f1e3fda195542f383a449473b1e52a7c5c1ff40b3ee666305a883885e1440996be7e588d8ccad44702917cf8d5e87900a59d80b8a43f9ba76a8e602927 SHA512 bb88cc5099bcb090608f5e02e7fcdc4f6a82114881378efd469afb210e00909d8dcc4d07d188851ef2782ba755321096de175d83ca67af3c4dcb8d3c1d217756
>> +DIST dotnet-sdk-6.0.402-linux-arm.tar.gz 181622588 BLAKE2B 1010a7cd9f598e0487af127f9e1dac86681479cd6d95e39eb5f1fbf555fd3923be7e2a56bf0bc878259c17e7eb66b711da9587fcfc8ac3ab5f5b17abff1c6da7
>> +DIST dotnet-sdk-6.0.402-linux-arm64.tar.gz 179368834 BLAKE2B 102b1f2ce6d3162ad423b1e24c7f4730b2846aee5d6eb19a2fbbc52271f18cda1d98121c39fd9e2dd375c2837ab5a6714f8acc81245ab720f13c5b4c6e4e9dc3
>> +DIST dotnet-sdk-6.0.402-linux-musl-arm.tar.gz 181678689 BLAKE2B 66d059106c0daab97497585935f85febcc1099474dc8f72e25e7ec2ad91b0f118a4978a0875508d11f1d5b47b75ce29e0a6782fa84c4ab654f8f6a44444c31b2
>> +DIST dotnet-sdk-6.0.402-linux-musl-arm64.tar.gz 179488323 BLAKE2B 459bfc25c250e36ed351eb76037aac29f999ae111889662079d13555707e2006c719ec88516ffed013e6d88fc836d41148b81d194afaa3049ae2696b8c606d63
>> +DIST dotnet-sdk-6.0.402-linux-musl-x64.tar.gz 185028850 BLAKE2B 92f24b251d8d36d7cf154c44ff5096b069cd4df1fd3a1a3aea9d4aedb8934ab81ae2c33ae891cd892d942ecceb0ed677ee4c8eb242ad43a7c7f9a4ac2303a79a
>> +DIST dotnet-sdk-6.0.402-linux-x64.tar.gz 185619780 BLAKE2B 1880ec1f94bd8c79db550fae5c0bd684e7e96e5ee99d5bf41c20a0d9678facb6aaca0065d246015feaa265b0e99d95afaff4f1468fabd04594a9834224afc118
>> +DIST dotnet-sdk-6.0.404-linux-arm.tar.gz 181563995 BLAKE2B ff359d26264f0298d6210a2b7ae8cd0f1b577bf9937aaff09805f361e54349bdab5338182b674c81c8cb330c90f7a17a601ccce899e63f2e837a90bfd02c3726
>> +DIST dotnet-sdk-6.0.404-linux-arm64.tar.gz 180324700 BLAKE2B 33780337294f427da0b8d44d8a3819c4276c0b01ffefe5a846cc5524039a5af203a231fe5893c63dce5b1557cd1288c4cb3e1d93505320a49eeccd4fd22cefe7
>> +DIST dotnet-sdk-6.0.404-linux-musl-arm.tar.gz 182613890 BLAKE2B f0475535f703a80c23a881ef578eeac87923586b27bcc7ed018b75aa88dccc84dcbd9e20543b1e502e0e800b947afd8e6bbc3a44b4101ad786674d0ad2fb196a
>> +DIST dotnet-sdk-6.0.404-linux-musl-arm64.tar.gz 180323728 BLAKE2B ff32a89653f265df2fda39dc0bb2ff6853e6fced029fb1a16096436a7876ad061e55a1d45fd29f395e4d6585f67cde2e5d95b0c0c2bbaec2b073cfd2785c87e5
>> +DIST dotnet-sdk-6.0.404-linux-musl-x64.tar.gz 185037621 BLAKE2B 0ff97d56c4d061cb5f227c745afb34cf462c286f4c0347224885360cec861dfd59f90a6ef85571c49aa79b12d558111b07a29ac48451739f721e5b13d45f94c1
>> +DIST dotnet-sdk-6.0.404-linux-x64.tar.gz 185546757 BLAKE2B ce8447f82b93880c6491e06fd35d556b880f59403fd7c6161d228271de6bffc6c74810e5ec5d834e35a715b9bc6173cb028aeb443bd28717a2d8838b543eec9f
>> +DIST dotnet-sdk-7.0.200-linux-arm.tar.gz 192996891 BLAKE2B 43c271a53d2eeebfbbeb7702e0c7a203960b57246f4b1f557d78391abdf10d0cca87c7ee364a37151f8e9e91df53e427df077a7cc25e1ccce5ac5d37fc73bc3a
>> +DIST dotnet-sdk-7.0.200-linux-arm64.tar.gz 193106712 BLAKE2B 5db6eab8bf56a85a15e6107bd4bca0dd4669d9eb2b3db287b8aa7621e38e07ce213c8e2446add010623b78b7092c0658d17bf4c90a059440778519e5aa117a9e
>> +DIST dotnet-sdk-7.0.200-linux-musl-arm.tar.gz 192955116 BLAKE2B 5b5549e158ebc7059b123d601566efddaacd04aa6ee531699b3c70327b2f2005ed11cbb7dea7b9a8a9c5f792fcc7461ea34b0a33a81828b4085327f219224d19
>> +DIST dotnet-sdk-7.0.200-linux-musl-arm64.tar.gz 192893152 BLAKE2B ea793eebc9d414f5f8dd0c4a1b2c0330bf762db8fb1626aaa97d84b8fffe2a6b8d85f8cf735467dd49d6f588cd17254dad7ced926410f7e26488da08e0bb593a
>> +DIST dotnet-sdk-7.0.200-linux-musl-x64.tar.gz 197209986 BLAKE2B 4219149ed4f682ecb3d2c00cb2ed24f5352153ca0a5063bf07e7d42ddce95a5d3b4924e257bc166e1a1ca779dd9fb1d8e52d7a17a37ae73a596f3b5f4ed98c5b
>> +DIST dotnet-sdk-7.0.200-linux-x64.tar.gz 197802070 BLAKE2B 100af2f1e3fda195542f383a449473b1e52a7c5c1ff40b3ee666305a883885e1440996be7e588d8ccad44702917cf8d5e87900a59d80b8a43f9ba76a8e602927
>> +DIST dotnet-sdk-7.0.203-linux-arm.tar.gz 193128471 BLAKE2B 38f4c3d001770890b0de6f816a42e41ca7f05463f1924069fcbc15c344f2d713d68d5c8bbcbaba3adb1679b987cc543ef7c75a5f0afa0ba5def54cd1e3023a5d
>> +DIST dotnet-sdk-7.0.203-linux-arm64.tar.gz 193040248 BLAKE2B 38eb2d586de235bfa30b297099fe2287ce47afca648275d1a6b80e5237588107448f5310ab9e16e93eed91b4a2cb93727ec82451ab643d737a0467dce445bc46
>> +DIST dotnet-sdk-7.0.203-linux-musl-arm.tar.gz 193086103 BLAKE2B fbd943578a9ad1eeeb01a4d31c662b7bbf61409041f5595dd4d52e036fd76c55ea28d0d4f8b1b6ef213f2a7afbf8d724d7b1bd27925a0a7d3d34d9632e8a17bb
>> +DIST dotnet-sdk-7.0.203-linux-musl-arm64.tar.gz 193132851 BLAKE2B 6375b410b5e0c3163c4de0306aa618f72104574195b6076854a5222ba9720cc9fe7eb1ddff37f88a78758311dca58a3c093b503233aa4df60d93494b79435ada
>> +DIST dotnet-sdk-7.0.203-linux-musl-x64.tar.gz 197345038 BLAKE2B 7c9a016c0ac9a78b0337fc58670788e11950cd5db9d22ef9845ab40ff6969138f76d878dca9972183f73c35fef0940e690a57fa7e44bf7236e9cd73010e30267
>> +DIST dotnet-sdk-7.0.203-linux-x64.tar.gz 197819323 BLAKE2B f95c9d34f7feba5c0e1407c9c4012361f1bb282748d7644a9e823d3b39d62a42ab3de3e8ce2a310b40ea180069bddea3eef07973043ba2f20020365f9adfd52c
>> diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
>> new file mode 100644
>> index 0000000000..f2f49466ae
>> --- /dev/null
>> +++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.402-r3.ebuild
>> @@ -0,0 +1,65 @@
>> +# Copyright 1999-2023 Gentoo Authors
>> +# Distributed under the terms of the GNU General Public License v2
>> +
>> +EAPI=8
>> +
>> +DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
>> +HOMEPAGE="https://dotnet.microsoft.com/"
>> +SRC_URI="
>> +amd64? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
>> +)
>> +arm? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
>> +)
>> +arm64? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
>> +)
>> +"
>> +S="${WORKDIR}"
>> +
>> +SDK_SLOT="$(ver_cut 1-2)"
>> +RUNTIME_SLOT="${SDK_SLOT}.12"
>> +SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
>> +
>> +LICENSE="MIT"
>> +KEYWORDS="~amd64 ~arm ~arm64"
>> +RESTRICT+=" splitdebug "
>> +
> 
> Why? Add a comment.
> 
>> +RDEPEND="
>> +	app-crypt/mit-krb5:0/0
>> +	dev-libs/icu
>> +	dev-util/lttng-ust:0/2.12
>> +	sys-libs/zlib:0/1
>> +"
>> +IDEPEND="app-eselect/eselect-dotnet"
>> +PDEPEND="
>> +	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
>> +	~dev-dotnet/dotnet-runtime-nugets-3.1.32
>> +"
>> +
> 
> What's this about?
> 
>> +QA_PREBUILT="*"
>> +
>> +src_install() {
>> +	local dest=opt/${PN}-${SDK_SLOT}
>> +	dodir "${dest%/*}"
>> +
>> +	# Create a magic workloads file, bug #841896
>> +	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
>> +	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
>> +	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
>> +
>> +	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
>> +	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
>> +}
>> +
>> +pkg_postinst() {
>> +	eselect dotnet update ifunset
>> +}
>> +
>> +pkg_postrm() {
>> +	eselect dotnet update ifunset
>> +}
>> diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild
>> new file mode 100644
>> index 0000000000..f2f49466ae
>> --- /dev/null
>> +++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-6.0.404-r1.ebuild
>> @@ -0,0 +1,65 @@
>> +# Copyright 1999-2023 Gentoo Authors
>> +# Distributed under the terms of the GNU General Public License v2
>> +
>> +EAPI=8
>> +
>> +DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
>> +HOMEPAGE="https://dotnet.microsoft.com/"
>> +SRC_URI="
>> +amd64? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
>> +)
>> +arm? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
>> +)
>> +arm64? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
>> +)
>> +"
>> +S="${WORKDIR}"
>> +
>> +SDK_SLOT="$(ver_cut 1-2)"
>> +RUNTIME_SLOT="${SDK_SLOT}.12"
>> +SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
>> +
>> +LICENSE="MIT"
>> +KEYWORDS="~amd64 ~arm ~arm64"
>> +RESTRICT+=" splitdebug "
>> +
>> +RDEPEND="
>> +	app-crypt/mit-krb5:0/0
>> +	dev-libs/icu
>> +	dev-util/lttng-ust:0/2.12
>> +	sys-libs/zlib:0/1
>> +"
>> +IDEPEND="app-eselect/eselect-dotnet"
>> +PDEPEND="
>> +	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
>> +	~dev-dotnet/dotnet-runtime-nugets-3.1.32
>> +"
>> +
>> +QA_PREBUILT="*"
>> +
>> +src_install() {
>> +	local dest=opt/${PN}-${SDK_SLOT}
>> +	dodir "${dest%/*}"
>> +
>> +	# Create a magic workloads file, bug #841896
>> +	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
>> +	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
>> +	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
>> +
>> +	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
>> +	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
>> +}
>> +
>> +pkg_postinst() {
>> +	eselect dotnet update ifunset
>> +}
>> +
>> +pkg_postrm() {
>> +	eselect dotnet update ifunset
>> +}
>> diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild
>> new file mode 100644
>> index 0000000000..21f829f18d
>> --- /dev/null
>> +++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.200-r1.ebuild
>> @@ -0,0 +1,66 @@
>> +# Copyright 1999-2023 Gentoo Authors
>> +# Distributed under the terms of the GNU General Public License v2
>> +
>> +EAPI=8
>> +
>> +DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
>> +HOMEPAGE="https://dotnet.microsoft.com/"
>> +SRC_URI="
>> +amd64? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
>> +)
>> +arm? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
>> +)
>> +arm64? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
>> +)
>> +"
>> +S="${WORKDIR}"
>> +
>> +SDK_SLOT="$(ver_cut 1-2)"
>> +RUNTIME_SLOT="${SDK_SLOT}.3"
>> +SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
>> +
>> +LICENSE="MIT"
>> +KEYWORDS="~amd64 ~arm ~arm64"
>> +RESTRICT+=" splitdebug "
>> +
>> +RDEPEND="
>> +	app-crypt/mit-krb5:0/0
>> +	dev-libs/icu
>> +	dev-util/lttng-ust:0/2.12
>> +	sys-libs/zlib:0/1
>> +"
>> +IDEPEND="app-eselect/eselect-dotnet"
>> +PDEPEND="
>> +	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
>> +	~dev-dotnet/dotnet-runtime-nugets-3.1.32
>> +	~dev-dotnet/dotnet-runtime-nugets-6.0.14
>> +"
>> +
>> +QA_PREBUILT="*"
>> +
>> +src_install() {
>> +	local dest=opt/${PN}-${SDK_SLOT}
>> +	dodir "${dest%/*}"
>> +
>> +	# Create a magic workloads file, bug #841896
>> +	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
>> +	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
>> +	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
>> +
>> +	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
>> +	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
>> +}
>> +
>> +pkg_postinst() {
>> +	eselect dotnet update ifunset
>> +}
>> +
>> +pkg_postrm() {
>> +	eselect dotnet update ifunset
>> +}
>> diff --git a/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild
>> new file mode 100644
>> index 0000000000..2677f7beeb
>> --- /dev/null
>> +++ b/dev-dotnet/dotnet-sdk-bin/dotnet-sdk-bin-7.0.203.ebuild
>> @@ -0,0 +1,66 @@
>> +# Copyright 1999-2023 Gentoo Authors
>> +# Distributed under the terms of the GNU General Public License v2
>> +
>> +EAPI=8
>> +
>> +DESCRIPTION=".NET is a free, cross-platform, open-source developer platform"
>> +HOMEPAGE="https://dotnet.microsoft.com/"
>> +SRC_URI="
>> +amd64? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-x64.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-x64.tar.gz )
>> +)
>> +arm? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm.tar.gz )
>> +)
>> +arm64? (
>> +	elibc_glibc? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-arm64.tar.gz )
>> +	elibc_musl? ( https://dotnetcli.azureedge.net/dotnet/Sdk/${PV}/dotnet-sdk-${PV}-linux-musl-arm64.tar.gz )
>> +)
>> +"
>> +S="${WORKDIR}"
>> +
>> +SDK_SLOT="$(ver_cut 1-2)"
>> +RUNTIME_SLOT="${SDK_SLOT}.5"
>> +SLOT="${SDK_SLOT}/${RUNTIME_SLOT}"
>> +
>> +LICENSE="MIT"
>> +KEYWORDS="~amd64 ~arm ~arm64"
>> +RESTRICT+=" splitdebug "
>> +
>> +RDEPEND="
>> +	app-crypt/mit-krb5:0/0
>> +	dev-libs/icu
>> +	dev-util/lttng-ust:0/2.12
>> +	sys-libs/zlib:0/1
>> +"
>> +IDEPEND="app-eselect/eselect-dotnet"
>> +PDEPEND="
>> +	~dev-dotnet/dotnet-runtime-nugets-${RUNTIME_SLOT}
>> +	~dev-dotnet/dotnet-runtime-nugets-3.1.32
>> +	~dev-dotnet/dotnet-runtime-nugets-6.0.16
>> +"
>> +
>> +QA_PREBUILT="*"
>> +
>> +src_install() {
>> +	local dest=opt/${PN}-${SDK_SLOT}
>> +	dodir "${dest%/*}"
>> +
>> +	# Create a magic workloads file, bug #841896
>> +	local featureband="$(ver_cut 3 | sed "s/[0-9]/0/2g")"
>> +	local workloads="metadata/workloads/${SDK_SLOT}.${featureband}"
>> +	{ mkdir -p "${S}/${workloads}" && touch "${S}/${workloads}/userlocal"; } || die
>> +
>> +	{ mv "${S}" "${ED}/${dest}" && mkdir "${S}" && fperms 0755 "/${dest}"; } || die
>> +	dosym ../../${dest}/dotnet /usr/bin/dotnet-bin-${SDK_SLOT}
>> +}
>> +
>> +pkg_postinst() {
>> +	eselect dotnet update ifunset
>> +}
>> +
>> +pkg_postrm() {
>> +	eselect dotnet update ifunset
>> +}
>> diff --git a/dev-dotnet/dotnet-sdk-bin/metadata.xml b/dev-dotnet/dotnet-sdk-bin/metadata.xml
>> index e32a6dd415..f0c088d014 100644
>> --- a/dev-dotnet/dotnet-sdk-bin/metadata.xml
>> +++ b/dev-dotnet/dotnet-sdk-bin/metadata.xml
>> @@ -6,13 +6,9 @@
>>       <email>dotnet@gentoo.org</email>
>>       <name>Gentoo Dotnet Project</name>
>>     </maintainer>
>> -  <use>
>> -    <flag name="dotnet-symlink">
>> -      Install a dotnet symlink that points to dotnet-bin.
>> -    </flag>
>> -  </use>
>>     <upstream>
>>       <doc>https://learn.microsoft.com/en-us/dotnet/</doc>
>> +    <bugs-to>https://github.com/dotnet/sdk/issues/</bugs-to>
>>       <remote-id type="github">dotnet/sdk</remote-id>
>>     </upstream>
>>   </pkgmetadata>
> 

-- 
Have a great day!

~ Maciej XGQT Barć

xgqt@gentoo.org
Gentoo Linux developer
(dotnet, emacs, math, ml, nim, scheme, sci)
https://wiki.gentoo.org/wiki/User:Xgqt
9B0A 4C5D 02A3 B43C 9D6F D6B1 14D7 4A1F 43A6 AC3C


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: introduce new eclass
  2023-07-16 12:48   ` Sam James
@ 2023-07-16 13:35     ` Maciej Barć
  0 siblings, 0 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 13:35 UTC (permalink / raw
  To: Sam James, gentoo-dev

>> +# @FUNCTION: dotnet-pkg-utils_install
>> +# @USAGE: [directory]
>> +# @DESCRIPTION:
>> +# Install the contents of "DOTNET_OUTPUT" into a directory, defaults to
>> +# "/usr/share/${PN}".
>> +#
>> +# Installation directory is relative to "ED".
>> +dotnet-pkg-utils_install() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local installation_directory="${1:-/usr/share/${P}}"
>> +
> 
> The docstring says it defaults to ${PN}, not ${P}?
> 

Typo, should be P.

I agree with the rest.

W dniu 16.07.2023 o 14:48, Sam James pisze:
> 
> Maciej Barć <xgqt@gentoo.org> writes:
> 
>> Bug: https://bugs.gentoo.org/900597
>> Bug: https://github.com/gentoo/gentoo/pull/29309
>> Signed-off-by: Maciej Barć <xgqt@gentoo.org>
>> ---
>>   eclass/dotnet-pkg-utils.eclass | 598 +++++++++++++++++++++++++++++++++
>>   1 file changed, 598 insertions(+)
>>   create mode 100644 eclass/dotnet-pkg-utils.eclass
>>
>> diff --git a/eclass/dotnet-pkg-utils.eclass b/eclass/dotnet-pkg-utils.eclass
>> new file mode 100644
>> index 0000000000..aeabebc92d
>> --- /dev/null
>> +++ b/eclass/dotnet-pkg-utils.eclass
>> @@ -0,0 +1,598 @@
>> +# Copyright 1999-2023 Gentoo Authors
>> +# Distributed under the terms of the GNU General Public License v2
>> +
>> +# @ECLASS: dotnet-pkg-utils.eclass
>> +# @MAINTAINER:
>> +# Gentoo Dotnet project <dotnet@gentoo.org>
>> +# @AUTHOR:
>> +# Anna Figueiredo Gomes <navi@vlhl.dev>
>> +# Maciej Barć <xgqt@gentoo.org>
>> +# @SUPPORTED_EAPIS: 7 8
> 
> Let's not add EAPI 7 to a new eclass.
> 
>> +# @PROVIDES: nuget
>> +# @BLURB: common functions and variables for builds using .NET SDK
>> +# @DESCRIPTION:
>> +# This eclass is designed to provide common definitions for .NET packages.
>> +#
>> +# This eclass does not export any phase functions, for that see
>> +# the "dotnet-pkg" eclass.
>> +
>> +case "${EAPI}" in
>> +	7 | 8 )
> 
> Per above, drop this, but if keeping it: 7|8). Own style is fine for an
> eclass ofc, but writing it like this is unconventional.
> 
>> +		:
>> +		;;
>> +	* )
>> +		die "${ECLASS}: EAPI ${EAPI} unsupported."
>> +		;;
>> +esac
>> +
>> +if [[ -z ${_DOTNET_PKG_UTILS_ECLASS} ]] ; then
>> +_DOTNET_PKG_UTILS_ECLASS=1
>> +
>> +inherit edo multiprocessing nuget
>> +
>> +# @ECLASS_VARIABLE: DOTNET_COMPAT
>> +# @REQUIRED
>> +# @PRE_INHERIT
>> +# @DESCRIPTION:
>> +# Allows to choose a slot for dotnet.
>> +#
>> +# Most .NET packages will lock onto one supported .NET major version.
>> +# DOTNET_COMPAT should specify which version was chosen by package upstream.
>> +# In case multiple .NET versions are specified in the project, then the highest
>> +# should be picked by the maintainer.
>> +if [[ ${CATEGORY}/${PN} != dev-dotnet/dotnet-runtime-nugets ]] ; then
>> +	if [[ ! ${DOTNET_COMPAT} ]] ; then
>> +		die "${ECLASS}: DOTNET_COMPAT not set"
>> +	fi
>> +
>> +	RDEPEND+=" virtual/dotnet-sdk:${DOTNET_COMPAT} "
>> +	BDEPEND+=" ${RDEPEND} "
>> +
>> +	if [[ ${CATEGORY}/${PN} != dev-dotnet/csharp-gentoodotnetinfo ]] ; then
>> +		BDEPEND+=" dev-dotnet/csharp-gentoodotnetinfo "
>> +	fi
>> +
>> +	IUSE+=" debug "
>> +fi
>> +
>> +# Needed otherwise the binaries may break.
>> +RESTRICT+=" strip "
>> +
>> +# Everything is built by "dotnet".
>> +QA_PREBUILT=".*"
>> +
>> +# Special .NET SDK environment variables.
>> +# Setting them either prevents annoying information from being generated
>> +# or stops services that may interfere with a clean package build.
>> +export DOTNET_CLI_TELEMETRY_OPTOUT=1
>> +export DOTNET_NOLOGO=1
>> +export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
>> +export MSBUILDDISABLENODEREUSE=1
>> +export POWERSHELL_TELEMETRY_OPTOUT=1
>> +export POWERSHELL_UPDATECHECK=0
>> +# Overwrite selected MSBuild properties ("-p:XYZ").
>> +export UseSharedCompilation=false
>> +
>> +# @ECLASS_VARIABLE: DOTNET_RUNTIME
>> +# @DEFAULT_UNSET
>> +# @DESCRIPTION:
>> +# Sets the runtime used to build a package.
>> +#
>> +# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
>> +
>> +# @ECLASS_VARIABLE: DOTNET_EXECUTABLE
>> +# @DEFAULT_UNSET
>> +# @DESCRIPTION:
>> +# Sets path of a "dotnet" executable.
>> +#
>> +# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
>> +
>> +# @ECLASS_VARIABLE: DOTNET_CONFIGURATION
>> +# @DEFAULT_UNSET
>> +# @DESCRIPTION:
>> +# Configuration value passed to "dotnet" in the compile phase.
>> +# Is either Debug or Release, depending on the "debug" USE flag.
>> +#
>> +# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
>> +
>> +# @ECLASS_VARIABLE: DOTNET_OUTPUT
>> +# @DEFAULT_UNSET
>> +# @DESCRIPTION:
>> +# Path of the output directory, where the package artifacts are placed during
>> +# the building of packages with "dotnet-pkg-utils_build" function.
>> +#
>> +# This variable is set automatically by the "dotnet-pkg-utils_setup" function.
>> +
>> +# @VARIABLE: DOTNET_LAUNCHERDEST
>> +# @INTERNAL
>> +# @DESCRIPTION:
>> +# Sets the path that .NET launchers are installed into by
>> +# the "dotnet-pkg-utils_dolauncher" function.
>> +#
>> +# The function "dotnet-pkg-utils_launcherinto" is able to manipulate this
>> +# variable.
>> +#
>> +# Defaults to "/usr/bin".
>> +DOTNET_LAUNCHERDEST=/usr/bin
>> +
>> +# @VARIABLE: DOTNET_LAUNCHERVARS
>> +# @INTERNAL
>> +# @DESCRIPTION:
>> +# Sets additional variables for .NET launchers created by
>> +# the "dotnet-pkg-utils_dolauncher" function.
>> +#
>> +# The function "dotnet-pkg-utils_append_launchervar" is able to manipulate this
>> +# variable.
>> +#
>> +# Defaults to a empty array.
>> +DOTNET_LAUNCHERVARS=()
>> +
>> +# @FUNCTION: dotnet-pkg-utils_get-configuration
>> +# @DESCRIPTION:
>> +# Return .NET configuration type of the current package.
>> +#
>> +# It is advised to refer to the "DOTNET_CONFIGURATION" variable instead of
>> +# calling this function if necessary.
>> +#
>> +# Used by "dotnet-pkg-utils_setup".
>> +dotnet-pkg-utils_get-configuration() {
>> +	if in_iuse debug && use debug ; then
>> +		echo Debug
>> +	else
>> +		echo Release
>> +	fi
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_get-output
>> +# @USAGE: <name>
>> +# @DESCRIPTION:
>> +# Return a specially constructed name of a directory for output of
>> +# "dotnet build" artifacts ("--output" flag, see "dotnet-pkg-utils_build").
>> +#
>> +# It is very rare that a maintainer would use this function in an ebuild.
>> +#
>> +# This function is used inside "dotnet-pkg-utils_setup".
>> +dotnet-pkg-utils_get-output() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	[[ ! ${DOTNET_CONFIGURATION} ]] &&
>> +		die "${FUNCNAME}: DOTNET_CONFIGURATION is not set."
>> +
>> +	echo "${WORKDIR}"/${1}_net${DOTNET_COMPAT}_${DOTNET_CONFIGURATION}
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_get-runtime
>> +# @DESCRIPTION:
>> +# Return the .NET runtime used for the current package.
>> +#
>> +# Used by "dotnet-pkg-utils_setup".
>> +dotnet-pkg-utils_get-runtime() {
>> +	local libc="$(usex elibc_musl "-musl" "")"
>> +
>> +	if use amd64 ; then
>> +		echo linux${libc}-x64
>> +	elif use x86 ; then
>> +		echo linux${libc}-x86
>> +	elif use arm ; then
>> +		echo linux${libc}-arm
>> +	elif use arm64 ; then
>> +		echo linux${libc}-arm64
>> +	else
>> +		die "${FUNCNAME}: Unsupported architecture: ${ARCH}"
>> +	fi
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_setup
>> +# @DESCRIPTION:
>> +# Sets up "DOTNET_EXECUTABLE" variable for later use in "edotnet".
>> +# Also sets up "DOTNET_CONFIGURATION" and "DOTNET_OUTPUT"
>> +# for "dotnet-pkg_src_configure" and "dotnet-pkg_src_compile".
>> +#
>> +# This functions should be called by "pkg_setup".
>> +#
>> +# Used by "dotnet-pkg_pkg_setup" from the "dotnet-pkg" eclass.
>> +dotnet-pkg-utils_setup() {
>> +	local _dotnet
>> +	for _dotnet in dotnet{,-bin}-${DOTNET_COMPAT} ; do
>> +		if type ${_dotnet} >/dev/null 2>&1 ; then
>> +			DOTNET_EXECUTABLE=${_dotnet}
>> +			DOTNET_EXECUTABLE_PATH="$(command -v
>> ${_dotnet})"
> 
> We can just change the original call to `type -P` (not `type`)
> and reuse the result here.
> 
>> +			break
>> +		fi
>> +	done
>> +
>> +	# Link "DOTNET_EXECUTABLE" to "dotnet" only for the package build.
>> +	local dotnet_spoof_path="${T}"/dotnet_spoof/${DOTNET_COMPAT}
>> +	mkdir -p "${dotnet_spoof_path}" || die
>> +	ln -s "${DOTNET_EXECUTABLE_PATH}" "${dotnet_spoof_path}"/dotnet || die
>> +	export PATH="${dotnet_spoof_path}:${PATH}"
>> +
>> +	einfo "Using dotnet SDK \"${DOTNET_EXECUTABLE}\" from \"${DOTNET_EXECUTABLE_PATH}\"."
>> +
>> +	# The picked "DOTNET_EXECUTABLE" should set "DOTNET_ROOT" internally
>> +	# and not rely upon this environment variable.
>> +	unset DOTNET_ROOT
>> +
>> +	# Unset .NET and NuGet directories.
>> +	unset DOTNET_DATA
>> +	unset NUGET_DATA
>> +
>> +	DOTNET_RUNTIME=$(dotnet-pkg-utils_get-runtime)
>> +	DOTNET_CONFIGURATION=$(dotnet-pkg-utils_get-configuration)
>> +	DOTNET_OUTPUT="$(dotnet-pkg-utils_get-output ${P})"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_remove-global-json
>> +# @USAGE: [directory]
>> +# @DESCRIPTION:
>> +# Remove the "global.json" if it exists.
>> +# The file in question might lock target package to a specified .NET
>> +# version, which might be unnecessary (as it is in most cases).
>> +#
>> +# Optional "directory" argument defaults to the current directory path.
>> +#
>> +# Used by "dotnet-pkg_src_prepare" from the "dotnet-pkg" eclass.
>> +dotnet-pkg-utils_remove-global-json() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local file="${1:-.}"/global.json
>> +
>> +	if [[ -f "${file}" ]] ; then
>> +		ebegin "Removing the global.json file"
>> +		rm "${file}"
>> +		eend ${?} || die "${FUNCNAME}: failed to remove ${file}"
>> +	fi
>> +}
>> +
>> +# @FUNCTION: edotnet
>> +# @USAGE: <command> [args...]
>> +# @DESCRIPTION:
>> +# Call dotnet, passing the supplied arguments.
>> +edotnet() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	if [[ ! "${DOTNET_EXECUTABLE}" ]] ; then
>> +	   die "${FUNCNAME}: DOTNET_EXECUTABLE not set. Was dotnet-pkg-utils_setup called?"
>> +	fi
>> +
>> +	edo "${DOTNET_EXECUTABLE}" "${@}"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_info
>> +# @DESCRIPTION:
>> +# Show information about current .NET SDK that is being used.
>> +#
>> +# Depends upon the "gentoo-dotnet-info" program installed by
>> +# the "dev-dotnet/csharp-gentoodotnetinfo" package.
>> +#
>> +# Used by "dotnet-pkg_src_configure" from the "dotnet-pkg" eclass.
>> +dotnet-pkg-utils_info() {
>> +	if [[ ${CATEGORY}/${PN} == dev-dotnet/csharp-gentoodotnetinfo ]] ; then
>> +		debug-print-function "${FUNCNAME}: ${P} is a special package, skipping dotnet-pkg-utils_info"
>> +	elif ! command -v gentoo-dotnet-info >/dev/null ; then
>> +		ewarn "${FUNCNAME}: gentoo-dotnet-info not available"
>> +	else
>> +		gentoo-dotnet-info || die "${FUNCNAME}: failed to execute gentoo-dotnet-info"
>> +	fi
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_foreach-solution
>> +# @USAGE: <function> [directory]
>> +# @DESCRIPTION:
>> +# Execute a function for each solution file (.sln) in a specified directory.
>> +# This function may yield no real results because solutions are discovered
>> +# automatically.
>> +#
>> +# Optional "directory" argument defaults to the current directory path.
>> +#
>> +# Used by "dotnet-pkg_src_configure" from the "dotnet-pkg" eclass.
>> +dotnet-pkg-utils_foreach-solution() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local dotnet_solution
>> +	for dotnet_solution in $(find "${2:-.}" -maxdepth 1 -type f -name "*.sln") ; do
>> +		einfo "Running \"${1}\" for solution: \"$(basename "${dotnet_solution}")\""
>> +		"${1}" "${dotnet_solution}"
>> +	done
> 
> Ideally, please change this to:
> 
> ```
> while read ... ; do
> 
> done < <( ... )
> ```
> 
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_restore
>> +# @USAGE: [directory] [args] ...
>> +# @DESCRIPTION:
>> +# Restore the package using "dotnet restore" in a specified directory.
>> +#
>> +# Optional "directory" argument defaults to the current directory path.
>> +#
>> +# Additionally any number of "args" maybe be given, they are appended to
>> +# the "dotnet" command invocation.
>> +#
>> +# Used by "dotnet-pkg_src_configure" from the "dotnet-pkg" eclass.
>> +dotnet-pkg-utils_restore() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local directory
>> +	if [[ "${1}" ]] ; then
>> +		directory="${1}"
>> +		shift
>> +	else
>> +		directory="$(pwd)"
>> +	fi
>> +
>> +	local -a restore_args=(
>> +		--runtime ${DOTNET_RUNTIME}
>> +		--source "${NUGET_PACKAGES}"
>> +		-maxCpuCount:$(makeopts_jobs)
>> +		"${@}"
>> +	)
>> +
>> +	edotnet restore "${restore_args[@]}" "${directory}"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_restore_tools
>> +# @USAGE: [config-file] [args] ...
>> +# @DESCRIPTION:
>> +# Restore dotnet tools for a project in the current directory.
>> +#
>> +# Optional "config-file" argument is used to specify a file for the
>> +# "--configfile" option which records what tools should be restored.
>> +#
>> +# Additionally any number of "args" maybe be given, they are appended to
>> +# the "dotnet" command invocation.
>> +dotnet-pkg-utils_restore_tools() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local -a tool_restore_args=(
>> +		--add-source "${NUGET_PACKAGES}"
>> +	)
>> +
>> +	if [[ "${1}" ]] ; then
>> +		tool_restore_args+=( --configfile "${1}" )
>> +		shift
>> +	fi
>> +
>> +	tool_restore_args+=( "${@}" )
>> +
>> +	edotnet tool restore "${tool_restore_args[@]}"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_build
>> +# @USAGE: [directory] [args] ...
>> +# @DESCRIPTION:
>> +# Build the package using "dotnet build" in a specified directory.
>> +#
>> +# Optional "directory" argument defaults to the current directory path.
>> +#
>> +# Additionally any number of "args" maybe be given, they are appended to
>> +# the "dotnet" command invocation.
>> +#
>> +# Used by "dotnet-pkg_src_compile" from the "dotnet-pkg" eclass.
>> +dotnet-pkg-utils_build() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local directory
>> +	if [[ "${1}" ]] ; then
>> +		directory="${1}"
>> +		shift
>> +	else
>> +		directory="$(pwd)"
>> +	fi
>> +
>> +	local -a build_args=(
>> +		--configuration "${DOTNET_CONFIGURATION}"
>> +		--no-restore
>> +		--no-self-contained
>> +		--output "${DOTNET_OUTPUT}"
>> +		--runtime ${DOTNET_RUNTIME}
>> +		-maxCpuCount:$(makeopts_jobs)
>> +		"${@}"
>> +	)
>> +
>> +	if ! use debug ; then
>> +		build_args+=(
>> +			-p:StripSymbols=true
>> +			-p:NativeDebugSymbols=false
>> +		)
>> +	fi
>> +
>> +	edotnet build "${build_args[@]}" "${directory}"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_test
>> +# @USAGE: [directory] [args] ...
>> +# @DESCRIPTION:
>> +# Test the package using "dotnet test" in a specified directory.
>> +#
>> +# Optional "directory" argument defaults to the current directory path.
>> +#
>> +# Additionally any number of "args" maybe be given, they are appended to
>> +# the "dotnet" command invocation.
>> +#
>> +# Used by "dotnet-pkg_src_test" from the "dotnet-pkg" eclass.
>> +dotnet-pkg-utils_test() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local directory
>> +	if [[ "${1}" ]] ; then
>> +		directory="${1}"
>> +		shift
>> +	else
>> +		directory="$(pwd)"
>> +	fi
>> +
>> +	local -a test_args=(
>> +		--configuration "${DOTNET_CONFIGURATION}"
>> +		--no-restore
>> +		-maxCpuCount:$(makeopts_jobs)
>> +		"${@}"
>> +	)
>> +
>> +	edotnet test "${test_args[@]}" "${directory}"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_install
>> +# @USAGE: [directory]
>> +# @DESCRIPTION:
>> +# Install the contents of "DOTNET_OUTPUT" into a directory, defaults to
>> +# "/usr/share/${PN}".
>> +#
>> +# Installation directory is relative to "ED".
>> +dotnet-pkg-utils_install() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local installation_directory="${1:-/usr/share/${P}}"
>> +
> 
> The docstring says it defaults to ${PN}, not ${P}?
> 
>> +	dodir "${installation_directory}"
>> +	cp -r "${DOTNET_OUTPUT}"/* "${ED}"/"${installation_directory}"/ || die
> 
> I would just quote the whole second argument instead of selectively
> doing it, but up to you.
> 
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_launcherinto
>> +# @USAGE: <directory>
>> +# @DESCRIPTION:
>> +# Changes the path .NET launchers are installed into via subsequent
>> +# "dotnet-pkg-utils_dolauncher" calls.
>> +#
>> +# For more info see the "DOTNET_LAUNCHERDEST" variable.
>> +dotnet-pkg-utils_launcherinto() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	[[ ! "${1}" ]] && die "${FUNCNAME}: no directory specified"
>> +
>> +	DOTNET_LAUNCHERDEST="${1}"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_append_launchervar
>> +# @USAGE: <variable-setting>
>> +# @DESCRIPTION:
>> +# Appends a given variable setting to the "DOTNET_LAUNCHERVARS".
>> +#
>> +# WARNING: This functions modifies a global variable permanently!
>> +# This means that all launchers created in subsequent
>> +# "dotnet-pkg-utils_dolauncher" calls of a given package will have
>> +# the given variable set.
>> +#
>> +# Example:
>> +# @CODE
>> +# dotnet-pkg-utils_append_launchervar "DOTNET_EnableAlternateStackCheck=1"
>> +# @CODE
>> +#
>> +# For more info see the "DOTNET_LAUNCHERVARS" variable.
>> +dotnet-pkg-utils_append_launchervar() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	[[ ! "${1}" ]] && die "${FUNCNAME}: no variable setting specified"
>> +
>> +	DOTNET_LAUNCHERVARS+=( "${1}" )
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_dolauncher
>> +# @USAGE: <executable-path> [filename]
>> +# @DESCRIPTION:
>> +# Make a wrapper script to launch an executable built from a .NET package.
>> +#
>> +# If no file name is given, the `basename` of the executable is used.
>> +#
>> +# Parameters:
>> +# ${1} - path of the executable to launch,
>> +# ${2} - filename of launcher to create (optional).
>> +#
>> +# Example:
>> +# @CODE
>> +# dotnet-pkg-utils_install
>> +# dotnet-pkg-utils_dolauncher /usr/share/${P}/${PN^}
>> +# @CODE
>> +#
>> +# The path is prepended by "EPREFIX".
>> +dotnet-pkg-utils_dolauncher() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local executable_path executable_name
>> +
>> +	if [[ "${1}" ]] ; then
>> +		local executable_path="${1}"
>> +		shift
>> +	else
>> +		die "${FUNCNAME}: No executable path given."
>> +	fi
>> +
>> +	if [[ ${#} = 0 ]] ; then
>> +		executable_name="$(basename "${executable_path}")"
>> +	else
>> +		executable_name="${1}"
>> +		shift
>> +	fi
>> +
>> +	local executable_target="${T}/${executable_name}"
>> +
>> +	cat > "${executable_target}" <<-EOF
> 
> Missing die.
> 
>> +	#!/bin/sh
>> +
>> +	# Lanucher script for ${executable_path} (${executable_name}),
>> +	# created from package "${CATEGORY}/${P}",
>> +	# compatible with dotnet version ${DOTNET_COMPAT}.
>> +
>> +	for __dotnet_root in \\
>> +		${EPREFIX}/usr/$(get_libdir)/dotnet-sdk-${DOTNET_COMPAT} \\
>> +		${EPREFIX}/opt/dotnet-sdk-bin-${DOTNET_COMPAT} ; do
>> +		[ -d \${__dotnet_root} ] && break
>> +	done
>> +
>> +	DOTNET_ROOT="\${__dotnet_root}"
>> +	export DOTNET_ROOT
>> +
>> +	$(for var in "${DOTNET_LAUNCHERVARS[@]}" ; do
>> +		echo "${var}"
>> +		echo "export ${var%%=*}"
>> +	done)
>> +
>> +	exec "${EPREFIX}${executable_path}" "\${@}"
>> +	EOF
>> +
>> +	dodir "${DOTNET_LAUNCHERDEST}"
>> +	exeinto "${DOTNET_LAUNCHERDEST}"
>> +	doexe "${executable_target}"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg-utils_dolauncher_portable
>> +# @USAGE: <dll-path> <filename>
>> +# @DESCRIPTION:
>> +# Make a wrapper script to launch a .NET DLL file built from a .NET package.
>> +#
>> +# Parameters:
>> +# ${1} - path of the DLL to launch,
>> +# ${2} - filename of launcher to create.
>> +#
>> +# Example:
>> +# @CODE
>> +# dotnet-pkg-utils_dolauncher_portable \
>> +#     /usr/share/${P}/GentooDotnetInfo.dll gentoo-dotnet-info
>> +# @CODE
>> +#
>> +# The path is prepended by "EPREFIX".
>> +dotnet-pkg-utils_dolauncher_portable() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local dll_path="${1}"
>> +	local executable_name="${2}"
>> +	local executable_target="${T}/${executable_name}"
>> +
>> +	cat > "${executable_target}" <<-EOF
> 
> Missing die.
> 
>> +	#!/bin/sh
>> +
>> +	# Lanucher script for ${dll_path} (${executable_name}),
>> +	# created from package "${CATEGORY}/${P}",
>> +	# compatible with any dotnet version, built on ${DOTNET_COMPAT}.
>> +
>> +	$(for var in "${DOTNET_LAUNCHERVARS[@]}" ; do
>> +		echo "${var}"
>> +		echo "export ${var%%=*}"
>> +	done)
>> +
>> +	exec dotnet exec "${EPREFIX}${dll_path}" "\${@}"
>> +	EOF
>> +
>> +	dodir "${DOTNET_LAUNCHERDEST}"
>> +	exeinto "${DOTNET_LAUNCHERDEST}"
>> +	doexe "${executable_target}"
>> +}
>> +
>> +fi
> 

-- 
Have a great day!

~ Maciej XGQT Barć

xgqt@gentoo.org
Gentoo Linux developer
(dotnet, emacs, math, ml, nim, scheme, sci)
https://wiki.gentoo.org/wiki/User:Xgqt
9B0A 4C5D 02A3 B43C 9D6F D6B1 14D7 4A1F 43A6 AC3C


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: introduce new eclass
  2023-07-16 12:56   ` Sam James
@ 2023-07-16 13:38     ` Maciej Barć
  0 siblings, 0 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 13:38 UTC (permalink / raw
  To: Sam James, gentoo-dev

>> +	local dotnet_project
>> +	for dotnet_project in "${DOTNET_PROJECTS[@]}" ; do
>> +		einfo "Running \"${@}\" for project: \"$(basename "${dotnet_project}")\""
>> +		"${@}" "${dotnet_project}"
> 
> No die?
> 

Should be called by given function.

Not sure how double dies would function.
I think the 1st one triggers and second one might trigger if 1st one 
does not.

So maybe it is good to add just in case.

W dniu 16.07.2023 o 14:56, Sam James pisze:
> 
> Maciej Barć <xgqt@gentoo.org> writes:
> 
>> Bug: https://bugs.gentoo.org/900597
>> Bug: https://github.com/gentoo/gentoo/pull/29309
>> Signed-off-by: Maciej Barć <xgqt@gentoo.org>
>> ---
>>   eclass/dotnet-pkg.eclass | 249 +++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 249 insertions(+)
>>   create mode 100644 eclass/dotnet-pkg.eclass
>>
>> diff --git a/eclass/dotnet-pkg.eclass b/eclass/dotnet-pkg.eclass
>> new file mode 100644
>> index 0000000000..2b711467f5
>> --- /dev/null
>> +++ b/eclass/dotnet-pkg.eclass
>> @@ -0,0 +1,249 @@
>> +# Copyright 1999-2023 Gentoo Authors
>> +# Distributed under the terms of the GNU General Public License v2
>> +
>> +# @ECLASS: dotnet-pkg.eclass
>> +# @MAINTAINER:
>> +# Gentoo Dotnet project <dotnet@gentoo.org>
>> +# @AUTHOR:
>> +# Anna Figueiredo Gomes <navi@vlhl.dev>
>> +# Maciej Barć <xgqt@gentoo.org>
>> +# @SUPPORTED_EAPIS: 7 8
>> +# @PROVIDES: dotnet-pkg-utils nuget
>> +# @BLURB: common functions and variables for .NET packages
>> +# @DESCRIPTION:
>> +# This eclass is designed to help with building and installing packages that
>> +# use the .NET SDK.
>> +#
>> +# .NET SDK is a open-source framework from Microsoft, it is a cross-platform
>> +# successor to .NET Framework.
>> +#
>> +# .NET packages require proper inspection before packaging:
>> +# - the compatible .NET SDK version has to be declared,
>> +#   this can be done by inspecting the package's "*proj" files,
>> +#   unlike JAVA, .NET packages tend to lock onto one selected .NET SDK
>> +#   version, so building with other .NET versions will be mostly unsupported,
>> +# - nugets, which are similar to JAVA's JARs (package .NET dependencies),
>> +#   have to be listed using either the "NUGETS" variable or bundled inside
>> +#   a "prebuilt" archive, in second case also the "NUGET_PACKAGES" variable
>> +#   has to be explicitly set.
>> +# - the main project file (.*proj) that builds the project has to be specified
>> +#   by the "DOTNET_PROJECT" variable.
>> +
>> +case "${EAPI}" in
>> +	7 | 8 )
>> +		:
>> +		;;
>> +	* )
>> +		die "${ECLASS}: EAPI ${EAPI} unsupported."
>> +		;;
>> +esac
>> +
>> +if [[ -z ${_DOTNET_PKG_ECLASS} ]] ; then
>> +_DOTNET_PKG_ECLASS=1
>> +
>> +inherit dotnet-pkg-utils
>> +
>> +# @ECLASS_VARIABLE: DOTNET_PROJECTS
>> +# @DEFAULT_UNSET
>> +# @DESCRIPTION:
>> +# Path to the main .NET project files (".csproj", ".fsproj", ".vbproj")
>> +# used by default by "dotnet-pkg_src_compile" phase function.
>> +#
>> +# In .NET version 6.0 and lower it was possible to build a project solution
>> +# (".sln") immediately with output to a specified directory ("--output DIR"),
>> +# but versions >= 7.0 deprecated this behavior. This means that
>> +# "dotnet-pkg-utils_build" will fail when pointed to a solution or a directory
>> +# containing a solution file.
>> +#
>> +# It is up to the maintainer if this variable is set before inheriting
>> +# "dotnet-pkg-utils" eclass, but it is advised that it is set after
>> +# the variable "${S}" is set, it should also integrate with it
>> +# (see the example below).
>> +#
>> +# Example:
>> +# @CODE
>> +# SRC_URI="..."
>> +# S="${S}"/src
>> +#
>> +# LICENSE="MIT"
>> +# SLOT="0"
>> +# KEYWORDS="~amd64"
>> +#
>> +# DOTNET_PROJECTS=( "${S}/DotnetProject" )
>> +#
>> +# src_prepare() {
>> +#     ...
>> +# @CODE
>> +
>> +# @ECLASS_VARIABLE: DOTNET_RESTORE_EXTRA_ARGS
>> +# @DESCRIPTION:
>> +# Extra arguments to pass to the package restore, in the "src_configure" phase.
>> +#
>> +# This is passed only when restoring the specified "DOTNET_PROJECT".
>> +# Other project restorers do not use this variable.
>> +#
>> +# It is up to the maintainer if this variable is set before inheriting
>> +# "dotnet-pkg.eclass", but it is advised that it is set after the variable
>> +# "DOTNET_PROJECT" (from "dotnet-pkg-utils" eclass) is set.
>> +#
>> +# Default value is an empty array.
>> +#
>> +# For more info see the "DOTNET_PROJECT" variable and "dotnet-pkg_src_configure".
>> +DOTNET_RESTORE_EXTRA_ARGS=()
>> +
>> +# @ECLASS_VARIABLE: DOTNET_BUILD_EXTRA_ARGS
>> +# @DESCRIPTION:
>> +# Extra arguments to pass to the package build, in the "src_compile" phase.
>> +#
>> +# This is passed only when building the specified "DOTNET_PROJECT".
>> +# Other project builds do not use this variable.
>> +#
>> +# It is up to the maintainer if this variable is set before inheriting
>> +# "dotnet-pkg.eclass", but it is advised that it is set after the variable
>> +# "DOTNET_PROJECT" (from "dotnet-pkg-utils" eclass) is set.
>> +#
>> +# Default value is an empty array.
>> +#
>> +# Example:
>> +# @CODE
>> +# DOTNET_BUILD_EXTRA_ARGS=( -p:WarningLevel=0 )
>> +# @CODE
>> +#
>> +# For more info see the "DOTNET_PROJECT" variable and "dotnet-pkg_src_compile".
>> +DOTNET_BUILD_EXTRA_ARGS=()
>> +
>> +# @FUNCTION: dotnet-pkg_pkg_setup
>> +# @DESCRIPTION:
>> +# Default "pkg_setup" for the "dotnet-pkg" eclass.
>> +# Pre-build configuration and checks.
>> +#
>> +# Calls "dotnet-pkg-utils_pkg_setup".
>> +dotnet-pkg_pkg_setup() {
>> +	dotnet-pkg-utils_setup
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg_src_unpack
>> +# @DESCRIPTION:
>> +# Default "src_unpack" for the "dotnet-pkg" eclass.
>> +# Unpack the package sources.
>> +#
>> +# Includes a special exception for nugets (".nupkg" files) - they are instead
>> +# copied into the "NUGET_PACKAGES" directory.
>> +dotnet-pkg_src_unpack() {
>> +	nuget_link-system-nugets
>> +
>> +	local archive
>> +	for archive in ${A} ; do
>> +		case ${archive} in
>> +			*.nupkg )
>> +				nuget_link "${DISTDIR}"/${archive}
>> +				;;
>> +			* )
>> +				unpack ${archive}
>> +				;;
>> +		esac
>> +	done
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg_src_prepare
>> +# @DESCRIPTION:
>> +# Default "src_prepare" for the "dotnet-pkg" eclass.
>> +# Prepare the package sources.
>> +#
>> +# Run "dotnet-pkg-utils_remove-global-json".
>> +dotnet-pkg_src_prepare() {
>> +	dotnet-pkg-utils_remove-global-json
>> +
>> +	default
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg_foreach-project
>> +# @USAGE: <args> ...
>> +# @DESCRIPTION:
>> +# Run a specified command for each project listed inside the "DOTNET_PROJECTS"
>> +# variable.
>> +#
>> +# Used by "dotnet-pkg_src_configure" and "dotnet-pkg_src_compile".
>> +dotnet-pkg_foreach-project() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local dotnet_project
>> +	for dotnet_project in "${DOTNET_PROJECTS[@]}" ; do
>> +		einfo "Running \"${@}\" for project: \"$(basename "${dotnet_project}")\""
>> +		"${@}" "${dotnet_project}"
> 
> No die?
> 
>> +	done
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg_src_configure
>> +# @DESCRIPTION:
>> +# Default "src_configure" for the "dotnet-pkg" eclass.
>> +# Configure the package.
>> +#
>> +# First show information about current .NET SDK that is being used,
>> +# then restore the project file specified by "DOTNET_PROJECT",
>> +# afterwards restore any found solutions.
>> +dotnet-pkg_src_configure() {
>> +	dotnet-pkg-utils_info
>> +
>> +	dotnet-pkg_foreach-project \
>> +		dotnet-pkg-utils_restore "${DOTNET_RESTORE_EXTRA_ARGS[@]}"
>> +
>> +	dotnet-pkg-utils_foreach-solution dotnet-pkg-utils_restore "$(pwd)"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg_src_compile
>> +# @DESCRIPTION:
>> +# Default "src_compile" for the "dotnet-pkg" eclass.
>> +# Build the package.
>> +#
>> +# Build the package using "dotnet build" in the directory specified by either
>> +# "DOTNET_PROJECT" or "S" (temporary build directory) variables.
>> +#
>> +# For more info see: "DOTNET_PROJECT" variable
>> +# and "dotnet-pkg-utils_get-project" function.
>> +dotnet-pkg_src_compile() {
>> +	dotnet-pkg_foreach-project \
>> +		dotnet-pkg-utils_build "${DOTNET_BUILD_EXTRA_ARGS[@]}"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg_src_test
>> +# @DESCRIPTION:
>> +# Default "src_test" for the "dotnet-pkg" eclass.
>> +# Test the package.
>> +#
>> +# Test the package by testing any found solutions.
>> +#
>> +# It is very likely that this function will either not execute any tests or
>> +# will execute wrong or incomplete test suite. Maintainers should inspect if
>> +# any and/or correct tests are ran.
>> +dotnet-pkg_src_test() {
>> +	dotnet-pkg-utils_foreach-solution dotnet-pkg-utils_test "$(pwd)"
>> +}
>> +
>> +# @FUNCTION: dotnet-pkg_src_install
>> +# @DESCRIPTION:
>> +# Default "src_install" for the "dotnet-pkg" eclass.
>> +# Install the package.
>> +#
>> +# This is the default package install function for the "dotnet-pkg" eclass.
>> +#
>> +# It is very likely that this function is either insufficient or has to be
>> +# redefined in a ebuild.
>> +dotnet-pkg_src_install() {
>> +	# Install the compiled .NET package artifacts,
>> +	# for more info see "dotnet-pkg-utils_install" and "DOTNET_OUTPUT".
>> +	dotnet-pkg-utils_install
>> +
>> +	# Create launcher from the .NET package directory to "/usr/bin".
>> +	# For example: /usr/bin/Nake -> /usr/share/nake-3.0.0/Nake
>> +	dotnet-pkg-utils_dolauncher /usr/share/${P}/${PN^}
>> +
>> +	# Create a compatibility symlink and also for ease of use from CLI.
>> +	dosym -r /usr/bin/${PN^} /usr/bin/${PN}
>> +
>> +	einstalldocs
>> +}
>> +
>> +EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install
>> +
>> +fi
> 

-- 
Have a great day!

~ Maciej XGQT Barć

xgqt@gentoo.org
Gentoo Linux developer
(dotnet, emacs, math, ml, nim, scheme, sci)
https://wiki.gentoo.org/wiki/User:Xgqt
9B0A 4C5D 02A3 B43C 9D6F D6B1 14D7 4A1F 43A6 AC3C


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
                   ` (6 preceding siblings ...)
  2023-07-16 12:43 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Sam James
@ 2023-07-16 13:40 ` Ulrich Mueller
  2023-07-16 13:47   ` Maciej Barć
  7 siblings, 1 reply; 18+ messages in thread
From: Ulrich Mueller @ 2023-07-16 13:40 UTC (permalink / raw
  To: Maciej Barć; +Cc: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 407 bytes --]

>>>>> On Sun, 16 Jul 2023, Maciej Barć wrote:

> +case "${EAPI}" in
> +	7 | 8 )
> +		:
> +		;;
> +	* )
> +		die "${ECLASS}: EAPI ${EAPI} unsupported."
> +		;;
> +esac

The QA team has invested quite some work to unify that case block
between different eclasses. So, please stay with the standard style:

case ${EAPI} in
	7|8) ;;
	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 507 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-16 12:43 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Sam James
@ 2023-07-16 13:44   ` Maciej Barć
  0 siblings, 0 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 13:44 UTC (permalink / raw
  To: Sam James, gentoo-dev; +Cc: Anna, dotnet

>> +# @ECLASS_VARIABLE: SYSTEM_NUGETS
>> +# @DESCRIPTION:
>> +# Location of the system NuGet packages directory.
>> +SYSTEM_NUGETS=/opt/dotnet-nugets
>> +
> 
> Not to bikeshed too hard, but wonder if this should be another
> directory.
> 

Given what this is used for I think it is fitting.


>> +# @ECLASS_VARIABLE: NUGET_APIS
>> +# @DESCRIPTION:
>> +# NuGet API URLs to use for precompiled NuGet package ".nupkg" downloads.
>> +# Set or append to this variable post-inherit, but before calling
>> +# the "nuget_uris" function, preferably just before "SRC_URI".
> 
> Is there a reason we don't just mandate this per-inherit? Feels like
> it'd be cleaner there.
> 

Lots of repetitions, only necessary in special cases, like pwsh 
from-source ebuild.


>> +# Example:
>> +# @CODE
>> +# NUGETS="
>> +#	ImGui.NET-1.87.2
>> +#	Config.Net-4.19.0
>> +# "
>> +#
>> +# inherit dotnet-pkg
>> +#
>> +# ...
>> +#
>> +# SRC_URI+=" $(nuget_uris) "
>> +# @CODE
> 
> Can we use the approach we're doing w/ cargo.eclass, so this isn't
> the default option? (i.e. set a global variable instead).
> 

I believe my and navi work predates that cargo.eclass mechanism.
I stray away from rust pkgs and was not aware of it. I doubt I will have 
time to check it out.
Can you explain the better approach?


>> +	local nuget_name="$(basename "${1}")"
> 
> You should be able to do this with pure bash.
> 

Yup :)

W dniu 16.07.2023 o 14:43, Sam James pisze:
> 
> Maciej Barć <xgqt@gentoo.org> writes:
> 
>> Bug: https://bugs.gentoo.org/900597
>> Bug: https://github.com/gentoo/gentoo/pull/29309
>> Signed-off-by: Maciej Barć <xgqt@gentoo.org>
>> ---
> 
> First, thank you to you & navi for working on this. It's long overdue.
> 
> Left some small comments below.
> 
>>   eclass/nuget.eclass | 192 ++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 192 insertions(+)
>>   create mode 100644 eclass/nuget.eclass
>>
>> diff --git a/eclass/nuget.eclass b/eclass/nuget.eclass
>> new file mode 100644
>> index 0000000000..cbc9bae4a1
>> --- /dev/null
>> +++ b/eclass/nuget.eclass
>> @@ -0,0 +1,192 @@
>> +# Copyright 1999-2023 Gentoo Authors
>> +# Distributed under the terms of the GNU General Public License v2
>> +
>> +# @ECLASS: nuget.eclass
>> +# @MAINTAINER:
>> +# Gentoo Dotnet project <dotnet@gentoo.org>
>> +# @AUTHOR:
>> +# Anna Figueiredo Gomes <navi@vlhl.dev>
>> +# Maciej Barć <xgqt@gentoo.org>
>> +# @SUPPORTED_EAPIS: 7 8
>> +# @BLURB: common functions and variables for handling .NET NuGets
>> +# @DESCRIPTION:
>> +# This eclass is designed to provide support for .NET NuGet's ".nupkg" files.
>> +#
>> +# This eclass does not export any phase functions, for that see
>> +# the "dotnet-pkg" eclass.
>> +
>> +case "${EAPI}" in
>> +	7 | 8 )
>> +		:
>> +		;;
>> +	* )
>> +		die "${ECLASS}: EAPI ${EAPI} unsupported."
>> +		;;
>> +esac
>> +
>> +if [[ -z ${_NUGET_ECLASS} ]] ; then
>> +_NUGET_ECLASS=1
>> +
>> +# @ECLASS_VARIABLE: SYSTEM_NUGETS
>> +# @DESCRIPTION:
>> +# Location of the system NuGet packages directory.
>> +SYSTEM_NUGETS=/opt/dotnet-nugets
>> +
> 
> Not to bikeshed too hard, but wonder if this should be another
> directory.
> 
>> +# @ECLASS_VARIABLE: NUGET_APIS
>> +# @DESCRIPTION:
>> +# NuGet API URLs to use for precompiled NuGet package ".nupkg" downloads.
>> +# Set or append to this variable post-inherit, but before calling
>> +# the "nuget_uris" function, preferably just before "SRC_URI".
> 
> Is there a reason we don't just mandate this per-inherit? Feels like
> it'd be cleaner there.
> 
>> +#
>> +# Example:
>> +# @CODE
>> +# SRC_URI="https://example.com/example.tar.xz"
>> +# NUGET_APIS+=( "https://api.nuget.org/v3-flatcontainer" )
>> +# SRC_URI+=" $(nuget_uris) "
>> +# @CODE
>> +NUGET_APIS=( "https://api.nuget.org/v3-flatcontainer" )
>> +
>> +# @ECLASS_VARIABLE: NUGET_PACKAGES
>> +# @DEFAULT_UNSET
>> +# @PRE_INHERIT
>> +# @DESCRIPTION:
>> +# Path from where NuGets will be restored from.
>> +# Defaults to ${T}/nugets for use with "nuget_uris" but may be set to a custom
>> +# location to, for example, restore NuGets extracted form a prepared archive.
>> +# Do not set this variable in conjunction with non-empty "NUGETS".
>> +if [[ "${NUGETS}" ]] || [[ ! "${NUGET_PACKAGES}" ]] ; then
>> +	NUGET_PACKAGES="${T}"/nugets
>> +fi
>> +export NUGET_PACKAGES
>> +
>> +# @ECLASS_VARIABLE: NUGETS
>> +# @DEFAULT_UNSET
>> +# @PRE_INHERIT
>> +# @DESCRIPTION:
>> +# String containing all NuGet packages that need to be downloaded.
>> +# Used by "nuget_uris".
>> +#
>> +# Example:
>> +# @CODE
>> +# NUGETS="
>> +#	ImGui.NET-1.87.2
>> +#	Config.Net-4.19.0
>> +# "
>> +#
>> +# inherit dotnet-pkg
>> +#
>> +# ...
>> +#
>> +# SRC_URI+=" $(nuget_uris) "
>> +# @CODE
> 
> Can we use the approach we're doing w/ cargo.eclass, so this isn't
> the default option? (i.e. set a global variable instead).
> 
>> [...]
>> +# @FUNCTION: nuget_link
>> +# @USAGE: <nuget-path>
>> +# @DESCRIPTION:
>> +# Link a specified NuGet package at "nuget-path" to the "NUGET_PACKAGES"
>> +# directory.
>> +#
>> +# Example:
>> +# @CODE
>> +# nuget_link "${DISTDIR}"/pkg.0.nupkg
>> +# @CODE
>> +#
>> +# This function is used inside "dotnet-pkg_src_unpack"
>> +# from the "dotnet-pkg" eclass.
>> +nuget_link() {
>> +	[[ ! "${1}" ]] && die "${FUNCNAME}: no nuget path given"
>> +
>> +	mkdir -p "${NUGET_PACKAGES}" || die
>> +
>> +	local nuget_name="$(basename "${1}")"
> 
> You should be able to do this with pure bash.
> 
>> [...]
> 
> best,
> sam

-- 
Have a great day!

~ Maciej XGQT Barć

xgqt@gentoo.org
Gentoo Linux developer
(dotnet, emacs, math, ml, nim, scheme, sci)
https://wiki.gentoo.org/wiki/User:Xgqt
9B0A 4C5D 02A3 B43C 9D6F D6B1 14D7 4A1F 43A6 AC3C


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-16 13:40 ` Ulrich Mueller
@ 2023-07-16 13:47   ` Maciej Barć
  0 siblings, 0 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-16 13:47 UTC (permalink / raw
  To: Ulrich Mueller, gentoo-dev

Offtopic: That calls for a YAS snippet ;D

W dniu 16.07.2023 o 15:40, Ulrich Mueller pisze:
>>>>>> On Sun, 16 Jul 2023, Maciej Barć wrote:
> 
>> +case "${EAPI}" in
>> +	7 | 8 )
>> +		:
>> +		;;
>> +	* )
>> +		die "${ECLASS}: EAPI ${EAPI} unsupported."
>> +		;;
>> +esac
> 
> The QA team has invested quite some work to unify that case block
> between different eclasses. So, please stay with the standard style:
> 
> case ${EAPI} in
> 	7|8) ;;
> 	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
> esac

-- 
Have a great day!

~ Maciej XGQT Barć

xgqt@gentoo.org
Gentoo Linux developer
(dotnet, emacs, math, ml, nim, scheme, sci)
https://wiki.gentoo.org/wiki/User:Xgqt
9B0A 4C5D 02A3 B43C 9D6F D6B1 14D7 4A1F 43A6 AC3C


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: new package
  2023-07-30 14:26 Maciej Barć
@ 2023-07-30 14:26 ` Maciej Barć
  0 siblings, 0 replies; 18+ messages in thread
From: Maciej Barć @ 2023-07-30 14:26 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

Bug: https://bugs.gentoo.org/900597
Bug: https://github.com/gentoo/gentoo/pull/29309
Signed-off-by: Maciej Barć <xgqt@gentoo.org>
---
 app-eselect/eselect-dotnet/Manifest           |  1 +
 .../eselect-dotnet-0.1.0.ebuild               | 25 +++++++++++++++++++
 app-eselect/eselect-dotnet/metadata.xml       |  9 +++++++
 3 files changed, 35 insertions(+)
 create mode 100644 app-eselect/eselect-dotnet/Manifest
 create mode 100644 app-eselect/eselect-dotnet/eselect-dotnet-0.1.0.ebuild
 create mode 100644 app-eselect/eselect-dotnet/metadata.xml

diff --git a/app-eselect/eselect-dotnet/Manifest b/app-eselect/eselect-dotnet/Manifest
new file mode 100644
index 000000000..9cf36cadf
--- /dev/null
+++ b/app-eselect/eselect-dotnet/Manifest
@@ -0,0 +1 @@
+DIST eselect-dotnet-0.1.0.tar.bz2 7788 BLAKE2B 141e5a2fc765454682de60a6a337d6634766b4dd76f218606e2f4eb18960fdcf8940b954deda2fb6b0903f72b161513936c1d767210883316c32200704188945 SHA512 879281ffff019d1e4a8a5ee3d3e6b6de3446ba573d253a5b3b0c59aa9faffcd6eb4382066e1752e18cb4e48c3e14340a278b2189c2674b1baa258ceb3980d13a
diff --git a/app-eselect/eselect-dotnet/eselect-dotnet-0.1.0.ebuild b/app-eselect/eselect-dotnet/eselect-dotnet-0.1.0.ebuild
new file mode 100644
index 000000000..3923b1a5a
--- /dev/null
+++ b/app-eselect/eselect-dotnet/eselect-dotnet-0.1.0.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="Eselect module for management of multiple dotnet versions"
+HOMEPAGE="https://gitlab.gentoo.org/dotnet/eselect-dotnet/"
+
+if [[ ${PV} == *9999* ]] ; then
+	inherit git-r3
+	EGIT_REPO_URI="https://gitlab.gentoo.org/dotnet/${PN}.git"
+else
+	SRC_URI="https://gitlab.gentoo.org/dotnet/${PN}/-/archive/${PV}/${P}.tar.bz2"
+	KEYWORDS="~amd64 ~arm ~arm64"
+fi
+
+LICENSE="GPL-2+"
+SLOT="0"
+
+RDEPEND="app-admin/eselect"
+
+src_install() {
+	insinto /usr/share/eselect/modules
+	doins dotnet.eselect
+}
diff --git a/app-eselect/eselect-dotnet/metadata.xml b/app-eselect/eselect-dotnet/metadata.xml
new file mode 100644
index 000000000..08bae967b
--- /dev/null
+++ b/app-eselect/eselect-dotnet/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+
+<pkgmetadata>
+  <maintainer type="project">
+    <email>dotnet@gentoo.org</email>
+    <name>Gentoo Dotnet Project</name>
+  </maintainer>
+</pkgmetadata>
-- 
2.41.0



^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2023-07-30 14:28 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
2023-07-16 12:48   ` Sam James
2023-07-16 13:35     ` Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: " Maciej Barć
2023-07-16 12:56   ` Sam James
2023-07-16 13:38     ` Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 4/7] dev-dotnet/dotnet-runtime-nugets: new package Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: " Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism Maciej Barć
2023-07-16 12:58   ` Sam James
2023-07-16 13:31     ` Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 7/7] dev-dotnet/dotnet-sdk-bin: drop old Maciej Barć
2023-07-16 12:43 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Sam James
2023-07-16 13:44   ` Maciej Barć
2023-07-16 13:40 ` Ulrich Mueller
2023-07-16 13:47   ` Maciej Barć
  -- strict thread matches above, loose matches on Subject: below --
2023-07-30 14:26 Maciej Barć
2023-07-30 14:26 ` [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: new package Maciej Barć

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox