public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
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


  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