public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Sam James <sam@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Cc: "Maciej Barć" <xgqt@gentoo.org>, Anna <navi@vlhl.dev>,
	dotnet <dotnet@gentoo.org>
Subject: Re: [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass
Date: Sun, 16 Jul 2023 13:43:53 +0100	[thread overview]
Message-ID: <87v8ekrpi6.fsf@gentoo.org> (raw)
In-Reply-To: <20230716123830.78932-1-xgqt@gentoo.org>

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


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

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

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

Left some small comments below.

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

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

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

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

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

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

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

You should be able to do this with pure bash.

> [...]

best,
sam

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

  parent reply	other threads:[~2023-07-16 12:48 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-16 12:38 [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 2/7] eclass/dotnet-pkg-utils.eclass: " Maciej Barć
2023-07-16 12:48   ` Sam James
2023-07-16 13:35     ` Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 3/7] eclass/dotnet-pkg.eclass: " Maciej Barć
2023-07-16 12:56   ` Sam James
2023-07-16 13:38     ` Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 4/7] dev-dotnet/dotnet-runtime-nugets: new package Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 5/7] app-eselect/eselect-dotnet: " Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 6/7] dev-dotnet/dotnet-sdk-bin: update packaging mechanism Maciej Barć
2023-07-16 12:58   ` Sam James
2023-07-16 13:31     ` Maciej Barć
2023-07-16 12:38 ` [gentoo-dev] [PATCH 7/7] dev-dotnet/dotnet-sdk-bin: drop old Maciej Barć
2023-07-16 12:43 ` Sam James [this message]
2023-07-16 13:44   ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Maciej Barć
2023-07-16 13:40 ` Ulrich Mueller
2023-07-16 13:47   ` Maciej Barć
  -- strict thread matches above, loose matches on Subject: below --
2023-07-30 14:26 Maciej Barć
2023-07-30 19:30 ` 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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v8ekrpi6.fsf@gentoo.org \
    --to=sam@gentoo.org \
    --cc=dotnet@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    --cc=navi@vlhl.dev \
    --cc=xgqt@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox