public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: introduce new eclass
  2023-07-16 12:38 Maciej Barć
@ 2023-07-16 12:38 ` Maciej Barć
  2023-07-16 12:56   ` Sam James
  0 siblings, 1 reply; 25+ 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] 25+ 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; 25+ 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] 25+ 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; 25+ 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] 25+ messages in thread

* [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
@ 2023-07-30 14:26 Maciej Barć
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
                   ` (6 more replies)
  0 siblings, 7 replies; 25+ 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>
---
 eclass/nuget.eclass | 188 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 188 insertions(+)
 create mode 100644 eclass/nuget.eclass

diff --git a/eclass/nuget.eclass b/eclass/nuget.eclass
new file mode 100644
index 000000000..320573c53
--- /dev/null
+++ b/eclass/nuget.eclass
@@ -0,0 +1,188 @@
+# 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: 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
+	8) ;;
+	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
+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="${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] 25+ messages in thread

* [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: introduce new eclass
  2023-07-30 14:26 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
@ 2023-07-30 14:26 ` Maciej Barć
  2023-07-30 19:34   ` Michał Górny
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: " Maciej Barć
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 25+ 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>
---
 eclass/dotnet-pkg-utils.eclass | 602 +++++++++++++++++++++++++++++++++
 1 file changed, 602 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 000000000..bdde11fe5
--- /dev/null
+++ b/eclass/dotnet-pkg-utils.eclass
@@ -0,0 +1,602 @@
+# 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: 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
+	8) ;;
+	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
+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_compat_impl
+	local dotnet_compat_impl_path
+	for dotnet_compat_impl in dotnet{,-bin}-${DOTNET_COMPAT} ; do
+		dotnet_compat_impl_path="$(type -P type ${dotnet_compat_impl})"
+
+		if [[ "${dotnet_compat_impl_path}" ]] ; then
+			DOTNET_EXECUTABLE=${dotnet_compat_impl}
+			DOTNET_EXECUTABLE_PATH="${dotnet_compat_impl_path}"
+
+			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
+	local dotnet_solution_name
+	while read dotnet_solution ; do
+		dotnet_solution_name="$(basename "${dotnet_solution}")"
+
+		ebegin "Running \"${1}\" for solution: \"${dotnet_solution_name}\""
+		"${1}" "${dotnet_solution}"
+		eend $? "${FUNCNAME}: failed for solution: \"${dotnet_solution}\"" || die
+	done < <(find "${2:-.}" -maxdepth 1 -type f -name "*.sln")
+}
+
+# @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/${P}".
+#
+# 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 <<-EOF > "${executable_target}" || 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 <<-EOF > "${executable_target}" || 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
-- 
2.41.0



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

* [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: introduce new eclass
  2023-07-30 14:26 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
@ 2023-07-30 14:26 ` Maciej Barć
  2023-07-31  9:20   ` Thomas Bracht Laumann Jespersen
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 4/7] dev-dotnet/dotnet-runtime-nugets: new package Maciej Barć
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 25+ 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>
---
 eclass/dotnet-pkg.eclass | 246 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 246 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 000000000..6d1f15985
--- /dev/null
+++ b/eclass/dotnet-pkg.eclass
@@ -0,0 +1,246 @@
+# 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: 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
+	8) ;;
+	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
+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
+		ebegin "Running \"${@}\" for project: \"$(basename "${dotnet_project}")\""
+		"${@}" "${dotnet_project}"
+		eend $? "${FUNCNAME}: failed for project: \"${dotnet_project}\"" || 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
-- 
2.41.0



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

* [gentoo-dev] [PATCH 4/7] dev-dotnet/dotnet-runtime-nugets: new package
  2023-07-30 14:26 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: " Maciej Barć
@ 2023-07-30 14:26 ` Maciej Barć
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: " Maciej Barć
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 25+ 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>
---
 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 000000000..8b2278ec5
--- /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 000000000..2ce83f4d6
--- /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 000000000..f764b4c6b
--- /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 000000000..f764b4c6b
--- /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 000000000..f764b4c6b
--- /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 000000000..f764b4c6b
--- /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 000000000..f764b4c6b
--- /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 000000000..08bae967b
--- /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] 25+ messages in thread

* [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: new package
  2023-07-30 14:26 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
                   ` (2 preceding siblings ...)
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 4/7] dev-dotnet/dotnet-runtime-nugets: new package Maciej Barć
@ 2023-07-30 14:26 ` Maciej Barć
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism Maciej Barć
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 25+ 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] 25+ messages in thread

* [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism
  2023-07-30 14:26 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
                   ` (3 preceding siblings ...)
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: " Maciej Barć
@ 2023-07-30 14:26 ` Maciej Barć
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 7/7] dev-dotnet/dotnet-sdk-bin: drop old Maciej Barć
  2023-07-30 19:30 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Michał Górny
  6 siblings, 0 replies; 25+ 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>
---
 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 0db136553..34d9d1689 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 000000000..f2f49466a
--- /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 000000000..f2f49466a
--- /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 000000000..21f829f18
--- /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 000000000..2677f7bee
--- /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 e32a6dd41..f0c088d01 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] 25+ messages in thread

* [gentoo-dev] [PATCH 7/7] dev-dotnet/dotnet-sdk-bin: drop old
  2023-07-30 14:26 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
                   ` (4 preceding siblings ...)
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism Maciej Barć
@ 2023-07-30 14:26 ` Maciej Barć
  2023-07-30 19:30 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Michał Górny
  6 siblings, 0 replies; 25+ 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>
---
 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 34d9d1689..8469c78ba 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 f2f49466a..000000000
--- 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 6286bad20..000000000
--- 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 6d0525d86..000000000
--- 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] 25+ messages in thread

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-30 14:26 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
                   ` (5 preceding siblings ...)
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 7/7] dev-dotnet/dotnet-sdk-bin: drop old Maciej Barć
@ 2023-07-30 19:30 ` Michał Górny
  2023-07-30 20:01   ` Maciej Barć
  2023-07-30 20:19   ` Florian Schmaus
  6 siblings, 2 replies; 25+ messages in thread
From: Michał Górny @ 2023-07-30 19:30 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

On Sun, 2023-07-30 at 16:26 +0200, Maciej Barć wrote:
> 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 | 188 ++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 188 insertions(+)
>  create mode 100644 eclass/nuget.eclass
> 
> diff --git a/eclass/nuget.eclass b/eclass/nuget.eclass
> new file mode 100644
> index 000000000..320573c53
> --- /dev/null
> +++ b/eclass/nuget.eclass
> @@ -0,0 +1,188 @@
> +# 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: 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.

This doesn't say anything about why or how you'd use the eclass.

> +
> +case ${EAPI} in
> +	8) ;;
> +	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
> +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

What is the usage for this variable?  Is it a fixed value or something
to be overriden in ebuilds?  Is it private or public?

Also namespace it to NUGET_*.

> +
> +# @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" )

I'd be useful to explain what the default is.

> +
> +# @ECLASS_VARIABLE: NUGET_PACKAGES
> +# @DEFAULT_UNSET
> +# @PRE_INHERIT
> +# @DESCRIPTION:
> +# Path from where NuGets will be restored from.

This doesn't say anything to someone who doesn't know deep technical
details.

> +# 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

Combine the [[ ]]s.

Also, in general I'd suggest using '-z'/'-n' explicitly when it's
a empty/non-empty string with a meaningful value rather than a boolean.

> +	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.

Sounds like you're copying the old, horribly slow cargo.eclass API. 
Don't do that, unless you have to.  Prefer variable-setting approach
used by modern cargo.eclass.

> +nuget_uris() {
> +	debug-print-function ${FUNCNAME} "${@}"
> +
> +	local -r regex='^([a-zA-Z0-9_.-]+)-([0-9]+\.[0-9]+\.[0-9]+.*)$'

Sounds like you're copying the second super-horribly slow approach of
cargo.eclass.  Don't do that.

> +	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="${1##*/}"
> +
> +	if [[ -f "${NUGET_PACKAGES}"/${nuget_name} ]] ; then
> +		ewarn "${FUNCNAME}: ${nuget_name} already exists"

What does that mean?  What is the user supposed to do about it?  Is it
normal?  If it's normal, then why are you warning about it?  If it isn't
normal, then why isn't this fatal?

> +	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

-- 
Best regards,
Michał Górny



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

* Re: [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: introduce new eclass
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
@ 2023-07-30 19:34   ` Michał Górny
  2023-07-30 20:04     ` Maciej Barć
  0 siblings, 1 reply; 25+ messages in thread
From: Michał Górny @ 2023-07-30 19:34 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć

On Sun, 2023-07-30 at 16:26 +0200, Maciej Barć wrote:
> 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 | 602 +++++++++++++++++++++++++++++++++
>  1 file changed, 602 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 000000000..bdde11fe5
> --- /dev/null
> +++ b/eclass/dotnet-pkg-utils.eclass
> @@ -0,0 +1,602 @@
> +# 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: 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.

Given how intrusive this is, I don't think "-utils" is a correct suffix.
It's for eclasses providing utility functions without affecting packages
implicitly.

-- 
Best regards,
Michał Górny



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

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-30 19:30 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Michał Górny
@ 2023-07-30 20:01   ` Maciej Barć
  2023-07-31  5:08     ` Michał Górny
  2023-07-30 20:19   ` Florian Schmaus
  1 sibling, 1 reply; 25+ messages in thread
From: Maciej Barć @ 2023-07-30 20:01 UTC (permalink / raw
  To: gentoo-dev, Michał Górny

W dniu 30.07.2023 o 21:30, Michał Górny pisze:
> On Sun, 2023-07-30 at 16:26 +0200, Maciej Barć wrote:
>> 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 | 188 ++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 188 insertions(+)
>>   create mode 100644 eclass/nuget.eclass
>>
>> diff --git a/eclass/nuget.eclass b/eclass/nuget.eclass
>> new file mode 100644
>> index 000000000..320573c53
>> --- /dev/null
>> +++ b/eclass/nuget.eclass
>> @@ -0,0 +1,188 @@
>> +# 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: 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.
> 
> This doesn't say anything about why or how you'd use the eclass.
> 
>> +
>> +case ${EAPI} in
>> +	8) ;;
>> +	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
>> +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
> 
> What is the usage for this variable?  Is it a fixed value or something
> to be overriden in ebuilds?  Is it private or public?
> 
> Also namespace it to NUGET_*.
> 

It's too verbose imho, but sure.

>> +
>> +# @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" )
> 
> I'd be useful to explain what the default is.
> 
>> +
>> +# @ECLASS_VARIABLE: NUGET_PACKAGES
>> +# @DEFAULT_UNSET
>> +# @PRE_INHERIT
>> +# @DESCRIPTION:
>> +# Path from where NuGets will be restored from.
> 
> This doesn't say anything to someone who doesn't know deep technical
> details.
> 

Without duplicating MS docs how else yould You describe this variable?

> deep technical details.

"Restore" is standard .NET terminology.

Maybe something like: "this variable influences the dotnet executable 
behavior"?

Not sure what you want here.

>> +# 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
> 
> Combine the [[ ]]s.
> 
> Also, in general I'd suggest using '-z'/'-n' explicitly when it's
> a empty/non-empty string with a meaningful value rather than a boolean.
> 
>> +	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.
> 
> Sounds like you're copying the old, horribly slow cargo.eclass API.
> Don't do that, unless you have to.  Prefer variable-setting approach
> used by modern cargo.eclass.
> 

Please elaborate.

Maybe such mechanisms could be extracted into standalone eclass? I do 
not know cargo, rust nor how it is used in Gentoo.

>> +nuget_uris() {
>> +	debug-print-function ${FUNCNAME} "${@}"
>> +
>> +	local -r regex='^([a-zA-Z0-9_.-]+)-([0-9]+\.[0-9]+\.[0-9]+.*)$'
> 
> Sounds like you're copying the second super-horribly slow approach of
> cargo.eclass.  Don't do that.
> 
>> +	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="${1##*/}"
>> +
>> +	if [[ -f "${NUGET_PACKAGES}"/${nuget_name} ]] ; then
>> +		ewarn "${FUNCNAME}: ${nuget_name} already exists"
> 
> What does that mean?  What is the user supposed to do about it?  Is it
> normal?  If it's normal, then why are you warning about it?  If it isn't
> normal, then why isn't this fatal?

This can happen if NuGets copied from SYSTEM_NUGETS are overwritten by 
ones specified in ebuild.

This might be desired by ebuild author.

We need to have this logged, I think ewarn is appropriate.

> 
>> +	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
> 

-- 
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] 25+ messages in thread

* Re: [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: introduce new eclass
  2023-07-30 19:34   ` Michał Górny
@ 2023-07-30 20:04     ` Maciej Barć
  2023-07-31  5:09       ` Michał Górny
  0 siblings, 1 reply; 25+ messages in thread
From: Maciej Barć @ 2023-07-30 20:04 UTC (permalink / raw
  To: Michał Górny, gentoo-dev

W dniu 30.07.2023 o 21:34, Michał Górny pisze:
> On Sun, 2023-07-30 at 16:26 +0200, Maciej Barć wrote:
>> 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 | 602 +++++++++++++++++++++++++++++++++
>>   1 file changed, 602 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 000000000..bdde11fe5
>> --- /dev/null
>> +++ b/eclass/dotnet-pkg-utils.eclass
>> @@ -0,0 +1,602 @@
>> +# 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: 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.
> 
> Given how intrusive this is, I don't think "-utils" is a correct suffix.
> It's for eclasses providing utility functions without affecting packages
> implicitly.
> 

What about "-common", like "elisp-common.eclass" has?

Any suggestion?

BTW: I will not merge dotnet-pkg and dotnet-pkg-utils because then we 
will get the most perfect spaghetti-code-soup-thing known to men.

-- 
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] 25+ messages in thread

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-30 19:30 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Michał Górny
  2023-07-30 20:01   ` Maciej Barć
@ 2023-07-30 20:19   ` Florian Schmaus
  2023-07-31  5:02     ` Michał Górny
  1 sibling, 1 reply; 25+ messages in thread
From: Florian Schmaus @ 2023-07-30 20:19 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1.1: Type: text/plain, Size: 1784 bytes --]

On 30/07/2023 21.30, Michał Górny wrote:
> On Sun, 2023-07-30 at 16:26 +0200, Maciej Barć wrote:
>> +# @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.
> 
> Sounds like you're copying the old, horribly slow cargo.eclass API.
> Don't do that, unless you have to.  Prefer variable-setting approach
> used by modern cargo.eclass.

Should we make this a policy then?

On the other hand, I also wonder if its worth it.

You gave a similar comment when reviewing gradle.eclass and you changed 
the cargo.eclass to also provide the "variable-setting approach" [1].

However, while the $() construct in shells is relatively expensive due 
to the involved forking, it is usually only harmful when used in loops 
with a high iteration count. The loop in go-modules.eclass was a prime 
example of this. The loop was later fixed [2], and I can not help to 
think that this fix caused people to look for further usages of the fork 
construct.

Providing a better UX by increasing performance is good. Nevertheless, 
this should not become a which hunt.

The usage of cargo_carte_uris/ngutes_uris/gradle_src_uri is not in a 
large loop, therefore the situation is not comparable with the one in 
the go-modules.eclass [2].

Which problem are we solving by moving away from this towards a slightly 
more verbose construct?

- Flow


1: 59dbfb80f748 ("cargo.eclass: Add variable alternative to 
$(cargo_crate_uris)")
    https://github.com/gentoo/gentoo/commit/59dbfb80f748

2: 45e7aecd81e0 ("go-module.eclass: inline _go-module_gomod_encode()")
    https://github.com/gentoo/gentoo/commit/45e7aecd81e0

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 17273 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 618 bytes --]

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

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-30 20:19   ` Florian Schmaus
@ 2023-07-31  5:02     ` Michał Górny
  2023-07-31  7:53       ` Florian Schmaus
  0 siblings, 1 reply; 25+ messages in thread
From: Michał Górny @ 2023-07-31  5:02 UTC (permalink / raw
  To: gentoo-dev

On Sun, 2023-07-30 at 22:19 +0200, Florian Schmaus wrote:
> Which problem are we solving by moving away from this towards a slightly 
> more verbose construct?

The problem was that cargo.eclass ebuilds were taking significant time
during cache regeneration and slowing down tools noticeably.  No fancy
loops required, contrary to your great theory.

-- 
Best regards,
Michał Górny



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

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-30 20:01   ` Maciej Barć
@ 2023-07-31  5:08     ` Michał Górny
  0 siblings, 0 replies; 25+ messages in thread
From: Michał Górny @ 2023-07-31  5:08 UTC (permalink / raw
  To: gentoo-dev

On Sun, 2023-07-30 at 22:01 +0200, Maciej Barć wrote:
> > > +# @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.
> > 
> > Sounds like you're copying the old, horribly slow cargo.eclass API.
> > Don't do that, unless you have to.  Prefer variable-setting approach
> > used by modern cargo.eclass.
> > 
> 
> Please elaborate.
> 
> Maybe such mechanisms could be extracted into standalone eclass? I do 
> not know cargo, rust nor how it is used in Gentoo.
> 

Calling subshells in global scope is a very bad idea, and it is
completely unnecessary in the most common case when NUGETS are defined
prior to inherit and URIs are inserted into top-level SRC_URI.

Just look at cargo.eclass.

> > > +# @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="${1##*/}"
> > > +
> > > +	if [[ -f "${NUGET_PACKAGES}"/${nuget_name} ]] ; then
> > > +		ewarn "${FUNCNAME}: ${nuget_name} already exists"
> > 
> > What does that mean?  What is the user supposed to do about it?  Is it
> > normal?  If it's normal, then why are you warning about it?  If it isn't
> > normal, then why isn't this fatal?
> 
> This can happen if NuGets copied from SYSTEM_NUGETS are overwritten by 
> ones specified in ebuild.
> 
> This might be desired by ebuild author.
> 
> We need to have this logged, I think ewarn is appropriate.

ewarn is a warning for the end user.  The end user doesn't benefit from
being warned for "ebuild is doing something that might be wrong, or
might be perfectly fine, ignore this".

-- 
Best regards,
Michał Górny



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

* Re: [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: introduce new eclass
  2023-07-30 20:04     ` Maciej Barć
@ 2023-07-31  5:09       ` Michał Górny
  0 siblings, 0 replies; 25+ messages in thread
From: Michał Górny @ 2023-07-31  5:09 UTC (permalink / raw
  To: gentoo-dev

On Sun, 2023-07-30 at 22:04 +0200, Maciej Barć wrote:
> W dniu 30.07.2023 o 21:34, Michał Górny pisze:
> > On Sun, 2023-07-30 at 16:26 +0200, Maciej Barć wrote:
> > > 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 | 602 +++++++++++++++++++++++++++++++++
> > >   1 file changed, 602 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 000000000..bdde11fe5
> > > --- /dev/null
> > > +++ b/eclass/dotnet-pkg-utils.eclass
> > > @@ -0,0 +1,602 @@
> > > +# 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: 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.
> > 
> > Given how intrusive this is, I don't think "-utils" is a correct suffix.
> > It's for eclasses providing utility functions without affecting packages
> > implicitly.
> > 
> 
> What about "-common", like "elisp-common.eclass" has?
> 

Works for me.  It probably still doesn't really explain when you want "-
common", and when you want the main eclass.  I may have better
suggestions if I figured that out.


-- 
Best regards,
Michał Górny



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

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-31  5:02     ` Michał Górny
@ 2023-07-31  7:53       ` Florian Schmaus
  2023-07-31  9:32         ` Sam James
  0 siblings, 1 reply; 25+ messages in thread
From: Florian Schmaus @ 2023-07-31  7:53 UTC (permalink / raw
  To: gentoo-dev, Michał Górny


[-- Attachment #1.1.1: Type: text/plain, Size: 1136 bytes --]

On 31/07/2023 07.02, Michał Górny wrote:
> On Sun, 2023-07-30 at 22:19 +0200, Florian Schmaus wrote:
>> Which problem are we solving by moving away from this towards a slightly
>> more verbose construct?
> 
> The problem was that cargo.eclass ebuilds were taking significant time
> during cache regeneration and slowing down tools noticeably.  No fancy
> loops required, contrary to your great theory.

Removing the $()/fork from go-modules.eclass reduced the source time of 
a package from 2400 milliseconds to 236 milliseconds.

Changing, for example net-p2p/arti-1.1.6, to use _cargo_set_crate_uris 
reduces the source time from 44 milliseconds to 24 milliseconds.

That is a win in relative reduction, but absolute its just 20 
milliseconds. Cache regeneration is an embarrassingly parallel problem. 
Therefore such a reduction should not matter much, assuming you have 
some parallelism on the hardware level.

If switching to the variable-setting approach for something like 
cargo_crate_uris only motivated by reducing the cache regeneration a 
bit, then it is IMO borderline if its justified.

- Flow

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 17273 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 618 bytes --]

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

* Re: [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: introduce new eclass
  2023-07-30 14:26 ` [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: " Maciej Barć
@ 2023-07-31  9:20   ` Thomas Bracht Laumann Jespersen
  0 siblings, 0 replies; 25+ messages in thread
From: Thomas Bracht Laumann Jespersen @ 2023-07-31  9:20 UTC (permalink / raw
  To: gentoo-dev; +Cc: Maciej Barć


> +EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install

EXPORT_FUNCTIONS should go outside the inherit guard (see
https://devmanual.gentoo.org/eclass-writing/index.html#export-functions)
- unless I'm missing something and there's a specific reason to put it
inside.

> +
> +fi


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

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-31  7:53       ` Florian Schmaus
@ 2023-07-31  9:32         ` Sam James
  2023-07-31 10:49           ` Florian Schmaus
  0 siblings, 1 reply; 25+ messages in thread
From: Sam James @ 2023-07-31  9:32 UTC (permalink / raw
  To: gentoo-dev; +Cc: Michał Górny


Florian Schmaus <flow@gentoo.org> writes:

> [[PGP Signed Part:Undecided]]
> On 31/07/2023 07.02, Michał Górny wrote:
>> On Sun, 2023-07-30 at 22:19 +0200, Florian Schmaus wrote:
>>> Which problem are we solving by moving away from this towards a slightly
>>> more verbose construct?
>> The problem was that cargo.eclass ebuilds were taking significant
>> time
>> during cache regeneration and slowing down tools noticeably.  No fancy
>> loops required, contrary to your great theory.
>
> Removing the $()/fork from go-modules.eclass reduced the source time
> of a package from 2400 milliseconds to 236 milliseconds.
>
> Changing, for example net-p2p/arti-1.1.6, to use _cargo_set_crate_uris
> reduces the source time from 44 milliseconds to 24 milliseconds.
>
> That is a win in relative reduction, but absolute its just 20
> milliseconds. Cache regeneration is an embarrassingly parallel
> problem. Therefore such a reduction should not matter much, assuming
> you have some parallelism on the hardware level.

Consistency matters and I already raised the point last week as well.




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

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-31  9:32         ` Sam James
@ 2023-07-31 10:49           ` Florian Schmaus
  2023-07-31 11:39             ` Sam James
  2023-07-31 13:53             ` Michał Górny
  0 siblings, 2 replies; 25+ messages in thread
From: Florian Schmaus @ 2023-07-31 10:49 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1.1: Type: text/plain, Size: 1596 bytes --]

On 31/07/2023 11.32, Sam James wrote:
> 
> Florian Schmaus <flow@gentoo.org> writes:
> 
>> [[PGP Signed Part:Undecided]]
>> On 31/07/2023 07.02, Michał Górny wrote:
>>> On Sun, 2023-07-30 at 22:19 +0200, Florian Schmaus wrote:
>>>> Which problem are we solving by moving away from this towards a slightly
>>>> more verbose construct?
>>> The problem was that cargo.eclass ebuilds were taking significant
>>> time
>>> during cache regeneration and slowing down tools noticeably.  No fancy
>>> loops required, contrary to your great theory.
>>
>> Removing the $()/fork from go-modules.eclass reduced the source time
>> of a package from 2400 milliseconds to 236 milliseconds.
>>
>> Changing, for example net-p2p/arti-1.1.6, to use _cargo_set_crate_uris
>> reduces the source time from 44 milliseconds to 24 milliseconds.
>>
>> That is a win in relative reduction, but absolute its just 20
>> milliseconds. Cache regeneration is an embarrassingly parallel
>> problem. Therefore such a reduction should not matter much, assuming
>> you have some parallelism on the hardware level.
> 
> Consistency matters

Sure, I would be in favor of consistently using $(foo_uris).

Especially since the performance gains of the variable-setting approach 
are even lower than I first assumed. The cargo.eclass runs the function 
that computes CARGO_CRATE_URIS now twice, which adds significantly more 
overhead than the fork of $(foo_uris). See my patch to the ML.

 > and I already raised the point last week as well.

Here on the mailing list, or somewhere else?

- Flow

[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 17273 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 618 bytes --]

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

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-31 10:49           ` Florian Schmaus
@ 2023-07-31 11:39             ` Sam James
  2023-07-31 13:53             ` Michał Górny
  1 sibling, 0 replies; 25+ messages in thread
From: Sam James @ 2023-07-31 11:39 UTC (permalink / raw
  To: gentoo-dev


Florian Schmaus <flow@gentoo.org> writes:

> [[PGP Signed Part:Undecided]]
> On 31/07/2023 11.32, Sam James wrote:
>> Florian Schmaus <flow@gentoo.org> writes:
>> 
>>> [[PGP Signed Part:Undecided]]
>>> On 31/07/2023 07.02, Michał Górny wrote:
>>>> On Sun, 2023-07-30 at 22:19 +0200, Florian Schmaus wrote:
>>>>> Which problem are we solving by moving away from this towards a slightly
>>>>> more verbose construct?
>>>> The problem was that cargo.eclass ebuilds were taking significant
>>>> time
>>>> during cache regeneration and slowing down tools noticeably.  No fancy
>>>> loops required, contrary to your great theory.
>>>
>>> Removing the $()/fork from go-modules.eclass reduced the source time
>>> of a package from 2400 milliseconds to 236 milliseconds.
>>>
>>> Changing, for example net-p2p/arti-1.1.6, to use _cargo_set_crate_uris
>>> reduces the source time from 44 milliseconds to 24 milliseconds.
>>>
>>> That is a win in relative reduction, but absolute its just 20
>>> milliseconds. Cache regeneration is an embarrassingly parallel
>>> problem. Therefore such a reduction should not matter much, assuming
>>> you have some parallelism on the hardware level.
>> Consistency matters
>
> Sure, I would be in favor of consistently using $(foo_uris).

Too late for that. Please don't reopen the cargo.eclass issue
unnecessarily.

>
> Especially since the performance gains of the variable-setting
> approach are even lower than I first assumed. The cargo.eclass runs
> the function that computes CARGO_CRATE_URIS now twice, which adds
> significantly more overhead than the fork of $(foo_uris). See my patch
> to the ML.
>
>> and I already raised the point last week as well.
>
> Here on the mailing list, or somewhere else?
>

Here on the mailing list.


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

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-31 10:49           ` Florian Schmaus
  2023-07-31 11:39             ` Sam James
@ 2023-07-31 13:53             ` Michał Górny
  2023-07-31 14:20               ` Florian Schmaus
  1 sibling, 1 reply; 25+ messages in thread
From: Michał Górny @ 2023-07-31 13:53 UTC (permalink / raw
  To: gentoo-dev

On Mon, 2023-07-31 at 12:49 +0200, Florian Schmaus wrote:
> On 31/07/2023 11.32, Sam James wrote:
> > 
> > Florian Schmaus <flow@gentoo.org> writes:
> > 
> > > [[PGP Signed Part:Undecided]]
> > > On 31/07/2023 07.02, Michał Górny wrote:
> > > > On Sun, 2023-07-30 at 22:19 +0200, Florian Schmaus wrote:
> > > > > Which problem are we solving by moving away from this towards a slightly
> > > > > more verbose construct?
> > > > The problem was that cargo.eclass ebuilds were taking significant
> > > > time
> > > > during cache regeneration and slowing down tools noticeably.  No fancy
> > > > loops required, contrary to your great theory.
> > > 
> > > Removing the $()/fork from go-modules.eclass reduced the source time
> > > of a package from 2400 milliseconds to 236 milliseconds.
> > > 
> > > Changing, for example net-p2p/arti-1.1.6, to use _cargo_set_crate_uris
> > > reduces the source time from 44 milliseconds to 24 milliseconds.
> > > 
> > > That is a win in relative reduction, but absolute its just 20
> > > milliseconds. Cache regeneration is an embarrassingly parallel
> > > problem. Therefore such a reduction should not matter much, assuming
> > > you have some parallelism on the hardware level.
> > 
> > Consistency matters
> 
> Sure, I would be in favor of consistently using $(foo_uris).
> 
> Especially since the performance gains of the variable-setting approach 
> are even lower than I first assumed. The cargo.eclass runs the function 
> that computes CARGO_CRATE_URIS now twice, which adds significantly more 
> overhead than the fork of $(foo_uris). See my patch to the ML.
> 

So, to summarize, your point is that after you've ignored the original
thread and we've actually started switching stuff to ${xxx}, we should
reopen the discussion and start moving everything back to $(xxx), even
though you've proven yourself that it's less optimal ("but only
a little!") and because... you prefer it?  Yes, that certainly makes
sense.  It's surely a great way to run a distro is to undo optimizations
6 weeks later because you liked the old variant better.

-- 
Best regards,
Michał Górny



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

* Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
  2023-07-31 13:53             ` Michał Górny
@ 2023-07-31 14:20               ` Florian Schmaus
  0 siblings, 0 replies; 25+ messages in thread
From: Florian Schmaus @ 2023-07-31 14:20 UTC (permalink / raw
  To: gentoo-dev, Michał Górny


[-- Attachment #1.1.1: Type: text/plain, Size: 3487 bytes --]

On 31/07/2023 15.53, Michał Górny wrote:
> On Mon, 2023-07-31 at 12:49 +0200, Florian Schmaus wrote:
>> On 31/07/2023 11.32, Sam James wrote:
>>>
>>> Florian Schmaus <flow@gentoo.org> writes:
>>>
>>>> [[PGP Signed Part:Undecided]]
>>>> On 31/07/2023 07.02, Michał Górny wrote:
>>>>> On Sun, 2023-07-30 at 22:19 +0200, Florian Schmaus wrote:
>>>>>> Which problem are we solving by moving away from this towards a slightly
>>>>>> more verbose construct?
>>>>> The problem was that cargo.eclass ebuilds were taking significant
>>>>> time
>>>>> during cache regeneration and slowing down tools noticeably.  No fancy
>>>>> loops required, contrary to your great theory.
>>>>
>>>> Removing the $()/fork from go-modules.eclass reduced the source time
>>>> of a package from 2400 milliseconds to 236 milliseconds.
>>>>
>>>> Changing, for example net-p2p/arti-1.1.6, to use _cargo_set_crate_uris
>>>> reduces the source time from 44 milliseconds to 24 milliseconds.
>>>>
>>>> That is a win in relative reduction, but absolute its just 20
>>>> milliseconds. Cache regeneration is an embarrassingly parallel
>>>> problem. Therefore such a reduction should not matter much, assuming
>>>> you have some parallelism on the hardware level.
>>>
>>> Consistency matters
>>
>> Sure, I would be in favor of consistently using $(foo_uris).
>>
>> Especially since the performance gains of the variable-setting approach
>> are even lower than I first assumed. The cargo.eclass runs the function
>> that computes CARGO_CRATE_URIS now twice, which adds significantly more
>> overhead than the fork of $(foo_uris). See my patch to the ML.
>>
> 
> So, to summarize, your point is that after you've ignored the original
> thread

I can not say that I have actively ignored the thread. I am simply not 
aware of such a thread where we discussed that the variable-setting 
pattern has to be used instead of $(foo_uris).

I am sorry, I must have missed it. And it appears that my search-foo is 
not strong enough to dig it up. Could you please point me to the thread?

Or, are you maybe referring to the thread with your cargo.eclass patches 
from June, 16th? That seemed to be only about cargo.eclass and not about 
a tree-wide policy.


> and we've actually started switching stuff to ${xxx}, we should
> reopen the discussion and start moving everything back to $(xxx),

I never demanded that anything should be moved back to $(foo_uris). It's 
up to the eclass maintainer to decide which reasoning the follow and how 
they weight the arguments.


> even
> though you've proven yourself that it's less optimal ("but only
> a little!") and because... you prefer it? 

Optimality is not one-dimensional. Speed is not everything.

The $(foo_uri) pattern has slightly less code complexity and is slightly 
better readable. Moreover, given that the justification for moving away 
from it is negligible speedup, I prefer $(foo_uri).

Moving from $(foo_uri) to the variable-setting pattern ${foo_uri} appear 
to be a solution to a non-existing problem.

I have only expressed my opinion. I think that the variable-setting 
pattern is somewhat disadvantageous in this case.

However, this is not a hill for me to die on.


> Yes, that certainly makes
> sense.  It's surely a great way to run a distro is to undo optimizations
> 6 weeks later because you liked the old variant better.

Again, nobody asked for any undoing.

- Flow


[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 17273 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 618 bytes --]

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

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

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-30 14:26 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
2023-07-30 14:26 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
2023-07-30 19:34   ` Michał Górny
2023-07-30 20:04     ` Maciej Barć
2023-07-31  5:09       ` Michał Górny
2023-07-30 14:26 ` [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: " Maciej Barć
2023-07-31  9:20   ` Thomas Bracht Laumann Jespersen
2023-07-30 14:26 ` [gentoo-dev] [PATCH 4/7] dev-dotnet/dotnet-runtime-nugets: new package Maciej Barć
2023-07-30 14:26 ` [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: " Maciej Barć
2023-07-30 14:26 ` [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism Maciej Barć
2023-07-30 14:26 ` [gentoo-dev] [PATCH 7/7] dev-dotnet/dotnet-sdk-bin: drop old Maciej Barć
2023-07-30 19:30 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Michał Górny
2023-07-30 20:01   ` Maciej Barć
2023-07-31  5:08     ` Michał Górny
2023-07-30 20:19   ` Florian Schmaus
2023-07-31  5:02     ` Michał Górny
2023-07-31  7:53       ` Florian Schmaus
2023-07-31  9:32         ` Sam James
2023-07-31 10:49           ` Florian Schmaus
2023-07-31 11:39             ` Sam James
2023-07-31 13:53             ` Michał Górny
2023-07-31 14:20               ` Florian Schmaus
  -- strict thread matches above, loose matches on Subject: below --
2023-07-16 12:38 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ć

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