Merge pull request #150132 from wamserma/remove-python2Writer

writers.writePython2: remove / writers.writePyPy{2,3}: init
This commit is contained in:
Lassulus 2021-12-15 10:55:31 +01:00 committed by GitHub
commit 65ca86b189
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 122 additions and 15 deletions

View file

@ -83,11 +83,22 @@
release based on GTK+3 and Python 3.
</para>
</listitem>
<listitem>
<para>
The <literal>writers.writePython2</literal> and corresponding
<literal>writers.writePython2Bin</literal> convenience
functions to create executable Python 2 scripts in the store
were removed in preparation of removal of the Python 2
interpreter. Scripts have to be converted to Python 3 for use
with <literal>writers.writePython3</literal> or
<literal>writers.writePyPy2</literal> needs to be used.
</para>
</listitem>
</itemizedlist>
</section>
<section xml:id="sec-release-22.05-notable-changes">
<title>Other Notable Changes</title>
<itemizedlist spacing="compact">
<itemizedlist>
<listitem>
<para>
The option
@ -113,6 +124,16 @@
socket <literal>/run/redis-${serverName}/redis.sock</literal>.
</para>
</listitem>
<listitem>
<para>
The
<literal>writers.writePyPy2</literal>/<literal>writers.writePyPy3</literal>
and corresponding
<literal>writers.writePyPy2Bin</literal>/<literal>writers.writePyPy3Bin</literal>
convenience functions to create executable Python 2/3 scripts
using the PyPy interpreter were added.
</para>
</listitem>
</itemizedlist>
</section>
</section>

View file

@ -34,6 +34,9 @@ In addition to numerous new and upgraded packages, this release has the followin
- `pkgs.claws-mail-gtk2`, representing Claws Mail's older release version three, was removed in order to get rid of Python 2.
Please switch to `claws-mail`, which is Claws Mail's latest release based on GTK+3 and Python 3.
- The `writers.writePython2` and corresponding `writers.writePython2Bin` convenience functions to create executable Python 2 scripts in the store were removed in preparation of removal of the Python 2 interpreter.
Scripts have to be converted to Python 3 for use with `writers.writePython3` or `writers.writePyPy2` needs to be used.
## Other Notable Changes {#sec-release-22.05-notable-changes}
- The option [services.redis.servers](#opt-services.redis.servers) was added
@ -51,3 +54,5 @@ In addition to numerous new and upgraded packages, this release has the followin
are only accessible by default
to the members of the Unix group `redis-${serverName}`
through the Unix socket `/run/redis-${serverName}/redis.sock`.
- The `writers.writePyPy2`/`writers.writePyPy3` and corresponding `writers.writePyPy2Bin`/`writers.writePyPy3Bin` convenience functions to create executable Python 2/3 scripts using the PyPy interpreter were added.

View file

@ -0,0 +1,35 @@
lib: prev:
let
# Removing recurseForDerivation prevents derivations of aliased attribute
# set to appear while listing all the packages available.
removeRecurseForDerivations = alias: with lib;
if alias.recurseForDerivations or false then
removeAttrs alias ["recurseForDerivations"]
else alias;
# Disabling distribution prevents top-level aliases for non-recursed package
# sets from building on Hydra.
removeDistribute = alias: with lib;
if isDerivation alias then
dontDistribute alias
else alias;
# Make sure that we are not shadowing something from
# writers.
checkInPkgs = n: alias: if builtins.hasAttr n prev
then throw "Alias ${n} is still in writers"
else alias;
mapAliases = aliases:
lib.mapAttrs (n: alias: removeDistribute
(removeRecurseForDerivations
(checkInPkgs n alias)))
aliases;
in
mapAliases ({
/* Cleanup before 22.05, Added 2021-12-11 */
writePython2 = "Python 2 is EOL and the use of writers.writePython2 is deprecated.";
writePython2Bin = "Python 2 is EOL and the use of writers.writePython2Bin is deprecated.";
})

View file

@ -1,7 +1,9 @@
{ pkgs, buildPackages, lib, stdenv, libiconv, gawk, gnused, gixy }:
{ pkgs, config, buildPackages, lib, stdenv, libiconv, gawk, gnused, gixy }:
with lib;
rec {
let
aliases = if (config.allowAliases or true) then (import ./aliases.nix lib) else prev: {};
writers = with lib; rec {
# Base implementation for non-compiled executables.
# Takes an interpreter, for example `${pkgs.bash}/bin/bash`
#
@ -245,11 +247,11 @@ rec {
'');
} name;
# writePython2 takes a name an attributeset with libraries and some python2 sourcecode and
# writePyPy2 takes a name an attributeset with libraries and some pypy2 sourcecode and
# returns an executable
#
# Example:
# writePython2 "test_python2" { libraries = [ pkgs.python2Packages.enum ]; } ''
# writePyPy2 "test_pypy2" { libraries = [ pkgs.pypy2Packages.enum ]; } ''
# from enum import Enum
#
# class Test(Enum):
@ -257,11 +259,11 @@ rec {
#
# print Test.a
# ''
writePython2 = makePythonWriter pkgs.python2 pkgs.python2Packages;
writePyPy2 = makePythonWriter pkgs.pypy2 pkgs.pypy2Packages;
# writePython2Bin takes the same arguments as writePython2 but outputs a directory (like writeScriptBin)
writePython2Bin = name:
writePython2 "/bin/${name}";
# writePyPy2Bin takes the same arguments as writePyPy2 but outputs a directory (like writeScriptBin)
writePyPy2Bin = name:
writePyPy2 "/bin/${name}";
# writePython3 takes a name an attributeset with libraries and some python3 sourcecode and
# returns an executable
@ -280,4 +282,25 @@ rec {
# writePython3Bin takes the same arguments as writePython3 but outputs a directory (like writeScriptBin)
writePython3Bin = name:
writePython3 "/bin/${name}";
}
# writePyPy3 takes a name an attributeset with libraries and some pypy3 sourcecode and
# returns an executable
#
# Example:
# writePyPy3 "test_pypy3" { libraries = [ pkgs.pypy3Packages.pyyaml ]; } ''
# import yaml
#
# y = yaml.load("""
# - test: success
# """)
# print(y[0]['test'])
# ''
writePyPy3 = makePythonWriter pkgs.pypy3 pkgs.pypy3Packages;
# writePyPy3Bin takes the same arguments as writePyPy3 but outputs a directory (like writeScriptBin)
writePyPy3Bin = name:
writePyPy3 "/bin/${name}";
};
in
writers // (aliases writers)

View file

@ -3,8 +3,9 @@
, lib
, nodePackages
, perlPackages
, python2Packages
, pypy2Packages
, python3Packages
, pypy3Packages
, runCommand
, writers
, writeText
@ -54,7 +55,7 @@ let
print "success\n" if true;
'';
python2 = writePython2Bin "test-writers-python2-bin" { libraries = [ python2Packages.enum ]; } ''
pypy2 = writePyPy2Bin "test-writers-pypy2-bin" { libraries = [ pypy2Packages.enum ]; } ''
from enum import Enum
@ -73,6 +74,15 @@ let
""")
print(y[0]['test'])
'';
pypy3 = writePyPy3Bin "test-writers-pypy3-bin" { libraries = [ pypy3Packages.pyyaml ]; } ''
import yaml
y = yaml.load("""
- test: success
""")
print(y[0]['test'])
'';
};
simple = {
@ -111,7 +121,7 @@ let
print "success\n" if true;
'';
python2 = writePython2 "test-writers-python2" { libraries = [ python2Packages.enum ]; } ''
pypy2 = writePyPy2 "test-writers-pypy2" { libraries = [ pypy2Packages.enum ]; } ''
from enum import Enum
@ -131,13 +141,26 @@ let
print(y[0]['test'])
'';
python2NoLibs = writePython2 "test-writers-python2-no-libs" {} ''
pypy3 = writePyPy3 "test-writers-pypy3" { libraries = [ pypy3Packages.pyyaml ]; } ''
import yaml
y = yaml.load("""
- test: success
""")
print(y[0]['test'])
'';
pypy2NoLibs = writePyPy2 "test-writers-pypy2-no-libs" {} ''
print("success")
'';
python3NoLibs = writePython3 "test-writers-python3-no-libs" {} ''
print("success")
'';
pypy3NoLibs = writePyPy3 "test-writers-pypy3-no-libs" {} ''
print("success")
'';
};