From mboxrd@z Thu Jan 1 00:00:00 1970 From: zimoun Subject: bug#38529: Make --ad-hoc the default for guix environment proposed deprecation mechanism Date: Fri, 13 Dec 2019 13:02:27 +0100 Message-ID: References: <87eexeu8mo.fsf@ambrevar.xyz> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Return-path: Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: =?UTF-8?Q?G=C3=A1bor?= Boskovits Cc: Guix-devel , 38529@debbugs.gnu.org List-Id: guix-devel.gnu.org Hi G=C3=A1bor, On Thu, 12 Dec 2019 at 21:54, G=C3=A1bor Boskovits wr= ote: > zimoun ezt =C3=ADrta (id=C5=91pont: 2019. dec.= 12., Cs=C3=BC 17:47): >> Maybe I miss a point. Is the aim to conserve the "--ad-hoc" option >> with a different effect? Or why do we want to conserve this option >> name? >> It appears to me simpler to give another name, for example >> "--inputs-of". And it is more meaningful. > > Sorry for the confusion. Ad-hoc should be retained with the same effect, = so that we do not break existing scripts. > Renamin the option would be ok. It even makes sense to me. What I propose is: - keep the option "--ad-hoc" with the current behavior; so same effect - add a new option "--inputs-of" with the new behavior; name more meaning= ful - and two env variables; to not break existing scripts >> First, when "--ad-hoc" is used then it reports a warning: deprecated >> option and falls in the current behavior. >> When "--inputs-of" is used then it falls in the new behavior. >> Therefore, no needs of the ugly "--ignore-deprecated-ad-hoc". > > That could be done. The problem is caused by uses of guix environment tha= t does not use any of these options. Those mean different things after the = change. The transition to such use-case was described below with the introduction of 2 env variables. :-) >> # Alice >> $ guix environment foo --ad-hoc bar >> Warning: deprecated... explanations... >> instead use: >> guix environment bar --inputs-of foo >> >> # Bob >> $ guix environment bar --inputs-of foo >> >> >> Second, the previous "guix environment foo" (dependencies of foo) is >> inconsistent with the new "guix environment bar" (only the package >> bar). Therefore, let introduce the GUIX_ENVIRONMENT_DEPRECATED >> variable to distinguish both, as you said. > > Ok. It is the easy part. ;-) Now the hard part: avoid to break existing scripts. >> # Alice >> $ guix environment foo >> Warning: previous behavior requires GUIX_ENVIRONMENT_DEPRECATED=3D1 >> turn off the warning: GUIX_ENVIRONMENT_NOWARNING=3D1 >> >> And Alice has now a new shell with the package foo. If she wants the >> dependencies, she has two options: >> >> $ GUIX_ENVIRONMENT=3D1 guix environment foo >> or >> $ guix environment --inputs-of foo >> >> >> # Bob >> $ guix environment bar >> Warning: previous behavior requires GUIX_ENVIRONMENT >> >> And if Bob is annoyed by the warnings each time, he globally turns off >> with the variable GUIX_ENVIRONMENT_NOWARNING=3D1. >> >> >> Couple of months later -- after the period adoption -- we remove the >> variables GUIX_ENVIRONMENT_NOWARNING and GUIX_ENVIRONMENT_DEPRECATED; >> still keeping the warning with the "--ad-hoc" option. And then, after >> we can remove the "--ad-hoc" option if required. > We could recommend simply to use something like: > GUIX_ENVIRONMENT_DEPRECATED=3D0 guix environment ... > Instead in existing scripts that are fixed to use the new syntax. This in= deed looks like a better solution, and it is less of a maintenance burden. = Good idea. My point is: the new variable GUIX_ENVIRONMENT_DEPRECATED should only be used by the scripts that call "guix environment pkg" without the options "--ad-hoc" or "--inputs-of". And I think that it represents really few scripts in real life. :-) > Summarizing: > Introduce the environment variable. > For fixed scripts recommend unsetting the environment variable. I am not to get your plan. :-) Cheers, simon