Signed-off-by: Maciej Barć <x...@gentoo.org> --- eclass/dotnet-pkg.eclass | 8 +++++-- eclass/nuget.eclass | 47 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 3 deletions(-)
diff --git a/eclass/dotnet-pkg.eclass b/eclass/dotnet-pkg.eclass index 3647eb399..337864f1f 100644 --- a/eclass/dotnet-pkg.eclass +++ b/eclass/dotnet-pkg.eclass @@ -225,12 +225,16 @@ dotnet-pkg_remove-bad() { # Default "src_prepare" for the "dotnet-pkg" eclass. # Prepare the package sources. # -# Run "dotnet-pkg-base_remove-global-json" -# and "dotnet-pkg-base_remove-bad" for each found solution file. +# Run "dotnet-pkg-base_remove-global-json", "dotnet-pkg-base_remove-bad" +# for each found solution file and prepare for using Nuget. dotnet-pkg_src_prepare() { dotnet-pkg-base_remove-global-json dotnet-pkg-base_foreach-solution "$(pwd)" dotnet-pkg_remove-bad + find "$(pwd)" -maxdepth 1 -iname "nuget.config" -delete || + die "${FUNCNAME[0]}: failed to remove unwanted \"NuGet.config\" config files" + nuget_writeconfig "$(pwd)/" + default } diff --git a/eclass/nuget.eclass b/eclass/nuget.eclass index 669e21300..ac8629848 100644 --- a/eclass/nuget.eclass +++ b/eclass/nuget.eclass @@ -1,4 +1,4 @@ -# Copyright 1999-2023 Gentoo Authors +# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: nuget.eclass @@ -226,6 +226,51 @@ nuget_unpack-non-nuget-archives() { done } +# @FUNCTION: nuget_writeconfig +# @USAGE: <path> +# @DESCRIPTION: +# Create a "NuGet.config" config file that can be used to overwrite any other +# Nuget configuration file in order to prevent Nuget executable from accessing +# the network or undesired NuPkg package sources. +# +# If given path ends with a slash, a file name "NuGet.config" is assumed, +# otherwise contents are written to specified file path exactly. +# +# Created configuration file clears all other NuPkg sources and inserts +# "NUGET_PACKAGES" as the only one source. +# +# This function is used inside "dotnet-pkg_src_prepare" +# from the "dotnet-pkg" eclass. +# +# This function is used inside "dotnet-pkg_src_prepare" +# from the "dotnet-pkg" eclass. +nuget_writeconfig() { + debug-print-function "${FUNCNAME[0]}" "${@}" + + case "${1}" in + "" ) die "${FUNCNAME[0]}: no directory/file path specified" ;; + */ ) mkdir -p "${1}" || die ;; + esac + + local nuget_config_path + + if [[ -d "${1}" ]] ; then + nuget_config_path="${1}/NuGet.config" + else + nuget_config_path="${1}" + fi + + cat <<-EOF > "${nuget_config_path}" || die + <?xml version="1.0" encoding="utf-8"?> + <configuration> + <packageSources> + <clear /> + <add key="nuget" value="${NUGET_PACKAGES}" /> + </packageSources> + </configuration> + EOF +} + # @FUNCTION: nuget_donuget # @USAGE: <nuget-path> ... # @DESCRIPTION: -- 2.43.0