From: "Maciej Barć" <xgqt@gentoo.org>
To: Sam James <sam@gentoo.org>, gentoo-dev@lists.gentoo.org
Cc: 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 15:44:35 +0200 [thread overview]
Message-ID: <f53f3357-48e9-4939-fa3c-cde1ad590d9a@gentoo.org> (raw)
In-Reply-To: <87v8ekrpi6.fsf@gentoo.org>
>> +# @ECLASS_VARIABLE: SYSTEM_NUGETS
>> +# @DESCRIPTION:
>> +# Location of the system NuGet packages directory.
>> +SYSTEM_NUGETS=/opt/dotnet-nugets
>> +
>
> Not to bikeshed too hard, but wonder if this should be another
> directory.
>
Given what this is used for I think it is fitting.
>> +# @ECLASS_VARIABLE: NUGET_APIS
>> +# @DESCRIPTION:
>> +# NuGet API URLs to use for precompiled NuGet package ".nupkg" downloads.
>> +# Set or append to this variable post-inherit, but before calling
>> +# the "nuget_uris" function, preferably just before "SRC_URI".
>
> Is there a reason we don't just mandate this per-inherit? Feels like
> it'd be cleaner there.
>
Lots of repetitions, only necessary in special cases, like pwsh
from-source ebuild.
>> +# Example:
>> +# @CODE
>> +# NUGETS="
>> +# ImGui.NET-1.87.2
>> +# Config.Net-4.19.0
>> +# "
>> +#
>> +# inherit dotnet-pkg
>> +#
>> +# ...
>> +#
>> +# SRC_URI+=" $(nuget_uris) "
>> +# @CODE
>
> Can we use the approach we're doing w/ cargo.eclass, so this isn't
> the default option? (i.e. set a global variable instead).
>
I believe my and navi work predates that cargo.eclass mechanism.
I stray away from rust pkgs and was not aware of it. I doubt I will have
time to check it out.
Can you explain the better approach?
>> + local nuget_name="$(basename "${1}")"
>
> You should be able to do this with pure bash.
>
Yup :)
W dniu 16.07.2023 o 14:43, Sam James pisze:
>
> Maciej Barć <xgqt@gentoo.org> writes:
>
>> Bug: https://bugs.gentoo.org/900597
>> Bug: https://github.com/gentoo/gentoo/pull/29309
>> Signed-off-by: Maciej Barć <xgqt@gentoo.org>
>> ---
>
> First, thank you to you & navi for working on this. It's long overdue.
>
> Left some small comments below.
>
>> eclass/nuget.eclass | 192 ++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 192 insertions(+)
>> create mode 100644 eclass/nuget.eclass
>>
>> diff --git a/eclass/nuget.eclass b/eclass/nuget.eclass
>> new file mode 100644
>> index 0000000000..cbc9bae4a1
>> --- /dev/null
>> +++ b/eclass/nuget.eclass
>> @@ -0,0 +1,192 @@
>> +# Copyright 1999-2023 Gentoo Authors
>> +# Distributed under the terms of the GNU General Public License v2
>> +
>> +# @ECLASS: nuget.eclass
>> +# @MAINTAINER:
>> +# Gentoo Dotnet project <dotnet@gentoo.org>
>> +# @AUTHOR:
>> +# Anna Figueiredo Gomes <navi@vlhl.dev>
>> +# Maciej Barć <xgqt@gentoo.org>
>> +# @SUPPORTED_EAPIS: 7 8
>> +# @BLURB: common functions and variables for handling .NET NuGets
>> +# @DESCRIPTION:
>> +# This eclass is designed to provide support for .NET NuGet's ".nupkg" files.
>> +#
>> +# This eclass does not export any phase functions, for that see
>> +# the "dotnet-pkg" eclass.
>> +
>> +case "${EAPI}" in
>> + 7 | 8 )
>> + :
>> + ;;
>> + * )
>> + die "${ECLASS}: EAPI ${EAPI} unsupported."
>> + ;;
>> +esac
>> +
>> +if [[ -z ${_NUGET_ECLASS} ]] ; then
>> +_NUGET_ECLASS=1
>> +
>> +# @ECLASS_VARIABLE: SYSTEM_NUGETS
>> +# @DESCRIPTION:
>> +# Location of the system NuGet packages directory.
>> +SYSTEM_NUGETS=/opt/dotnet-nugets
>> +
>
> Not to bikeshed too hard, but wonder if this should be another
> directory.
>
>> +# @ECLASS_VARIABLE: NUGET_APIS
>> +# @DESCRIPTION:
>> +# NuGet API URLs to use for precompiled NuGet package ".nupkg" downloads.
>> +# Set or append to this variable post-inherit, but before calling
>> +# the "nuget_uris" function, preferably just before "SRC_URI".
>
> Is there a reason we don't just mandate this per-inherit? Feels like
> it'd be cleaner there.
>
>> +#
>> +# Example:
>> +# @CODE
>> +# SRC_URI="https://example.com/example.tar.xz"
>> +# NUGET_APIS+=( "https://api.nuget.org/v3-flatcontainer" )
>> +# SRC_URI+=" $(nuget_uris) "
>> +# @CODE
>> +NUGET_APIS=( "https://api.nuget.org/v3-flatcontainer" )
>> +
>> +# @ECLASS_VARIABLE: NUGET_PACKAGES
>> +# @DEFAULT_UNSET
>> +# @PRE_INHERIT
>> +# @DESCRIPTION:
>> +# Path from where NuGets will be restored from.
>> +# Defaults to ${T}/nugets for use with "nuget_uris" but may be set to a custom
>> +# location to, for example, restore NuGets extracted form a prepared archive.
>> +# Do not set this variable in conjunction with non-empty "NUGETS".
>> +if [[ "${NUGETS}" ]] || [[ ! "${NUGET_PACKAGES}" ]] ; then
>> + NUGET_PACKAGES="${T}"/nugets
>> +fi
>> +export NUGET_PACKAGES
>> +
>> +# @ECLASS_VARIABLE: NUGETS
>> +# @DEFAULT_UNSET
>> +# @PRE_INHERIT
>> +# @DESCRIPTION:
>> +# String containing all NuGet packages that need to be downloaded.
>> +# Used by "nuget_uris".
>> +#
>> +# Example:
>> +# @CODE
>> +# NUGETS="
>> +# ImGui.NET-1.87.2
>> +# Config.Net-4.19.0
>> +# "
>> +#
>> +# inherit dotnet-pkg
>> +#
>> +# ...
>> +#
>> +# SRC_URI+=" $(nuget_uris) "
>> +# @CODE
>
> Can we use the approach we're doing w/ cargo.eclass, so this isn't
> the default option? (i.e. set a global variable instead).
>
>> [...]
>> +# @FUNCTION: nuget_link
>> +# @USAGE: <nuget-path>
>> +# @DESCRIPTION:
>> +# Link a specified NuGet package at "nuget-path" to the "NUGET_PACKAGES"
>> +# directory.
>> +#
>> +# Example:
>> +# @CODE
>> +# nuget_link "${DISTDIR}"/pkg.0.nupkg
>> +# @CODE
>> +#
>> +# This function is used inside "dotnet-pkg_src_unpack"
>> +# from the "dotnet-pkg" eclass.
>> +nuget_link() {
>> + [[ ! "${1}" ]] && die "${FUNCNAME}: no nuget path given"
>> +
>> + mkdir -p "${NUGET_PACKAGES}" || die
>> +
>> + local nuget_name="$(basename "${1}")"
>
> You should be able to do this with pure bash.
>
>> [...]
>
> best,
> sam
--
Have a great day!
~ Maciej XGQT Barć
xgqt@gentoo.org
Gentoo Linux developer
(dotnet, emacs, math, ml, nim, scheme, sci)
https://wiki.gentoo.org/wiki/User:Xgqt
9B0A 4C5D 02A3 B43C 9D6F D6B1 14D7 4A1F 43A6 AC3C
next prev parent reply other threads:[~2023-07-16 13:44 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 ` [gentoo-dev] [PATCH 1/7] eclass/nuget.eclass: introduce new eclass Sam James
2023-07-16 13:44 ` Maciej Barć [this message]
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=f53f3357-48e9-4939-fa3c-cde1ad590d9a@gentoo.org \
--to=xgqt@gentoo.org \
--cc=dotnet@gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
--cc=navi@vlhl.dev \
--cc=sam@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