Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2021-04-26 00:17:03 +00:00 committed by GitHub
commit 8634c6f7d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 1408 additions and 571 deletions

View File

@ -9861,6 +9861,12 @@
githubId = 3105057; githubId = 3105057;
name = "Jan Beinke"; name = "Jan Beinke";
}; };
therealansh = {
email = "tyagiansh23@gmail.com";
github = "therealansh";
githubId = 57180880;
name = "Ansh Tyagi";
};
thesola10 = { thesola10 = {
email = "me@thesola.io"; email = "me@thesola.io";
github = "thesola10"; github = "thesola10";

View File

@ -204,18 +204,18 @@
XKB XKB
</link> </link>
keyboard layouts using the option keyboard layouts using the option
<option> <option><link linkend="opt-services.xserver.extraLayouts">
<link linkend="opt-services.xserver.extraLayouts"> services.xserver.extraLayouts</link></option>.
services.xserver.extraLayouts </para>
</link> <para>
</option>.
As a first example, we are going to create a layout based on the basic US As a first example, we are going to create a layout based on the basic US
layout, with an additional layer to type some greek symbols by pressing the layout, with an additional layer to type some greek symbols by pressing the
right-alt key. right-alt key.
</para> </para>
<para> <para>
To do this we are going to create a <literal>us-greek</literal> file Create a file called <literal>us-greek</literal> with the following
with a <literal>xkb_symbols</literal> section. content (under a directory called <literal>symbols</literal>; it's
an XKB peculiarity that will help with testing):
</para> </para>
<programlisting> <programlisting>
xkb_symbols &quot;us-greek&quot; xkb_symbols &quot;us-greek&quot;
@ -231,14 +231,13 @@ xkb_symbols &quot;us-greek&quot;
}; };
</programlisting> </programlisting>
<para> <para>
To install the layout, the filepath, a description and the list of A minimal layout specification must include the following:
languages must be given:
</para> </para>
<programlisting> <programlisting>
<xref linkend="opt-services.xserver.extraLayouts"/>.us-greek = { <xref linkend="opt-services.xserver.extraLayouts"/>.us-greek = {
description = "US layout with alt-gr greek"; description = "US layout with alt-gr greek";
languages = [ "eng" ]; languages = [ "eng" ];
symbolsFile = /path/to/us-greek; symbolsFile = /yourpath/symbols/us-greek;
} }
</programlisting> </programlisting>
<note> <note>
@ -248,9 +247,27 @@ xkb_symbols &quot;us-greek&quot;
</para> </para>
</note> </note>
<para> <para>
The layout should now be installed and ready to use: try it by Applying this customization requires rebuilding several packages,
running <literal>setxkbmap us-greek</literal> and type and a broken XKB file can lead to the X session crashing at login.
<literal>&lt;alt&gt;+a</literal>. To change the default the usual Therefore, you're strongly advised to <emphasis role="strong">test
your layout before applying it</emphasis>:
<screen>
<prompt>$ </prompt>nix-shell -p xorg.xkbcomp
<prompt>$ </prompt>setxkbmap -I/yourpath us-greek -print | xkbcomp -I/yourpath - $DISPLAY
</screen>
</para>
<para>
You can inspect the predefined XKB files for examples:
<screen>
<prompt>$ </prompt>echo "$(nix-build --no-out-link '&lt;nixpkgs&gt;' -A xorg.xkeyboardconfig)/etc/X11/xkb/"
</screen>
</para>
<para>
Once the configuration is applied, and you did a logout/login
cycle, the layout should be ready to use. You can try it by e.g.
running <literal>setxkbmap us-greek</literal> and then type
<literal>&lt;alt&gt;+a</literal> (it may not get applied in your
terminal straight away). To change the default, the usual
<option> <option>
<link linkend="opt-services.xserver.layout"> <link linkend="opt-services.xserver.layout">
services.xserver.layout services.xserver.layout

View File

@ -1,33 +1,56 @@
{ lib, stdenv, fetchurl, pkg-config, autoconf, automake, gettext { lib
, fluxbox, bc, gtkmm2, glibmm, libglademm, libsigcxx }: , stdenv
, fetchurl
, autoconf
, automake
, bc
, fluxbox
, gettext
, glibmm
, gtkmm2
, libglademm
, libsigcxx
, pkg-config
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "fme"; pname = "fme";
version = "1.1.3"; version = "1.1.3";
src = fetchurl { src = fetchurl {
url = "https://github.com/rdehouss/fme/archive/v${version}.tar.gz"; url = "https://github.com/rdehouss/fme/archive/v${version}.tar.gz";
sha256 = "d1c81a6a38c0faad02943ad65d6d0314bd205c6de841669a2efe43e4c503e63d"; hash = "sha256-0cgaajjA+q0ClDrWXW0DFL0gXG3oQWaaLv5D5MUD5j0=";
}; };
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [
buildInputs = [ autoconf automake gettext fluxbox bc gtkmm2 glibmm libglademm libsigcxx ]; autoconf
automake
gettext
pkg-config
];
buildInputs = [
bc
fluxbox
glibmm
gtkmm2
libglademm
libsigcxx
];
preConfigure = '' preConfigure = ''
./autogen.sh ./autogen.sh
''; '';
meta = with lib; { meta = with lib; {
homepage = "https://github.com/rdehouss/fme/";
description = "Editor for Fluxbox menus"; description = "Editor for Fluxbox menus";
longDescription = '' longDescription = ''
Fluxbox Menu Editor is a menu editor for the Window Manager Fluxbox written in C++ Fluxbox Menu Editor is a menu editor for the Window Manager Fluxbox
with the libraries Gtkmm, Glibmm, libglademm and gettext for internationalization. written in C++ with the libraries Gtkmm, Glibmm, libglademm and gettext
Its user-friendly interface will help you to edit, delete, move (Drag and Drop) for internationalization. Its user-friendly interface will help you to
a row, a submenu, etc very easily. edit, delete, move (Drag and Drop) a row, a submenu, etc very easily.
''; '';
homepage = "https://github.com/rdehouss/fme/"; license = licenses.gpl2Plus;
license = licenses.gpl2;
maintainers = [ maintainers.AndersonTorres ]; maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.linux; platforms = platforms.linux;
}; };

View File

@ -10,7 +10,7 @@ assert withQt -> qt5 != null;
with lib; with lib;
let let
version = "3.4.4"; version = "3.4.5";
variant = if withQt then "qt" else "cli"; variant = if withQt then "qt" else "cli";
in stdenv.mkDerivation { in stdenv.mkDerivation {
@ -20,7 +20,7 @@ in stdenv.mkDerivation {
src = fetchurl { src = fetchurl {
url = "https://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.xz"; url = "https://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.xz";
sha256 = "0aad3m8nh4i75dgjs68217135bzqmhmlgjklmpjh1ihmjwgd373j"; sha256 = "sha256-3hqv0QCh4SB8hQ0YDpfdkauNoPXra+7FRfclzbFF0zM=";
}; };
cmakeFlags = [ cmakeFlags = [

View File

@ -5,6 +5,7 @@
, makeWrapper , makeWrapper
, readline , readline
, gmp , gmp
, zlib
# one of # one of
# - "minimal" (~400M): # - "minimal" (~400M):
# Install the bare minimum of packages required by gap to start. # Install the bare minimum of packages required by gap to start.
@ -61,11 +62,11 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "gap"; pname = "gap";
# https://www.gap-system.org/Releases/ # https://www.gap-system.org/Releases/
version = "4.10.2"; version = "4.11.0";
src = fetchurl { src = fetchurl {
url = "https://files.gap-system.org/gap-${lib.versions.major version}.${lib.versions.minor version}/tar.bz2/gap-${version}.tar.bz2"; url = "https://files.gap-system.org/gap-${lib.versions.major version}.${lib.versions.minor version}/tar.bz2/gap-${version}.tar.bz2";
sha256 = "0cp6ddk0469zzv1m1vair6gm27ic6c5m77ri8rn0znq3gaps6x94"; sha256 = "sha256-vwcKENwqxgWT/mXfD4c9ctTWdQHobrJipva9SPyGhgI=";
}; };
# remove all non-essential packages (which take up a lot of space) # remove all non-essential packages (which take up a lot of space)
@ -76,6 +77,7 @@ stdenv.mkDerivation rec {
buildInputs = [ buildInputs = [
readline readline
gmp gmp
zlib
]; ];
nativeBuildInputs = [ nativeBuildInputs = [
@ -83,34 +85,22 @@ stdenv.mkDerivation rec {
]; ];
patches = [ patches = [
# https://github.com/gap-system/gap/pull/3294
(fetchpatch {
name = "add-make-install-targets.patch";
url = "https://github.com/gap-system/gap/commit/3361c172e6c5ff3bb3f01ba9d6f1dd4ad42cea80.patch";
sha256 = "1kwp9qnfvmlbpf1c3rs6j5m2jz22rj7a4hb5x1gj9vkpiyn5pdyj";
})
# Fix for locale specific tests causing issues. Already upstream. # Fix for locale specific tests causing issues. Already upstream.
# Backport of https://github.com/gap-system/gap/pull/4022 # Backport of https://github.com/gap-system/gap/pull/4022
# WHEN REMOVING: also remove the`rm tst/testinstall/strings.tst` line in
# `postPatch` below. That line is necessary since the patch is not intended
# for gap 4.10.
(fetchpatch { (fetchpatch {
name = "remove-locale-specific-tests.patch"; name = "remove-locale-specific-tests.patch";
url = "https://github.com/gap-system/gap/commit/c18b0c4215b5212a2cc4f305e2d5b94ba716bee8.patch"; url = "https://github.com/gap-system/gap/commit/c18b0c4215b5212a2cc4f305e2d5b94ba716bee8.patch";
excludes = ["tst/testinstall/stringobj.tst"]; sha256 = "sha256-De+T9Y7ewRT6plJrj2VR8axRvD/JCTYKOBWB7Bw0oq0=";
sha256 = "1mz5b4mbw2jdd1ypp5s0dy6pp0jsvwsxr2dm4kbkls20r1r192sc";
}) })
# fixes aarch64 gc crashes: https://github.com/gap-system/gap/pull/3965 # fixes aarch64 gc crashes: https://github.com/gap-system/gap/pull/3965
./mark-genstackfuncbags-as-noinline.patch (fetchpatch {
name = "mark-genstackfuncbags-as-noinline.patch";
url = "https://github.com/gap-system/gap/commit/f0a8f49ff8dad0a5fa77253d45457c6f40f96778.patch";
sha256 = "sha256-GU9tOP1stX2vn8m8kXOBupEpxIYArA76ibKL8eLn0MY=";
})
]; ];
postPatch = ''
# File not covered by the remove-locale-specific-tests.patch patch above.
rm tst/testinstall/strings.tst
'';
# "teststandard" is a superset of testinstall. It takes ~1h instead of ~1min. # "teststandard" is a superset of testinstall. It takes ~1h instead of ~1min.
# tests are run twice, once with all packages loaded and once without # tests are run twice, once with all packages loaded and once without
# checkTarget = "teststandard"; # checkTarget = "teststandard";
@ -155,7 +145,6 @@ stdenv.mkDerivation rec {
mkdir -p "$out/bin" "$out/share/gap/" mkdir -p "$out/bin" "$out/share/gap/"
mkdir -p "$out/share/gap"
echo "Copying files to target directory" echo "Copying files to target directory"
cp -ar . "$out/share/gap/build-dir" cp -ar . "$out/share/gap/build-dir"

View File

@ -1,6 +1,6 @@
{ lib, stdenv { lib, stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchurl , fetchpatch
, autoreconfHook , autoreconfHook
, pkg-config , pkg-config
, flint , flint
@ -11,16 +11,36 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.7.26"; version = "0.7.27";
pname = "pynac"; pname = "pynac";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pynac"; owner = "pynac";
repo = "pynac"; repo = "pynac";
rev = "pynac-${version}"; rev = "pynac-${version}";
sha256 = "09d2p74x1arkydlxy6pw4p4byi7r8q7f29w373h4d8a215kadc6d"; sha256 = "sha256-1HHCIeaNE2UsJNX92UlDGLJS8I4nC/8FnwX7Y4F9HpU=";
}; };
patches = [
(fetchpatch {
name = "handle_factor.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/pynac/patches/handle_factor.patch?h=9.3.rc3";
sha256 = "sha256-U1lb5qwBqZZgklfDMhBX4K5u8bz5x42O4w7hyNy2YVw=";
})
(fetchpatch {
name = "power_inf_loop.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/pynac/patches/power_inf_loop.patch?h=9.3.rc3";
sha256 = "sha256-VYeaJl8u2wl7FQ/6xnpZv1KpdNYEmJoPhuMrBADyTRs=";
})
(fetchpatch {
name = "too_much_sub.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/pynac/patches/too_much_sub.patch?h=9.3.rc3";
sha256 = "sha256-lw7xSQ/l+rzPu+ghWF4omYF0mKksGGPuuHJTktvbdis=";
})
];
buildInputs = [ buildInputs = [
flint flint
gmp gmp
@ -34,14 +54,6 @@ stdenv.mkDerivation rec {
pkg-config pkg-config
]; ];
patches = [
(fetchurl {
name = "py_ssize_t_clean.patch";
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/pynac/patches/py_ssize_t_clean.patch?h=9.2";
sha256 = "0l3gbg9hc4v671zf4w376krnk3wh8hj3649610nlvzzxckcryzab";
})
];
meta = with lib; { meta = with lib; {
description = "Python is Not a CAS -- modified version of Ginac"; description = "Python is Not a CAS -- modified version of Ginac";
longDescription = '' longDescription = ''

View File

@ -11,14 +11,6 @@ let
python3 = pkgs.python3.override { python3 = pkgs.python3.override {
packageOverrides = self: super: { packageOverrides = self: super: {
cypari2 = super.cypari2.overridePythonAttrs (oldAttrs: rec {
version = "2.1.1";
src = oldAttrs.src.override {
inherit version;
sha256 = "df1ef62e771ec36e5a456f5fc8b51bc6745b70f0efdd0c7a30c3f0b5f1fb93db";
};
});
# `sagelib`, i.e. all of sage except some wrappers and runtime dependencies # `sagelib`, i.e. all of sage except some wrappers and runtime dependencies
sagelib = self.callPackage ./sagelib.nix { sagelib = self.callPackage ./sagelib.nix {
inherit flint arb; inherit flint arb;
@ -27,6 +19,10 @@ let
linbox = pkgs.linbox.override { withSage = true; }; linbox = pkgs.linbox.override { withSage = true; };
pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config
}; };
sage_docbuild = self.callPackage ./sage_docbuild.nix {
inherit sage-src;
};
}; };
}; };
@ -46,14 +42,16 @@ let
logo64 = "${sage-src}/doc/common/themes/sage/static/sageicon.png"; logo64 = "${sage-src}/doc/common/themes/sage/static/sageicon.png";
}; };
three = callPackage ./threejs-sage.nix { };
# A bash script setting various environment variables to tell sage where # A bash script setting various environment variables to tell sage where
# the files its looking fore are located. Also see `sage-env`. # the files its looking fore are located. Also see `sage-env`.
env-locations = callPackage ./env-locations.nix { env-locations = callPackage ./env-locations.nix {
inherit pari_data; inherit pari_data;
inherit singular maxima-ecl; inherit singular maxima-ecl;
inherit three;
ecl = maxima-ecl.ecl; ecl = maxima-ecl.ecl;
cysignals = python3.pkgs.cysignals; cysignals = python3.pkgs.cysignals;
three = nodePackages.three;
mathjax = nodePackages.mathjax; mathjax = nodePackages.mathjax;
}; };
@ -61,6 +59,7 @@ let
# the env-locations file. # the env-locations file.
sage-env = callPackage ./sage-env.nix { sage-env = callPackage ./sage-env.nix {
sagelib = python3.pkgs.sagelib; sagelib = python3.pkgs.sagelib;
sage_docbuild = python3.pkgs.sage_docbuild;
inherit env-locations; inherit env-locations;
inherit python3 singular palp flint pynac pythonEnv maxima-ecl; inherit python3 singular palp flint pynac pythonEnv maxima-ecl;
ecl = maxima-ecl.ecl; ecl = maxima-ecl.ecl;
@ -78,8 +77,8 @@ let
inherit python3 pythonEnv; inherit python3 pythonEnv;
inherit sage-env; inherit sage-env;
inherit pynac singular maxima-ecl; inherit pynac singular maxima-ecl;
inherit three;
pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config pkg-config = pkgs.pkg-config; # not to confuse with pythonPackages.pkg-config
three = nodePackages.three;
}; };
# Doesn't actually build anything, just runs sages testsuite. This is a # Doesn't actually build anything, just runs sages testsuite. This is a
@ -94,6 +93,7 @@ let
pythonRuntimeDeps = with python3.pkgs; [ pythonRuntimeDeps = with python3.pkgs; [
sagelib sagelib
sage_docbuild
cvxopt cvxopt
networkx networkx
service-identity service-identity

View File

@ -1,13 +1,13 @@
diff --git a/src/sage/env.py b/src/sage/env.py diff --git a/src/sage/env.py b/src/sage/env.py
index 1ddfc7cfb9..45033d6328 100644 index 2908f5d04f..81dfd75c0d 100644
--- a/src/sage/env.py --- a/src/sage/env.py
+++ b/src/sage/env.py +++ b/src/sage/env.py
@@ -203,97 +203,13 @@ var('ARB_LIBRARY', 'arb') @@ -218,93 +218,12 @@ NTL_LIBDIR = var("NTL_LIBDIR")
var('SAGE_BANNER', '') SAGE_BANNER = var("SAGE_BANNER", "")
var('SAGE_IMPORTALL', 'yes') SAGE_IMPORTALL = var("SAGE_IMPORTALL", "yes")
- -
-def _get_shared_lib_filename(libname, *additional_libnames): -def _get_shared_lib_path(*libnames: str) -> Optional[str]:
- """ - """
- Return the full path to a shared library file installed in - Return the full path to a shared library file installed in
- ``$SAGE_LOCAL/lib`` or the directories associated with the - ``$SAGE_LOCAL/lib`` or the directories associated with the
@ -25,80 +25,76 @@ index 1ddfc7cfb9..45033d6328 100644
- For distributions like Debian that use a multiarch layout, we also try the - For distributions like Debian that use a multiarch layout, we also try the
- multiarch lib paths (i.e. ``/usr/lib/<arch>/``). - multiarch lib paths (i.e. ``/usr/lib/<arch>/``).
- -
- This returns ``None`` if the file does not exist. - This returns ``None`` if no matching library file could be found.
- -
- EXAMPLES:: - EXAMPLES::
- -
- sage: import sys - sage: import sys
- sage: from fnmatch import fnmatch - sage: from fnmatch import fnmatch
- sage: from sage.env import _get_shared_lib_filename - sage: from sage.env import _get_shared_lib_path
- sage: lib_filename = _get_shared_lib_filename("Singular", - sage: lib_filename = _get_shared_lib_path("Singular", "singular-Singular")
- ....: "singular-Singular")
- sage: if sys.platform == 'cygwin': - sage: if sys.platform == 'cygwin':
- ....: pattern = "*/cygSingular-*.dll" - ....: pattern = "*/cygSingular-*.dll"
- ....: elif sys.platform == 'darwin': - ....: elif sys.platform == 'darwin':
- ....: pattern = "*/libSingular.dylib" - ....: pattern = "*/libSingular-*.dylib"
- ....: else: - ....: else:
- ....: pattern = "*/lib*Singular.so" - ....: pattern = "*/lib*Singular-*.so"
- sage: fnmatch(lib_filename, pattern) - sage: fnmatch(str(lib_filename), pattern)
- True - True
- sage: _get_shared_lib_filename("an_absurd_lib") is None - sage: _get_shared_lib_path("an_absurd_lib") is None
- True - True
- """ - """
- -
- for libname in (libname,) + additional_libnames: - for libname in libnames:
- search_directories: List[Path] = []
- patterns: List[str] = []
- if sys.platform == 'cygwin': - if sys.platform == 'cygwin':
- # Later down we take the last matching DLL found, so search - # Later down we take the first matching DLL found, so search
- # SAGE_LOCAL second so that it takes precedence - # SAGE_LOCAL first so that it takes precedence
- bindirs = [ - search_directories = [
- sysconfig.get_config_var('BINDIR'), - Path(SAGE_LOCAL) / 'bin',
- os.path.join(SAGE_LOCAL, 'bin') - Path(sysconfig.get_config_var('BINDIR')),
- ] - ]
- pats = ['cyg{}.dll'.format(libname), 'cyg{}-*.dll'.format(libname)] - # Note: The following is not very robust, since if there are multible
- filenames = []
- for bindir in bindirs:
- for pat in pats:
- filenames += glob.glob(os.path.join(bindir, pat))
-
- # Note: This is not very robust, since if there are multi DLL
- # versions for the same library this just selects one more or less - # versions for the same library this just selects one more or less
- # at arbitrary. However, practically speaking, on Cygwin, there - # at arbitrary. However, practically speaking, on Cygwin, there
- # will only ever be one version - # will only ever be one version
- if filenames: - patterns = [f'cyg{libname}.dll', f'cyg{libname}-*.dll']
- return filenames[-1]
- else: - else:
- if sys.platform == 'darwin': - if sys.platform == 'darwin':
- ext = 'dylib' - ext = 'dylib'
- else: - else:
- ext = 'so' - ext = 'so'
- -
- libdirs = [ - search_directories = [Path(SAGE_LOCAL) / 'lib']
- os.path.join(SAGE_LOCAL, 'lib'), - libdir = sysconfig.get_config_var('LIBDIR')
- sysconfig.get_config_var('LIBDIR') - if libdir is not None:
- ] - libdir = Path(libdir)
- multilib = sysconfig.get_config_var('MULTILIB') - search_directories.append(libdir)
- if multilib:
- libdirs.insert(1, os.path.join(libdirs[0], multilib))
- -
- for libdir in libdirs: - multiarchlib = sysconfig.get_config_var('MULTIARCH')
- basename = 'lib{}.{}'.format(libname, ext) - if multiarchlib is not None:
- filename = os.path.join(libdir, basename) - search_directories.append(libdir / multiarchlib),
- if os.path.exists(filename): -
- return filename - patterns = [f'lib{libname}.{ext}']
-
- for directory in search_directories:
- for pattern in patterns:
- path = next(directory.glob(pattern), None)
- if path is not None:
- return str(path.resolve())
- -
- # Just return None if no files were found - # Just return None if no files were found
- return None - return None
-
- -
# locate singular shared object # locate singular shared object
# On Debian it's libsingular-Singular so try that as well # On Debian it's libsingular-Singular so try that as well
-SINGULAR_SO = _get_shared_lib_filename('Singular', 'singular-Singular') -SINGULAR_SO = var("SINGULAR_SO", _get_shared_lib_path("Singular", "singular-Singular"))
+SINGULAR_SO = '/default' +SINGULAR_SO = var("SINGULAR_SO", '/default')
var('SINGULAR_SO', SINGULAR_SO)
# locate libgap shared object # locate libgap shared object
-GAP_SO= _get_shared_lib_filename('gap','') -GAP_SO = var("GAP_SO", _get_shared_lib_path("gap", ""))
+GAP_SO = '/default' +GAP_SO = var("GAP_SO", '/default')
var('GAP_SO', GAP_SO)
# post process # post process
if ' ' in DOT_SAGE:

View File

@ -1,16 +0,0 @@
diff --git a/src/sage/repl/rich_output/display_manager.py b/src/sage/repl/rich_output/display_manager.py
index fb21f7a9c9..f39470777d 100644
--- a/src/sage/repl/rich_output/display_manager.py
+++ b/src/sage/repl/rich_output/display_manager.py
@@ -749,9 +749,9 @@ class DisplayManager(SageObject):
import sage.env
import re
import os
- with open(os.path.join(sage.env.THREEJS_DIR, 'build', 'three.min.js')) as f:
+ with open(os.path.join(sage.env.THREEJS_DIR, 'build', 'three.js')) as f:
text = f.read().replace('\n','')
- version = re.search(r'REVISION="(\d+)"', text).group(1)
+ version = re.search(r"REVISION = '(\d+)'", text).group(1)
return """
<script src="https://cdn.jsdelivr.net/gh/mrdoob/three.js@r{0}/build/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/mrdoob/three.js@r{0}/examples/js/controls/OrbitControls.js"></script>

View File

@ -1,131 +0,0 @@
diff --git a/src/sage/libs/eclib/interface.py b/src/sage/libs/eclib/interface.py
index e898456720..6b98c12328 100644
--- a/src/sage/libs/eclib/interface.py
+++ b/src/sage/libs/eclib/interface.py
@@ -758,78 +758,78 @@ class mwrank_MordellWeil(SageObject):
sage: EQ = mwrank_MordellWeil(E, verbose=True)
sage: EQ.search(1)
- P1 = [0:1:0] is torsion point, order 1
- P1 = [-3:0:1] is generator number 1
- saturating up to 20...Checking 2-saturation
+ P1 = [0:1:0] is torsion point, order 1
+ P1 = [-3:0:1] is generator number 1
+ saturating up to 20...Checking 2-saturation...
Points have successfully been 2-saturated (max q used = 7)
- Checking 3-saturation
+ Checking 3-saturation...
Points have successfully been 3-saturated (max q used = 7)
- Checking 5-saturation
+ Checking 5-saturation...
Points have successfully been 5-saturated (max q used = 23)
- Checking 7-saturation
+ Checking 7-saturation...
Points have successfully been 7-saturated (max q used = 41)
- Checking 11-saturation
+ Checking 11-saturation...
Points have successfully been 11-saturated (max q used = 17)
- Checking 13-saturation
+ Checking 13-saturation...
Points have successfully been 13-saturated (max q used = 43)
- Checking 17-saturation
+ Checking 17-saturation...
Points have successfully been 17-saturated (max q used = 31)
- Checking 19-saturation
+ Checking 19-saturation...
Points have successfully been 19-saturated (max q used = 37)
done
- P2 = [-2:3:1] is generator number 2
- saturating up to 20...Checking 2-saturation
+ P2 = [-2:3:1] is generator number 2
+ saturating up to 20...Checking 2-saturation...
possible kernel vector = [1,1]
This point may be in 2E(Q): [14:-52:1]
...and it is!
Replacing old generator #1 with new generator [1:-1:1]
Points have successfully been 2-saturated (max q used = 7)
Index gain = 2^1
- Checking 3-saturation
+ Checking 3-saturation...
Points have successfully been 3-saturated (max q used = 13)
- Checking 5-saturation
+ Checking 5-saturation...
Points have successfully been 5-saturated (max q used = 67)
- Checking 7-saturation
+ Checking 7-saturation...
Points have successfully been 7-saturated (max q used = 53)
- Checking 11-saturation
+ Checking 11-saturation...
Points have successfully been 11-saturated (max q used = 73)
- Checking 13-saturation
+ Checking 13-saturation...
Points have successfully been 13-saturated (max q used = 103)
- Checking 17-saturation
+ Checking 17-saturation...
Points have successfully been 17-saturated (max q used = 113)
- Checking 19-saturation
+ Checking 19-saturation...
Points have successfully been 19-saturated (max q used = 47)
done (index = 2).
Gained index 2, new generators = [ [1:-1:1] [-2:3:1] ]
- P3 = [-14:25:8] is generator number 3
- saturating up to 20...Checking 2-saturation
+ P3 = [-14:25:8] is generator number 3
+ saturating up to 20...Checking 2-saturation...
Points have successfully been 2-saturated (max q used = 11)
- Checking 3-saturation
+ Checking 3-saturation...
Points have successfully been 3-saturated (max q used = 13)
- Checking 5-saturation
+ Checking 5-saturation...
Points have successfully been 5-saturated (max q used = 71)
- Checking 7-saturation
+ Checking 7-saturation...
Points have successfully been 7-saturated (max q used = 101)
- Checking 11-saturation
+ Checking 11-saturation...
Points have successfully been 11-saturated (max q used = 127)
- Checking 13-saturation
+ Checking 13-saturation...
Points have successfully been 13-saturated (max q used = 151)
- Checking 17-saturation
+ Checking 17-saturation...
Points have successfully been 17-saturated (max q used = 139)
- Checking 19-saturation
+ Checking 19-saturation...
Points have successfully been 19-saturated (max q used = 179)
done (index = 1).
- P4 = [-1:3:1] = -1*P1 + -1*P2 + -1*P3 (mod torsion)
- P4 = [0:2:1] = 2*P1 + 0*P2 + 1*P3 (mod torsion)
- P4 = [2:13:8] = -3*P1 + 1*P2 + -1*P3 (mod torsion)
- P4 = [1:0:1] = -1*P1 + 0*P2 + 0*P3 (mod torsion)
- P4 = [2:0:1] = -1*P1 + 1*P2 + 0*P3 (mod torsion)
- P4 = [18:7:8] = -2*P1 + -1*P2 + -1*P3 (mod torsion)
- P4 = [3:3:1] = 1*P1 + 0*P2 + 1*P3 (mod torsion)
- P4 = [4:6:1] = 0*P1 + -1*P2 + -1*P3 (mod torsion)
- P4 = [36:69:64] = 1*P1 + -2*P2 + 0*P3 (mod torsion)
- P4 = [68:-25:64] = -2*P1 + -1*P2 + -2*P3 (mod torsion)
- P4 = [12:35:27] = 1*P1 + -1*P2 + -1*P3 (mod torsion)
+ P4 = [-1:3:1] = -1*P1 + -1*P2 + -1*P3 (mod torsion)
+ P4 = [0:2:1] = 2*P1 + 0*P2 + 1*P3 (mod torsion)
+ P4 = [2:13:8] = -3*P1 + 1*P2 + -1*P3 (mod torsion)
+ P4 = [1:0:1] = -1*P1 + 0*P2 + 0*P3 (mod torsion)
+ P4 = [2:0:1] = -1*P1 + 1*P2 + 0*P3 (mod torsion)
+ P4 = [18:7:8] = -2*P1 + -1*P2 + -1*P3 (mod torsion)
+ P4 = [3:3:1] = 1*P1 + 0*P2 + 1*P3 (mod torsion)
+ P4 = [4:6:1] = 0*P1 + -1*P2 + -1*P3 (mod torsion)
+ P4 = [36:69:64] = 1*P1 + -2*P2 + 0*P3 (mod torsion)
+ P4 = [68:-25:64] = -2*P1 + -1*P2 + -2*P3 (mod torsion)
+ P4 = [12:35:27] = 1*P1 + -1*P2 + -1*P3 (mod torsion)
sage: EQ
Subgroup of Mordell-Weil group: [[1:-1:1], [-2:3:1], [-14:25:8]]
@@ -1076,7 +1076,7 @@ class mwrank_MordellWeil(SageObject):
sage: EQ.search(1)
P1 = [0:1:0] is torsion point, order 1
P1 = [-3:0:1] is generator number 1
- saturating up to 20...Checking 2-saturation
+ saturating up to 20...Checking 2-saturation...
...
P4 = [12:35:27] = 1*P1 + -1*P2 + -1*P3 (mod torsion)
sage: EQ

View File

@ -1,8 +1,8 @@
diff --git a/src/sage_setup/docbuild/__init__.py b/src/sage_setup/docbuild/__init__.py diff --git a/src/sage_docbuild/__init__.py b/src/sage_docbuild/__init__.py
index 73a078e619..059125c59f 100644 index 79005b903a..fbe6fe2595 100644
--- a/src/sage_setup/docbuild/__init__.py --- a/src/sage_docbuild/__init__.py
+++ b/src/sage_setup/docbuild/__init__.py +++ b/src/sage_docbuild/__init__.py
@@ -86,27 +86,6 @@ def builder_helper(type): @@ -85,27 +85,6 @@ def builder_helper(type):
""" """
Returns a function which builds the documentation for Returns a function which builds the documentation for
output type ``type``. output type ``type``.
@ -11,16 +11,16 @@ index 73a078e619..059125c59f 100644
- -
- Check that :trac:`25161` has been resolved:: - Check that :trac:`25161` has been resolved::
- -
- sage: from sage_setup.docbuild import DocBuilder, setup_parser - sage: from sage_docbuild import DocBuilder, setup_parser
- sage: DocBuilder._options = setup_parser().parse_args([])[0] # builder_helper needs _options to be set - sage: DocBuilder._options = setup_parser().parse_args([])[0] # builder_helper needs _options to be set
- -
- sage: import sage_setup.docbuild.sphinxbuild - sage: import sage_docbuild.sphinxbuild
- sage: def raiseBaseException(): - sage: def raiseBaseException():
- ....: raise BaseException("abort pool operation") - ....: raise BaseException("abort pool operation")
- sage: original_runsphinx, sage_setup.docbuild.sphinxbuild.runsphinx = sage_setup.docbuild.sphinxbuild.runsphinx, raiseBaseException - sage: original_runsphinx, sage_docbuild.sphinxbuild.runsphinx = sage_docbuild.sphinxbuild.runsphinx, raiseBaseException
- -
- sage: from sage_setup.docbuild import builder_helper, build_ref_doc - sage: from sage_docbuild import builder_helper, build_ref_doc
- sage: from sage_setup.docbuild import _build_many as build_many - sage: from sage_docbuild import _build_many as build_many
- sage: helper = builder_helper("html") - sage: helper = builder_helper("html")
- sage: try: - sage: try:
- ....: build_many(build_ref_doc, [("docname", "en", "html", {})]) - ....: build_many(build_ref_doc, [("docname", "en", "html", {})])
@ -30,24 +30,24 @@ index 73a078e619..059125c59f 100644
""" """
def f(self, *args, **kwds): def f(self, *args, **kwds):
output_dir = self._output_dir(type) output_dir = self._output_dir(type)
@@ -128,10 +107,9 @@ def builder_helper(type): @@ -127,10 +106,9 @@ def builder_helper(type):
logger.debug(build_command) logger.debug(build_command)
# Run Sphinx with Sage's special logger # Run Sphinx with Sage's special logger
- sys.argv = ["sphinx-build"] + build_command.split() - sys.argv = ["sphinx-build"] + build_command.split()
- from .sphinxbuild import runsphinx - from .sphinxbuild import runsphinx
+ args = "python3 -um sage_setup.docbuild.sphinxbuild -N".split() + build_command.split() + args = "python3 -um sage_docbuild.sphinxbuild -N".split() + build_command.split()
try: try:
- runsphinx() - runsphinx()
+ subprocess.check_call(args) + subprocess.check_call(args)
except Exception: except Exception:
if ABORT_ON_ERROR: if ABORT_ON_ERROR:
raise raise
diff --git a/src/sage_setup/docbuild/sphinxbuild.py b/src/sage_setup/docbuild/sphinxbuild.py diff --git a/src/sage_docbuild/sphinxbuild.py b/src/sage_docbuild/sphinxbuild.py
index fe7eba43b2..463790965c 100644 index f58f6c61d7..ef51a55411 100644
--- a/src/sage_setup/docbuild/sphinxbuild.py --- a/src/sage_docbuild/sphinxbuild.py
+++ b/src/sage_setup/docbuild/sphinxbuild.py +++ b/src/sage_docbuild/sphinxbuild.py
@@ -321,3 +321,8 @@ def runsphinx(): @@ -326,3 +326,8 @@ def runsphinx():
sys.stderr = saved_stderr sys.stderr = saved_stderr
sys.stdout.flush() sys.stdout.flush()
sys.stderr.flush() sys.stderr.flush()

View File

@ -1,25 +0,0 @@
diff --git a/src/sage/interfaces/sympy.py b/src/sage/interfaces/sympy.py
index cc35a42a9f..6e577d5d8d 100644
--- a/src/sage/interfaces/sympy.py
+++ b/src/sage/interfaces/sympy.py
@@ -397,7 +397,7 @@ def _sympysage_rf(self):
sage: from sympy import Symbol, rf
sage: _ = var('x, y')
sage: rfxy = rf(Symbol('x'), Symbol('y'))
- sage: assert rising_factorial(x,y)._sympy_() == rfxy.rewrite('gamma')
+ sage: assert rising_factorial(x,y)._sympy_() == rfxy.rewrite('gamma', piecewise=False)
sage: assert rising_factorial(x,y) == rfxy._sage_()
"""
from sage.arith.all import rising_factorial
diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx
index 7c18ec1efa..c2619ac42d 100644
--- a/src/sage/symbolic/expression.pyx
+++ b/src/sage/symbolic/expression.pyx
@@ -955,6 +955,6 @@ cdef class Expression(CommutativeRingElement):
sage: unicode_art(13 - I)
13 -
sage: unicode_art(1.3 - I)
- 1.3 - 1.0⋅ⅈ
+ 1.3 -
sage: unicode_art(cos(I))
cosh(1)

View File

@ -2,6 +2,7 @@
, lib , lib
, writeTextFile , writeTextFile
, sagelib , sagelib
, sage_docbuild
, env-locations , env-locations
, gfortran , gfortran
, bash , bash
@ -191,6 +192,7 @@ writeTextFile rec {
# for find_library # for find_library
export DYLD_LIBRARY_PATH="${lib.makeLibraryPath [stdenv.cc.libc singular]}''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH" export DYLD_LIBRARY_PATH="${lib.makeLibraryPath [stdenv.cc.libc singular]}''${DYLD_LIBRARY_PATH:+:}$DYLD_LIBRARY_PATH"
''; '';
} // { } // { # equivalent of `passthru`, which `writeTextFile` doesn't support
lib = sagelib; # equivalent of `passthru`, which `writeTextFile` doesn't support lib = sagelib;
docbuild = sage_docbuild;
} }

View File

@ -24,14 +24,14 @@ let
); );
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "9.2"; version = "9.3.rc4";
pname = "sage-src"; pname = "sage-src";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "sagemath"; owner = "sagemath";
repo = "sage"; repo = "sage";
rev = version; rev = version;
sha256 = "103j8d5x6szl9fxaz0dvdi4y47q1af9h9y5hmjh2xayi62qmp5ql"; sha256 = "sha256-LDY07By2j6JagkgT9zeDJ93+m2/oXXEnDRTDzmR8ftk=";
}; };
# Patches needed because of particularities of nix or the way this is packaged. # Patches needed because of particularities of nix or the way this is packaged.
@ -53,14 +53,6 @@ stdenv.mkDerivation rec {
# Parallelize docubuild using subprocesses, fixing an isolation issue. See # Parallelize docubuild using subprocesses, fixing an isolation issue. See
# https://groups.google.com/forum/#!topic/sage-packaging/YGOm8tkADrE # https://groups.google.com/forum/#!topic/sage-packaging/YGOm8tkADrE
./patches/sphinx-docbuild-subprocesses.patch ./patches/sphinx-docbuild-subprocesses.patch
# Register sorted dict pprinter earlier (https://trac.sagemath.org/ticket/31053)
(fetchSageDiff {
base = "9.3.beta4";
name = "register-pretty-printer-earlier.patch";
rev = "d658230ce06ca19f4a3b3a4576297ee82f2d2151";
sha256 = "sha256-9mPUV7K5PoLDH2vVaYaOfvDLDpmxU0Aj7m/eaXYotDs=";
})
]; ];
# Since sage unfortunately does not release bugfix releases, packagers must # Since sage unfortunately does not release bugfix releases, packagers must
@ -70,31 +62,6 @@ stdenv.mkDerivation rec {
# To help debug the transient error in # To help debug the transient error in
# https://trac.sagemath.org/ticket/23087 when it next occurs. # https://trac.sagemath.org/ticket/23087 when it next occurs.
./patches/configurationpy-error-verbose.patch ./patches/configurationpy-error-verbose.patch
# fix intermittent errors in Sage 9.2's psage.py (this patch is
# already included in Sage 9.3): https://trac.sagemath.org/ticket/30730
(fetchSageDiff {
base = "9.2.rc2";
name = "fix-psage-is-locked.patch";
rev = "75df605f216ddc7b6ca719be942d666b241520e9";
sha256 = "0g9pl1wbb3sgs26d3bvv70cpa77sfskylv4kd255y1794f1fgk4q";
})
# fix intermittent errors in sagespawn.pyx: https://trac.sagemath.org/ticket/31052
(fetchSageDiff {
base = "9.2";
name = "sagespawn-implicit-casting.patch";
rev = "2959ac792ebd6107fe87c9af1541083de5ba02d6";
sha256 = "sha256-bWIpEGir9Kawak5CJegBMNcHm/CqhWmdru+emeSsvO0=";
})
# fix intermittent errors in doctest/test.py: https://trac.sagemath.org/ticket/26912
(fetchSageDiff {
base = "9.3.beta8";
name = "set-cysignals-crash-ndebug.patch";
rev = "ca5257a5d0f32efc9f8f07e126020856270b1a18";
sha256 = "sha256-KViw63xE3O0eUiOYzoxNrr4NL+csql9GPJLDJCf/EZs=";
})
]; ];
# Patches needed because of package updates. We could just pin the versions of # Patches needed because of package updates. We could just pin the versions of
@ -111,120 +78,29 @@ stdenv.mkDerivation rec {
# ignore a deprecation warning for usage of `cmp` in the attrs library in the doctests # ignore a deprecation warning for usage of `cmp` in the attrs library in the doctests
./patches/ignore-cmp-deprecation.patch ./patches/ignore-cmp-deprecation.patch
# adapt sage's Image class to pillow 8.0.1 (https://trac.sagemath.org/ticket/30971)
(fetchSageDiff {
base = "9.3.beta2";
name = "pillow-8.0.1-update.patch";
rev = "f05f2d0aac9c4b5abe68105cee2cc7f2c8461847";
sha256 = "sha256-uY2UlgSd5hhOUUukB4Xc3Gjy0/e7p/qyq9jdvz10IOs=";
})
# don't use deprecated numpy type aliases (https://trac.sagemath.org/ticket/31364)
(fetchSageDiff {
base = "9.3.beta7";
name = "dont-use-deprecated-numpy-type-aliases.patch";
rev = "dfdef60515d4a4269e82d91280f76a7fdf10bf97";
sha256 = "sha256-77/3LkT5J7DQN8IPlGJKB6ZcJPaF7xwje06JNns+0AE=";
})
# fix test output with sympy 1.7 (https://trac.sagemath.org/ticket/30985)
./patches/sympy-1.7-update.patch
# workaround until we use sage's fork of threejs, which contains a "version" file
./patches/dont-grep-threejs-version-from-minified-js.patch
# updated eclib output has punctuation changes and tidier whitespace
./patches/eclib-20210223-test-formatting.patch
# upgrade arb to 2.18.1 (https://trac.sagemath.org/ticket/28623)
(fetchSageDiff {
base = "9.3.beta3";
name = "arb-2.18.1-update.patch";
rev = "0c9c4ed35c2eaf34ae0d19387c07b7f460e4abce";
sha256 = "sha256-CjOJIsyyVCziAfvE6pWSihPO35IZMcY2/taXAsqhPLY=";
})
# giac 1.6.0-47 update (https://trac.sagemath.org/ticket/30537)
(fetchSageDiff {
base = "9.3.beta7";
name = "giac-1.6.0-47-update.patch";
rev = "f05720bf63dfaf33a4e3b6d3ed2c2c0ec46b5d31";
sha256 = "sha256-gDUq+84eXd5GxLBWUSI61GMJpBF2KX4LBVOt3mS1NF8=";
})
# Make gcd/lcm interact better with pari and gmpy2 (https://trac.sagemath.org/ticket/30849)
# needed for pari 2.13.1 update, which we will do in the future
(fetchSageDiff {
base = "9.3.beta0";
name = "make-gcd-lcm-interact-better-with-pari-and-gmpy2.patch";
rev = "75c1516f0abb9e6f8c335e38e4031f6ef674ed30";
sha256 = "sha256-RukkieIZcXNrju904H2oyGKdtpdE+9vNzvyjN2IBNg0=";
})
# cypari 2.1.2 update (https://trac.sagemath.org/ticket/31029)
(fetchSageDiff {
base = "9.3.beta3";
name = "cypari-2.1.2-update.patch";
rev = "b9aadfd08e81d74ca7c229bb80eb853b592887d0";
sha256 = "sha256-eKaMy7kpu+YKdL8bPStgocxBCTfc2Z/10RrGy2LENFw=";
})
]; ];
patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches; patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;
postPatch = '' postPatch = ''
# make sure shebangs etc are fixed, but sage-python23 still works
find . -type f -exec sed \
-e 's/sage-python23/python3/g' \
-i {} \;
echo '#!${runtimeShell}
python3 "$@"' > build/bin/sage-python23
# Make sure sage can at least be imported without setting any environment # Make sure sage can at least be imported without setting any environment
# variables. It won't be close to feature complete though. # variables. It won't be close to feature complete though.
sed -i \ sed -i \
"s|var('SAGE_ROOT'.*|var('SAGE_ROOT', '$out')|" \ "s|var(\"SAGE_ROOT\".*|var(\"SAGE_ROOT\", \"$out\")|" \
src/sage/env.py src/sage/env.py
# Do not use sage-env-config (generated by ./configure). # src/doc/en/reference/spkg/conf.py expects index.rst in its directory,
# Instead variables are set manually. # a list of external packages in the sage distribution (build/pkgs)
echo '# do nothing' > src/bin/sage-env-config # generated by the bootstrap script (which we don't run). this is not
''; # relevant for other distributions, so remove it.
rm src/doc/en/reference/spkg/conf.py
sed -i "/spkg/d" src/doc/en/reference/index.rst
# Test src/doc/en/reference/spkg/conf.py will fail if # the bootstrap script also generates installation instructions for
# src/doc/en/reference/spkg/index.rst is not generated. It is # arch, debian, fedora, cygwin and homebrew using data from build/pkgs.
# generated by src/doc/bootstrap, so I've copied the relevant part # we don't run the bootstrap script, so disable including the generated
# here. An alternative would be to create an empty # files. docbuilding fails otherwise.
# src/doc/en/reference/spkg/index.rst file. sed -i "/literalinclude/d" src/doc/en/installation/source.rst
configurePhase = ''
OUTPUT_DIR="src/doc/en/reference/spkg"
mkdir -p "$OUTPUT_DIR"
OUTPUT_INDEX="$OUTPUT_DIR"/index.rst
cat > "$OUTPUT_INDEX" <<EOF
External Packages
=================
.. toctree::
:maxdepth: 1
EOF
for PKG_SCRIPTS in build/pkgs/*; do
if [ -d "$PKG_SCRIPTS" ]; then
PKG_BASE=$(basename "$PKG_SCRIPTS")
if [ -f "$PKG_SCRIPTS"/SPKG.rst ]; then
# Instead of just copying, we may want to call
# a version of sage-spkg-info to format extra information.
cp "$PKG_SCRIPTS"/SPKG.rst "$OUTPUT_DIR"/$PKG_BASE.rst
echo >> "$OUTPUT_INDEX" " $PKG_BASE"
fi
fi
done
cat >> "$OUTPUT_INDEX" <<EOF
.. include:: ../footer.txt
EOF
''; '';
buildPhase = "# do nothing"; buildPhase = "# do nothing";

View File

@ -0,0 +1,20 @@
{ buildPythonPackage
, sage-src
, sphinx
}:
buildPythonPackage rec {
version = src.version;
pname = "sage_docbuild";
src = sage-src;
propagatedBuildInputs = [
sphinx
];
preBuild = ''
cd build/pkgs/sage_docbuild/src
'';
doCheck = false; # we will run tests in sagedoc.nix
}

View File

@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
jmol jmol
cddlib cddlib
] ++ (with python3.pkgs; [ ] ++ (with python3.pkgs; [
sage_docbuild
psutil psutil
future future
sphinx sphinx
@ -44,13 +45,6 @@ stdenv.mkDerivation rec {
chmod -R 755 "$SAGE_DOC_SRC_OVERRIDE" chmod -R 755 "$SAGE_DOC_SRC_OVERRIDE"
''; '';
postPatch = ''
# src/doc/bootstrap generates installation instructions for
# arch, debian, fedora, cygwin and homebrew. as a hack, disable
# including the generated files.
sed -i "/literalinclude/d" $SAGE_DOC_SRC_OVERRIDE/en/installation/source.rst
'';
buildPhase = '' buildPhase = ''
export SAGE_NUM_THREADS="$NIX_BUILD_CORES" export SAGE_NUM_THREADS="$NIX_BUILD_CORES"
export HOME="$TMPDIR/sage_home" export HOME="$TMPDIR/sage_home"
@ -59,13 +53,13 @@ stdenv.mkDerivation rec {
# needed to link them in the sage docs using intersphinx # needed to link them in the sage docs using intersphinx
export PPLPY_DOCS=${python3.pkgs.pplpy.doc}/share/doc/pplpy export PPLPY_DOCS=${python3.pkgs.pplpy.doc}/share/doc/pplpy
# adapted from src/doc/bootstrap # adapted from src/doc/bootstrap (which we don't run)
OUTPUT_DIR="$SAGE_DOC_SRC_OVERRIDE/en/reference/repl" OUTPUT_DIR="$SAGE_DOC_SRC_OVERRIDE/en/reference/repl"
mkdir -p "$OUTPUT_DIR" mkdir -p "$OUTPUT_DIR"
OUTPUT="$OUTPUT_DIR/options.txt" OUTPUT="$OUTPUT_DIR/options.txt"
${sage-with-env}/bin/sage -advanced > "$OUTPUT" ${sage-with-env}/bin/sage -advanced > "$OUTPUT"
${sage-with-env}/bin/sage -python -m sage_setup.docbuild \ ${sage-with-env}/bin/sage --docbuild \
--mathjax \ --mathjax \
--no-pdf-links \ --no-pdf-links \
all html all html

View File

@ -63,7 +63,6 @@ assert (!blas.isILP64) && (!lapack.isILP64);
# `sage-tests` and will not have html docs without `sagedoc`. # `sage-tests` and will not have html docs without `sagedoc`.
buildPythonPackage rec { buildPythonPackage rec {
format = "other";
version = src.version; version = src.version;
pname = "sagelib"; pname = "sagelib";
src = sage-src; src = sage-src;
@ -74,6 +73,7 @@ buildPythonPackage rec {
jupyter_core jupyter_core
pkg-config pkg-config
pip # needed to query installed packages pip # needed to query installed packages
ecl
]; ];
buildInputs = [ buildInputs = [
@ -130,7 +130,7 @@ buildPythonPackage rec {
sqlite sqlite
]; ];
buildPhase = '' preBuild = ''
export SAGE_ROOT="$PWD" export SAGE_ROOT="$PWD"
export SAGE_LOCAL="$SAGE_ROOT" export SAGE_LOCAL="$SAGE_ROOT"
export SAGE_SHARE="$SAGE_LOCAL/share" export SAGE_SHARE="$SAGE_LOCAL/share"
@ -146,15 +146,13 @@ buildPythonPackage rec {
mkdir -p "$SAGE_SHARE/sage/ext/notebook-ipython" mkdir -p "$SAGE_SHARE/sage/ext/notebook-ipython"
mkdir -p "var/lib/sage/installed" mkdir -p "var/lib/sage/installed"
source build/bin/sage-dist-helpers # src/setup.py should not be used, see https://trac.sagemath.org/ticket/31377#comment:124
cd src cd build/pkgs/sagelib/src
${python.interpreter} -u setup.py --no-user-cfg build
''; '';
installPhase = '' postInstall = ''
${python.interpreter} -u setup.py --no-user-cfg install --prefix=$out
rm -r "$out/${python.sitePackages}/sage/cython_debug" rm -r "$out/${python.sitePackages}/sage/cython_debug"
''; '';
doCheck = false; # we will run tests in sage-tests.nix
} }

View File

@ -0,0 +1,18 @@
{ stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
pname = "threejs-sage";
version = "r122";
src = fetchFromGitHub {
owner = "sagemath";
repo = "threejs-sage";
rev = version;
sha256 = "sha256-xPAPt36Fon3hYQq6SOmGkIyUzAII2LMl10nqYG4UPI0=";
};
installPhase = ''
mkdir -p $out/lib/node_modules/three
cp -r build version $out/lib/node_modules/three
'';
}

View File

@ -1,57 +1,96 @@
{ stdenv, fetchurl, gmp, bison, perl, ncurses, readline, coreutils, pkg-config { stdenv, fetchFromGitHub, gmp, bison, perl, ncurses, readline, coreutils, pkg-config
, lib , lib
, fetchpatch , fetchpatch
, autoreconfHook , autoreconfHook
, sharutils
, file , file
, flint , flint
, ntl , ntl
, cddlib , cddlib
, enableFactory ? true , gfan
, lrcalc
, doxygen
, graphviz
# upstream generates docs with texinfo 4. later versions of texinfo
# use letters instead of numbers for post-appendix chapters, and we
# want it to match the upstream format because sage depends on it.
, texinfo4
, texlive
, enableDocs ? true
, enableGfanlib ? true , enableGfanlib ? true
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "singular"; pname = "singular";
version = "4.1.1p2"; version = "4.2.0p2";
src = let # since the tarball does not contain tests or documentation (and
# singular sorts its tarballs in directories by base release (without patch version) # there is no separate tests tarball for 4.2.0), we fetch from
# for example 4.1.1p1 will be in the directory 4-1-1 # GitHub.
baseVersion = builtins.head (lib.splitString "p" version); src = fetchFromGitHub {
urlVersion = builtins.replaceStrings [ "." ] [ "-" ] baseVersion; owner = "Singular";
in repo = "Singular";
fetchurl {
url = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/${urlVersion}/singular-${version}.tar.gz"; # 4.2.0p2 is not tagged, but the tarball matches commit
sha256 = "07x9kri8vl4galik7lr6pscq3c51n8570pyw64i7gbj0m706f7wf"; # 6f68939ddf612d96e3caaaaa8275f77613ac1da8. the commit below has
# two extra fixes.
rev = "3cda50c00a849455efa2502e56596955491a353a";
sha256 = "sha256-OizPhGE6L2LTOrKfeDdDB6BSdvYkDVXvbbYjV14hnHM=";
# if a release is tagged it will be in the format below.
# rev = "Release${lib.replaceStrings ["."] ["-"] version}";
# the repository's .gitattributes file contains the lines "/Tst/
# export-ignore" and "/doc/ export-ignore" so some directories are
# not included in the tarball downloaded by fetchzip. setting
# fetchSubmodules works around this by using fetchgit instead of
# fetchzip.
fetchSubmodules = true;
}; };
patches = [
# add aarch64 support to cpu-check.m4. copied from redhat.
./redhat-aarch64.patch
# vspace causes hangs in modstd and other libraries on aarch64
./disable-vspace-on-aarch64.patch
# the newest version of ax-prog-cc-for-build.m4 seems to trigger
# linker errors. see
# https://github.com/alsa-project/alsa-firmware/issues/3 for a
# related issue.
./use-older-ax-prog-cc-for-build.patch
] ++ lib.optionals enableDocs [
# singular supports building without 4ti2, bertini, normaliz or
# topcom just fine, but the docbuilding does not skip manual pages
# tagged as depending on those binaries (probably a bug in
# doc2tex.pl::HandleLib, since it seems to ignore "-exclude"
# argumens). skip them manually.
./disable-docs-for-optional-unpackaged-deps.patch
];
configureFlags = [ configureFlags = [
"--with-ntl=${ntl}" "--with-ntl=${ntl}"
] ++ lib.optionals enableFactory [ "--disable-pyobject-module"
"--enable-factory" ] ++ lib.optionals enableDocs [
"--enable-doc-build"
] ++ lib.optionals enableGfanlib [ ] ++ lib.optionals enableGfanlib [
"--enable-gfanlib" "--enable-gfanlib"
]; ];
postUnpack = '' prePatch = ''
# don't let the tests depend on `hostname`
substituteInPlace Tst/regress.cmd --replace 'mysystem_catch("hostname")' 'nix_test_runner'
patchShebangs . patchShebangs .
'' + lib.optionalString enableDocs ''
# work around encoding problem
sed -i -e 's/\xb7/@cdot{}/g' doc/decodegb.doc
''; '';
patches = [
# NTL error handler was introduced in the library part, preventing users of
# the library from implementing their own error handling
# https://www.singular.uni-kl.de/forum/viewtopic.php?t=2769
(fetchpatch {
name = "move_error_handler_out_of_libsingular.patch";
# rebased version of https://github.com/Singular/Sources/commit/502cf86d0bb2a96715be6764774b64a69c1ca34c.patch
url = "https://git.sagemath.org/sage.git/plain/build/pkgs/singular/patches/singular-ntl-error-handler.patch?h=50b9ae2fd233c30860e1cbb3e63a26f2cc10560a";
sha256 = "0vgh4m9zn1kjl0br68n04j4nmn5i1igfn28cph0chnwf7dvr9194";
})
];
# For reference (last checked on commit 75f460d): # For reference (last checked on commit 75f460d):
# https://github.com/Singular/Sources/blob/spielwiese/doc/Building-Singular-from-source.md # https://github.com/Singular/Singular/blob/spielwiese/doc/Building-Singular-from-source.md
# https://github.com/Singular/Sources/blob/spielwiese/doc/external-packages-dynamic-modules.md # https://github.com/Singular/Singular/blob/spielwiese/doc/external-packages-dynamic-modules.md
buildInputs = [ buildInputs = [
# necessary # necessary
gmp gmp
@ -60,6 +99,8 @@ stdenv.mkDerivation rec {
readline readline
ntl ntl
flint flint
lrcalc
gfan
] ++ lib.optionals enableGfanlib [ ] ++ lib.optionals enableGfanlib [
cddlib cddlib
]; ];
@ -68,6 +109,12 @@ stdenv.mkDerivation rec {
perl perl
pkg-config pkg-config
autoreconfHook autoreconfHook
sharutils # needed for regress.cmd install checks
] ++ lib.optionals enableDocs [
doxygen
graphviz
texinfo4
texlive.combined.scheme-small
]; ];
preAutoreconf = '' preAutoreconf = ''
@ -85,23 +132,62 @@ stdenv.mkDerivation rec {
# do nothing # do nothing
''; '';
doCheck = true; # very basic checks, does not test any libraries
installPhase = '' installPhase = ''
mkdir -p "$out" mkdir -p "$out"
cp -r Singular/LIB "$out/lib" cp -r Singular/LIB "$out/lib"
make install make install
'' + lib.optionalString enableDocs ''
# Sage uses singular.hlp (which is not in the tarball)
mkdir -p $out/share/info
cp doc/singular.hlp $out/share/info
'' + ''
# Make sure patchelf picks up the right libraries # Make sure patchelf picks up the right libraries
rm -rf libpolys factory resources omalloc Singular rm -rf libpolys factory resources omalloc Singular
''; '';
# singular tests are a bit complicated, see
# https://github.com/Singular/Singular/tree/spielwiese/Tst
# https://www.singular.uni-kl.de/forum/viewtopic.php&t=2773
testsToRun = [
"Old/universal.lst"
"Buch/buch.lst"
"Plural/short.lst"
"Old/factor.tst"
] ++ lib.optionals enableGfanlib [
# tests that require gfanlib
"Short/ok_s.lst"
];
# simple test to make sure singular starts and finds its libraries # simple test to make sure singular starts and finds its libraries
doInstallCheck = true; doInstallCheck = true;
installCheckPhase = '' installCheckPhase = ''
# Very basic sanity check to make sure singular starts and finds its libraries.
# This is redundant with the below tests. It is only kept because the singular test
# runner is a bit complicated. In case we decide to give up those tests in the future,
# this will still be useful. It takes barely any time.
"$out/bin/Singular" -c 'LIB "freegb.lib"; exit;' "$out/bin/Singular" -c 'LIB "freegb.lib"; exit;'
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo >&2 "Error loading the freegb library in Singular." echo >&2 "Error loading the freegb library in Singular."
exit 1 exit 1
fi fi
# Run the test suite
cd Tst
perl ./regress.cmd \
-s "$out/bin/Singular" \
${lib.concatStringsSep " " (map lib.escapeShellArg testsToRun)} \
2>"$TMPDIR/out-err.log"
# unfortunately regress.cmd always returns exit code 0, so check stderr
# https://www.singular.uni-kl.de/forum/viewtopic.php&t=2773
if [[ -s "$TMPDIR/out-err.log" ]]; then
cat "$TMPDIR/out-err.log"
exit 1
fi
echo "Exit status $?"
''; '';
enableParallelBuilding = true; enableParallelBuilding = true;
@ -110,6 +196,7 @@ stdenv.mkDerivation rec {
description = "A CAS for polynomial computations"; description = "A CAS for polynomial computations";
maintainers = teams.sage.members; maintainers = teams.sage.members;
# 32 bit x86 fails with some link error: `undefined reference to `__divmoddi4@GCC_7.0.0'` # 32 bit x86 fails with some link error: `undefined reference to `__divmoddi4@GCC_7.0.0'`
# https://www.singular.uni-kl.de:8002/trac/ticket/837
platforms = subtractLists platforms.i686 platforms.unix; platforms = subtractLists platforms.i686 platforms.unix;
license = licenses.gpl3; # Or GPLv2 at your option - but not GPLv4 license = licenses.gpl3; # Or GPLv2 at your option - but not GPLv4
homepage = "http://www.singular.uni-kl.de"; homepage = "http://www.singular.uni-kl.de";

View File

@ -0,0 +1,112 @@
commit 9e8b044d982e132cf35a106a1cc0cf7e77b27f7c
Author: Mauricio Collares <mauricio@collares.org>
Date: Thu Apr 15 20:33:21 2021 -0300
Disable manual sections using optional packages not yet in Nixpkgs
* normaliz.lib depends on normaliz.
* polymake.lib depends on topcom.
* recover.lib depends on bertini.
* sing4ti2.lib depends on 4ti2.
* tateProdCplxNegGrad.lib uses multigrading.lib, which depends on 4ti2.
diff --git a/doc/singular.doc b/doc/singular.doc
index 64b969d39..e704f95f0 100644
--- a/doc/singular.doc
+++ b/doc/singular.doc
@@ -407,7 +407,6 @@ LIB "all.lib";
* nfmodsyz_lib:: Syzygy modules of submodules of free modules over algebraic number fields
* noether_lib:: Noether normalization of an ideal
* normal_lib:: procedure for normalization
-* normaliz_lib:: integral closure, normalization for monomial ideals, toric ideals
* pointid_lib:: factorized lex GB of the vanishing ideal of a set of points
* primdec_lib:: procedures for primary decomposition
* primdecint_lib:: primary decomposition over the integers
@@ -416,7 +415,6 @@ LIB "all.lib";
* reesclos_lib:: Rees Algebra and integral closure of an ideal
* rstandard_lib:: Janet bases and border bases for ideals
* sagbi_lib:: Subalgebras bases Analogous to Groebner bases for ideals
-* sing4ti2_lib:: interface to program 4ti2
* symodstd_lib:: Groebner bases for symmetric ideals
* toric_lib:: toric ideals
@end menu
@@ -521,10 +519,6 @@ LIB "all.lib";
@node normal_lib
@subsection normal_lib
@c lib normal.lib
-@c ---------------------------------------------------------
-@node normaliz_lib
-@subsection normaliz_lib
-@c lib normaliz.lib tag:normaliz
@c ----------------------------------------------------------
@node pointid_lib
@subsection pointid_lib
@@ -558,10 +552,6 @@ LIB "all.lib";
@subsection sagbi_lib
@c lib sagbi.lib
@c ---------------------------------------------------------
-@node sing4ti2_lib
-@subsection sing4ti2_lib
-@c lib sing4ti2.lib tag:sing4ti2
-@c ----------------------------------------------------------
@node symodstd_lib
@subsection symodstd_lib
@c lib symodstd.lib
@@ -873,7 +863,6 @@ iniD, reslist, sumlist, dividelist, createlist
* solve_lib:: procedures to solve polynomial systems
* triang_lib:: procedures for decomposing zero-dimensional ideals
* ntsolve_lib:: one real solution of polynomial systems (Newton iteration)
-* recover_lib:: Hybrid numerical/symbolical algorithms
* rootisolation_lib:: real root isolation with intervals
* signcond_lib:: computing realizable sign conditions
* zeroset_lib:: procedures for roots and factorization
@@ -904,10 +893,6 @@ iniD, reslist, sumlist, dividelist, createlist
@subsection ntsolve_lib
@c lib ntsolve.lib
@c ---------------------------------------------------------
-@node recover_lib
-@subsection recover_lib
-@c lib recover.lib tag:bertini
-@c ----------------------------------------------------------
@node rootisolation_lib
@subsection rootisolation_lib
@c lib rootisolation.lib
@@ -1108,7 +1093,6 @@ but not for serious computations.
* cimonom_lib:: complete intersection for toric ideals
* gfan_lib:: A gfanlib interface for Singular
* gitfan_lib:: Compute GIT-fans
-* polymake_lib:: interface to TOPCOM
* realizationMatroids_lib:: Realizability for Tropical Fan Curves
* tropical_lib:: interface to gfan
* tropicalNewton_lib:: Newton polygons in tropical geometry
@@ -1125,10 +1109,7 @@ but not for serious computations.
@node gitfan_lib
@subsection gitfan_lib
@c lib gitfan.lib
-@c ----------------------------------------------------------
-@node polymake_lib
-@subsection polymake_lib
-@c lib polymake.lib tag:topcom
+
@c ----------------------------------------------------------
@node realizationMatroids_lib
@subsection realizationMatroids_lib
@@ -1219,7 +1200,6 @@ Comments should be send to the author of the library directly.
* stanleyreisner_lib:: T1 and T2 for a general Stanley-Reiser ring
* swalk_lib:: Sagbi Walk Conversion Algorithm
* systhreads_lib:: multi-threaded objects
-* tateProdCplxNegGrad_lib:: sheaf cohomology on product of projective spaces
* VecField_lib:: vector fields
@end menu
@c ----------------------------------------------------------
@@ -1310,10 +1290,6 @@ Todos/Issues:
@subsection systhreads_lib
@c lib systhreads.lib
@c ---------------------------------------------------------
-@node tateProdCplxNegGrad_lib
-@subsection tateProdCplxNegGrad_lib
-@c lib tateProdCplxNegGrad.lib
-@c ---------------------------------------------------------
@node VecField_lib
@subsection VecField_lib
@c lib VecField.lib

View File

@ -0,0 +1,15 @@
diff --git a/kernel/mod2.h b/kernel/mod2.h
index 867fcae47..2abd84f23 100644
--- a/kernel/mod2.h
+++ b/kernel/mod2.h
@@ -60,8 +60,10 @@
/* define for parallel processes with shared memory */
#ifndef __CCYGWIN__
+#ifndef SI_CPU_AARCH64
#define HAVE_VSPACE 1
#endif
+#endif
/*#define PROFILING*/
#ifdef PROFILING

View File

@ -0,0 +1,38 @@
diff --git a/m4/cpu-check.m4 b/m4/cpu-check.m4
index 3cf0a7f08..12bb926ac 100644
--- a/m4/cpu-check.m4
+++ b/m4/cpu-check.m4
@@ -37,6 +37,18 @@ if test "$ac_cv_singcpuname" = ppc; then
AC_DEFINE(SI_CPU_PPC,1,"PPC")
AC_SUBST(SI_CPU_PPC)
fi
+if test "$ac_cv_singcpuname" = arm -o "$ac_cv_singcpuname" = armel; then
+ AC_DEFINE(SI_CPU_ARM,1,"ARM")
+ AC_SUBST(SI_CPU_ARM)
+fi
+if test "$ac_cv_singcpuname" = aarch64; then
+ AC_DEFINE(SI_CPU_AARCH64,1,"AARCH64")
+ AC_SUBST(SI_CPU_AARCH64)
+fi
+if test "$ac_cv_singcpuname" = s390; then
+ AC_DEFINE(SI_CPU_S390,1,"S390")
+ AC_SUBST(SI_CPU_S390)
+fi
# UNAME and PATH
AC_MSG_CHECKING(uname for Singular)
@@ -65,6 +77,14 @@ dnl testet on: ppc_Linux, 740/750 PowerMac G3, 512k L2 cache
[powerpc*|ppc*], [AC_DEFINE(HAVE_GENERIC_MULT,1,multiplication is fast on the cpu: a*b is with mod otherwise using tables of logartihms)],
dnl the following settings seems to be better on arm processors
[arm*], [],
+dnl FIXME: need to run some tests
+ [aarch64*], [
+ AC_DEFINE(HAVE_MULT_MOD,1,multiplication is fast on the cpu: a*b is with mod otherwise using tables of logartihms)
+ AC_DEFINE(HAVE_GENERIC_ADD,1,use branch for addition in Z/p otherwise it uses a generic add)
+ AC_DEFINE(HAVE_DIV_MOD,1,division using extend euclidian algorithm otherwise using tables of logartihms)
+ ],
+dnl FIXME: need to run some tests
+ [s390*], [AC_DEFINE(HAVE_GENERIC_ADD,1,use branch for addition in Z/p otherwise it uses a generic add)],
[]
)

View File

@ -0,0 +1,194 @@
diff --git a/m4/ax_prog_cc_for_build.m4 b/m4/ax_prog_cc_for_build.m4
index f7410d74b..12cb005a5 100644
--- a/m4/ax_prog_cc_for_build.m4
+++ b/m4/ax_prog_cc_for_build.m4
@@ -32,35 +32,31 @@
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 18
+#serial 9
AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_CPP])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
dnl Use the standard macros, but make them use other variable names
dnl
pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
-pushdef([ac_cv_prog_cc_c89], ac_cv_build_prog_cc_c89)dnl
pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl
-pushdef([ac_cv_c_compiler_gnu], ac_cv_build_c_compiler_gnu)dnl
pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl
pushdef([ac_cv_objext], ac_cv_build_objext)dnl
pushdef([ac_exeext], ac_build_exeext)dnl
pushdef([ac_objext], ac_build_objext)dnl
pushdef([CC], CC_FOR_BUILD)dnl
pushdef([CPP], CPP_FOR_BUILD)dnl
-pushdef([GCC], GCC_FOR_BUILD)dnl
pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl
pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
-pushdef([EXEEXT], BUILD_EXEEXT)dnl
pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl
-pushdef([OBJEXT], BUILD_OBJEXT)dnl
pushdef([host], build)dnl
pushdef([host_alias], build_alias)dnl
pushdef([host_cpu], build_cpu)dnl
@@ -71,29 +67,27 @@ pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
pushdef([ac_cv_host_os], ac_cv_build_os)dnl
-pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl
-pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl
-pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl
-pushdef([cross_compiling], cross_compiling_build)dnl
+pushdef([ac_cpp], ac_build_cpp)dnl
+pushdef([ac_compile], ac_build_compile)dnl
+pushdef([ac_link], ac_build_link)dnl
-cross_compiling_build=no
+save_cross_compiling=$cross_compiling
+save_ac_tool_prefix=$ac_tool_prefix
+cross_compiling=no
+ac_tool_prefix=
-ac_build_tool_prefix=
-AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"],
- [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
-
-AC_LANG_PUSH([C])
AC_PROG_CC
-_AC_COMPILER_EXEEXT
-_AC_COMPILER_OBJEXT
AC_PROG_CPP
+AC_EXEEXT
+
+ac_tool_prefix=$save_ac_tool_prefix
+cross_compiling=$save_cross_compiling
dnl Restore the old definitions
dnl
-popdef([cross_compiling])dnl
-popdef([am_cv_prog_cc_c_o])dnl
-popdef([am_cv_CC_dependencies_compiler_type])dnl
-popdef([ac_tool_prefix])dnl
+popdef([ac_link])dnl
+popdef([ac_compile])dnl
+popdef([ac_cpp])dnl
popdef([ac_cv_host_os])dnl
popdef([ac_cv_host_vendor])dnl
popdef([ac_cv_host_cpu])dnl
@@ -104,33 +98,25 @@ popdef([host_vendor])dnl
popdef([host_cpu])dnl
popdef([host_alias])dnl
popdef([host])dnl
-popdef([OBJEXT])dnl
popdef([LDFLAGS])dnl
-popdef([EXEEXT])dnl
popdef([CPPFLAGS])dnl
popdef([CFLAGS])dnl
-popdef([GCC])dnl
popdef([CPP])dnl
popdef([CC])dnl
popdef([ac_objext])dnl
popdef([ac_exeext])dnl
popdef([ac_cv_objext])dnl
popdef([ac_cv_exeext])dnl
-popdef([ac_cv_c_compiler_gnu])dnl
popdef([ac_cv_prog_cc_g])dnl
popdef([ac_cv_prog_cc_cross])dnl
popdef([ac_cv_prog_cc_works])dnl
-popdef([ac_cv_prog_cc_c89])dnl
popdef([ac_cv_prog_gcc])dnl
popdef([ac_cv_prog_CPP])dnl
-dnl restore global variables ac_ext, ac_cpp, ac_compile,
-dnl ac_link, ac_compiler_gnu (dependant on the current
-dnl language after popping):
-AC_LANG_POP([C])
-
dnl Finally, set Makefile variables
dnl
+BUILD_EXEEXT=$ac_build_exeext
+BUILD_OBJEXT=$ac_build_objext
AC_SUBST(BUILD_EXEEXT)dnl
AC_SUBST(BUILD_OBJEXT)dnl
AC_SUBST([CFLAGS_FOR_BUILD])dnl
diff --git a/m4/ax_prog_cxx_for_build.m4 b/m4/ax_prog_cxx_for_build.m4
index 4d976769f..17c19a89f 100644
--- a/m4/ax_prog_cxx_for_build.m4
+++ b/m4/ax_prog_cxx_for_build.m4
@@ -31,7 +31,7 @@
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 4
+#serial 3
AU_ALIAS([AC_PROG_CXX_FOR_BUILD], [AX_PROG_CXX_FOR_BUILD])
AC_DEFUN([AX_PROG_CXX_FOR_BUILD], [dnl
@@ -49,7 +49,6 @@ pushdef([ac_cv_prog_cxx_cross], ac_cv_build_prog_cxx_cross)dnl
pushdef([ac_cv_prog_cxx_g], ac_cv_build_prog_cxx_g)dnl
pushdef([CXX], CXX_FOR_BUILD)dnl
pushdef([CXXCPP], CXXCPP_FOR_BUILD)dnl
-pushdef([GXX], GXX_FOR_BUILD)dnl
pushdef([CXXFLAGS], CXXFLAGS_FOR_BUILD)dnl
pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
pushdef([CXXCPPFLAGS], CXXCPPFLAGS_FOR_BUILD)dnl
@@ -63,25 +62,26 @@ pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
pushdef([ac_cv_host_os], ac_cv_build_os)dnl
-pushdef([ac_tool_prefix], ac_build_tool_prefix)dnl
-pushdef([am_cv_CXX_dependencies_compiler_type], am_cv_build_CXX_dependencies_compiler_type)dnl
-pushdef([cross_compiling], cross_compiling_build)dnl
+pushdef([ac_cxxcpp], ac_build_cxxcpp)dnl
+pushdef([ac_compile], ac_build_compile)dnl
+pushdef([ac_link], ac_build_link)dnl
-cross_compiling_build=no
+save_cross_compiling=$cross_compiling
+save_ac_tool_prefix=$ac_tool_prefix
+cross_compiling=no
+ac_tool_prefix=
-ac_build_tool_prefix=
-AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"],
- [test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
-
-AC_LANG_PUSH([C++])
AC_PROG_CXX
AC_PROG_CXXCPP
+ac_tool_prefix=$save_ac_tool_prefix
+cross_compiling=$save_cross_compiling
+
dnl Restore the old definitions
dnl
-popdef([cross_compiling])dnl
-popdef([am_cv_CXX_dependencies_compiler_type])dnl
-popdef([ac_tool_prefix])dnl
+popdef([ac_link])dnl
+popdef([ac_compile])dnl
+popdef([ac_cxxcpp])dnl
popdef([ac_cv_host_os])dnl
popdef([ac_cv_host_vendor])dnl
popdef([ac_cv_host_cpu])dnl
@@ -103,10 +103,6 @@ popdef([ac_cv_prog_cxx_works])dnl
popdef([ac_cv_prog_gxx])dnl
popdef([ac_cv_prog_CXXCPP])dnl
-dnl restore global variables (dependant on the current
-dnl language after popping):
-AC_LANG_POP([C++])
-
dnl Finally, set Makefile variables
dnl
AC_SUBST([CXXFLAGS_FOR_BUILD])dnl

View File

@ -1,14 +1,16 @@
{ lib, stdenv, mkDerivation, fetchurl, alsaLib, ffmpeg_3, libjack2, libX11, libXext, qtx11extras { lib, stdenv, mkDerivation, fetchFromGitHub, alsaLib, ffmpeg, libjack2, libX11, libXext, libXinerama, qtx11extras
, libXfixes, libGLU, libGL, pkg-config, libpulseaudio, qtbase, cmake, ninja , libXfixes, libGLU, libGL, pkg-config, libpulseaudio, libv4l, qtbase, qttools, cmake, ninja
}: }:
mkDerivation rec { mkDerivation rec {
pname = "simplescreenrecorder"; pname = "simplescreenrecorder";
version = "0.3.11"; version = "0.4.3";
src = fetchurl { src = fetchFromGitHub {
url = "https://github.com/MaartenBaert/ssr/archive/${version}.tar.gz"; owner = "MaartenBaert";
sha256 = "0l6irdadqpajvv0dj3ngs1231n559l0y1pykhs2h7526qm4w7xal"; repo = "ssr";
rev = version;
sha256 = "0mrx8wprs8bi42fwwvk6rh634ic9jnn0gkfpd6q9pcawnnbz3vq8";
}; };
cmakeFlags = [ "-DWITH_QT5=TRUE" ]; cmakeFlags = [ "-DWITH_QT5=TRUE" ];
@ -25,14 +27,14 @@ mkDerivation rec {
nativeBuildInputs = [ pkg-config cmake ninja ]; nativeBuildInputs = [ pkg-config cmake ninja ];
buildInputs = [ buildInputs = [
alsaLib ffmpeg_3 libjack2 libX11 libXext libXfixes libGLU libGL alsaLib ffmpeg libjack2 libX11 libXext libXfixes libXinerama libGLU libGL
libpulseaudio qtbase qtx11extras libpulseaudio libv4l qtbase qttools qtx11extras
]; ];
meta = with lib; { meta = with lib; {
description = "A screen recorder for Linux"; description = "A screen recorder for Linux";
homepage = "https://www.maartenbaert.be/simplescreenrecorder"; homepage = "https://www.maartenbaert.be/simplescreenrecorder";
license = licenses.gpl3; license = licenses.gpl3Plus;
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
maintainers = [ maintainers.goibhniu ]; maintainers = [ maintainers.goibhniu ];
}; };

View File

@ -12,10 +12,19 @@ index 48be48d..5038d4c 100755
-LD_PRELOAD="$LD_PRELOAD:libssr-glinject.so" "$@" -LD_PRELOAD="$LD_PRELOAD:libssr-glinject.so" "$@"
+LD_PRELOAD="$LD_PRELOAD:@out@/lib/libssr-glinject.so" "$@" +LD_PRELOAD="$LD_PRELOAD:@out@/lib/libssr-glinject.so" "$@"
diff --git a/src/AV/Input/GLInjectInput.cpp b/src/AV/Input/GLInjectInput.cpp diff --git a/src/AV/Input/GLInjectInput.cpp b/src/AV/Input/GLInjectInput.cpp
index 6b378f8..cbcf82b 100644 index fc98f31..18f5196 100644
--- a/src/AV/Input/GLInjectInput.cpp --- a/src/AV/Input/GLInjectInput.cpp
+++ b/src/AV/Input/GLInjectInput.cpp +++ b/src/AV/Input/GLInjectInput.cpp
@@ -96,7 +96,7 @@ void GLInjectInput::SetCapturing(bool capturing) { @@ -113,7 +113,7 @@ bool ExecuteDetached(const char* command, const char* working_directory) {
// try to execute command
do {
- res = execl("/bin/sh", "/bin/sh", "-c", command, (char*) NULL);
+ res = execl("@sh@", "@sh@", "-c", command, (char*) NULL);
} while(res == -1 and errno == EINTR);
// failed, send feedback
@@ -207,7 +207,7 @@ void GLInjectInput::SetCapturing(bool capturing) {
bool GLInjectInput::LaunchApplication(const QString& channel, bool relax_permissions, const QString& command, const QString& working_directory) { bool GLInjectInput::LaunchApplication(const QString& channel, bool relax_permissions, const QString& command, const QString& working_directory) {
// prepare command // prepare command
@ -24,12 +33,3 @@ index 6b378f8..cbcf82b 100644
full_command += "SSR_CHANNEL=\"" + ShellEscape(channel) + "\" "; full_command += "SSR_CHANNEL=\"" + ShellEscape(channel) + "\" ";
if(relax_permissions) if(relax_permissions)
full_command += "SSR_STREAM_RELAX_PERMISSIONS=1 "; full_command += "SSR_STREAM_RELAX_PERMISSIONS=1 ";
@@ -106,7 +106,7 @@ bool GLInjectInput::LaunchApplication(const QString& channel, bool relax_permiss
QStringList args;
args.push_back("-c");
args.push_back(full_command);
- return QProcess::startDetached("/bin/sh", args, working_directory);
+ return QProcess::startDetached("@sh@", args, working_directory);
}

View File

@ -4,11 +4,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "graphs"; pname = "graphs";
version = "20161026"; version = "20210214";
src = fetchurl { src = fetchurl {
url = "mirror://sageupstream/${pname}/${pname}-${version}.tar.bz2"; url = "https://mirrors.mit.edu/sage/spkg/upstream/${pname}/${pname}-${version}.tar.bz2";
sha256 = "0a2b5lly9nifphvknz88rrhfbbc8vqnlqcv19zdpfq8h8nnyjbb2"; # TODO: switch to the url below once Sage 9.3 is released
# url = "mirror://sageupstream/${pname}/${pname}-${version}.tar.bz2";
sha256 = "sha256-ByN8DZhTYRUFw4n9e7klAMh0P1YxurtND0Xf2DMvN0E=";
}; };
installPhase = '' installPhase = ''

View File

@ -1,28 +1,33 @@
{ lib, stdenv, fetchFromGitHub }: { lib
, stdenv
, fetchFromGitHub
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "cimg"; pname = "cimg";
version = "2.9.6"; version = "2.9.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dtschump"; owner = "dtschump";
repo = "CImg"; repo = "CImg";
rev = "v.${version}"; rev = "v.${version}";
sha256 = "sha256-RdOfog5FOw5XESyDFX68Lb2MUyCeUuPaq/0UVNTjNKo="; sha256 = "sha256-cR2wvGtomT1cZh8wKMCfYDNuP3d1gKhHJavVnvuQ8Mc=";
}; };
installPhase = '' installPhase = ''
runHook preInstall
install -dm 755 $out/include/CImg/plugins $doc/share/doc/cimg/examples install -dm 755 $out/include/CImg/plugins $doc/share/doc/cimg/examples
install -m 644 CImg.h $out/include/ install -m 644 CImg.h $out/include/
cp -dr --no-preserve=ownership examples/* $doc/share/doc/cimg/examples/ cp -dr --no-preserve=ownership examples/* $doc/share/doc/cimg/examples/
cp -dr --no-preserve=ownership plugins/* $out/include/CImg/plugins/ cp -dr --no-preserve=ownership plugins/* $out/include/CImg/plugins/
cp README.txt $doc/share/doc/cimg/ cp README.txt $doc/share/doc/cimg/
runHook postInstall
''; '';
outputs = [ "out" "doc" ]; outputs = [ "out" "doc" ];
meta = with lib; { meta = with lib; {
homepage = "http://cimg.eu/";
description = "A small, open source, C++ toolkit for image processing"; description = "A small, open source, C++ toolkit for image processing";
longDescription = '' longDescription = ''
CImg stands for Cool Image. It is easy to use, efficient and is intended CImg stands for Cool Image. It is easy to use, efficient and is intended
@ -30,7 +35,6 @@ stdenv.mkDerivation rec {
C++. Due to its generic conception, it can cover a wide range of image C++. Due to its generic conception, it can cover a wide range of image
processing applications. processing applications.
''; '';
homepage = "http://cimg.eu/";
license = licenses.cecill-c; license = licenses.cecill-c;
maintainers = [ maintainers.AndersonTorres ]; maintainers = [ maintainers.AndersonTorres ];
platforms = platforms.unix; platforms = platforms.unix;

View File

@ -14,7 +14,7 @@ assert withFlint -> flint != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "eclib"; pname = "eclib";
version = "20210223"; # upgrade might break the sage interface version = "20190909"; # upgrade might break the sage interface
# sage tests to run: # sage tests to run:
# src/sage/interfaces/mwrank.py # src/sage/interfaces/mwrank.py
# src/sage/libs/eclib # src/sage/libs/eclib
@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
owner = "JohnCremona"; owner = "JohnCremona";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-xnSw5cdg4PLa0GT/blCYDz/IG5aj+HG2NHSlyCiH9g0="; sha256 = "0y1vdi4120gdw56gg2dn3wh625yr9wpyk3wpbsd25w4lv83qq5da";
}; };
buildInputs = [ buildInputs = [
pari pari

View File

@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
inherit version; inherit version;
description = "Fast Library for Number Theory"; description = "Fast Library for Number Theory";
license = lib.licenses.gpl2Plus; license = lib.licenses.gpl2Plus;
maintainers = [lib.maintainers.raskin]; maintainers = lib.teams.sage.members;
platforms = lib.platforms.unix; platforms = lib.platforms.unix;
homepage = "http://www.flintlib.org/"; homepage = "http://www.flintlib.org/";
downloadPage = "http://www.flintlib.org/downloads.html"; downloadPage = "http://www.flintlib.org/downloads.html";

View File

@ -1,28 +1,42 @@
{ lib { lib
, stdenv , stdenv
, fetchurl , fetchFromGitHub
, autoreconfHook
, doxygen
, freeglut
, freetype , freetype
, GLUT
, libGL , libGL
, libGLU , libGLU
, OpenGL , OpenGL
, pkg-config
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ftgl"; pname = "ftgl";
version = "2.1.3-rc5"; version = "2.4.0";
src = fetchurl { src = fetchFromGitHub {
url = "mirror://sourceforge/${pname}-${version}.tar.gz"; owner = "frankheckenbach";
hash = "sha256-VFjWISJFSGlXLTn4qoV0X8BdVRgAG876Y71su40mVls="; repo = "ftgl";
rev = "v${version}";
hash = "sha256-6TDNGoMeBLnucmHRgEDIVWcjlJb7N0sTluqBwRMMWn4=";
}; };
nativeBuildInputs = [
autoreconfHook
doxygen
pkg-config
];
buildInputs = [ buildInputs = [
freetype freetype
] ++ (if stdenv.isDarwin then [ ] ++ (if stdenv.isDarwin then [
OpenGL OpenGL
GLUT
] else [ ] else [
libGL libGL
libGLU libGLU
freeglut
]); ]);
configureFlags = [ configureFlags = [
@ -31,8 +45,13 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
postInstall = ''
install -Dm644 src/FTSize.h -t ${placeholder "out"}/include/FTGL
install -Dm644 src/FTFace.h -t ${placeholder "out"}/include/FTGL
'';
meta = with lib; { meta = with lib; {
homepage = "https://sourceforge.net/apps/mediawiki/ftgl/"; homepage = "https://github.com/frankheckenbach/ftgl";
description = "Font rendering library for OpenGL applications"; description = "Font rendering library for OpenGL applications";
longDescription = '' longDescription = ''
FTGL is a free cross-platform Open Source C++ library that uses Freetype2 FTGL is a free cross-platform Open Source C++ library that uses Freetype2
@ -40,7 +59,7 @@ stdenv.mkDerivation rec {
pixmaps, texture maps, outlines, polygon mesh, and extruded polygon pixmaps, texture maps, outlines, polygon mesh, and extruded polygon
rendering modes. rendering modes.
''; '';
license = licenses.gpl3Plus; license = licenses.mit;
maintainers = with maintainers; [ AndersonTorres ]; maintainers = with maintainers; [ AndersonTorres ];
platforms = platforms.unix; platforms = platforms.unix;
}; };

View File

@ -1,16 +1,24 @@
{lib, stdenv, fetchurl, mpfr}: {lib, stdenv, fetchurl, autoconf, automake, libtool, texinfo, mpfr}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "mpfi"; pname = "mpfi";
version = "1.5.4"; version = "1.5.4";
file_nr = "37331"; file_nr = "38111";
src = fetchurl { src = fetchurl {
# NOTE: the file_nr is whats important here. The actual package name (including the version) # NOTE: the file_nr is whats important here. The actual package name (including the version)
# is ignored. To find out the correct file_nr, go to https://gforge.inria.fr/projects/mpfi/ # is ignored. To find out the correct file_nr, go to https://gforge.inria.fr/projects/mpfi/
# and click on Download in the section "Latest File Releases". # and click on Download in the section "Latest File Releases".
url = "https://gforge.inria.fr/frs/download.php/file/${file_nr}/mpfi-${version}.tar.bz2"; url = "https://gforge.inria.fr/frs/download.php/file/${file_nr}/mpfi-${version}.tgz";
sha256 = "sha256-I4PUV7IIxs088uZracTOR0d7Kg2zH77AzUseuqJHGS8="; sha256 = "sha256-Ozk4WV1yCvF5c96vcnz8DdQcixbCCtwQOpcPSkOuOlY=";
}; };
buildInputs = [mpfr];
nativeBuildInputs = [ autoconf automake libtool texinfo ];
buildInputs = [ mpfr ];
preConfigure = ''
./autogen.sh
'';
meta = { meta = {
inherit version; inherit version;
description = "A multiple precision interval arithmetic library based on MPFR"; description = "A multiple precision interval arithmetic library based on MPFR";

View File

@ -0,0 +1,83 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, jsonschema
, plotly
, pytest
, pytest-xdist
, pytest-cov
, pytest-asyncio
, beautifulsoup4
, pyyaml
, isort
, py
, jinja2
, rpmfile
, reportlab
, zstandard
, rich
, aiohttp
, toml
# aiohttp[speedups]
, aiodns
, brotlipy
, cchardet
, pillow
, pytestCheckHook
}:
buildPythonPackage {
pname = "cve-bin-tool";
version = "unstable-2021-04-15";
src = fetchFromGitHub {
owner = "intel";
repo = "cve-bin-tool";
rev = "10cb6fd0baffe35babfde024bc8c70aa58629237";
sha256 = "STf0tJBpadBqsbC+MghBai8zahDkrXfLoFRJ+84wvvY=";
};
# Wants to open a sqlite database, access the internet, etc
doCheck = false;
propagatedBuildInputs = [
jsonschema
plotly
pytest
pytest-xdist
pytest-cov
pytest-asyncio
beautifulsoup4
pyyaml
isort
py
jinja2
rpmfile
reportlab
zstandard
rich
aiohttp
toml
# aiohttp[speedups]
aiodns
brotlipy
cchardet
# needed by brotlipy
pillow
];
checkInputs = [
pytestCheckHook
];
pythonImportsCheck = [
"cve_bin_tool"
];
meta = with lib; {
description = "CVE Binary Checker Tool";
homepage = "https://github.com/intel/cve-bin-tool";
license = licenses.gpl3Only;
maintainers = teams.determinatesystems.members;
};
}

View File

@ -8,25 +8,21 @@
, numpy , numpy
, six , six
, typing-extensions , typing-extensions
, typing , pytestCheckHook
, pytestrunner
, pytest
, nbval , nbval
, tabulate , tabulate
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "onnx"; pname = "onnx";
version = "1.8.1"; version = "1.9.0";
# Due to Protobuf packaging issues this build of Onnx with Python 2 gives # Python 2 is not supported as of Onnx v1.8
# errors on import.
# Also support for Python 2 will be deprecated from Onnx v1.8.
disabled = isPy27; disabled = isPy27;
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "9d65c52009a90499f8c25fdfe5acda3ac88efe0788eb1d5f2575a989277145fb"; sha256 = "0yjv2axz2vc2ysniwislsp53fsb8f61y1warrr2ppn2d9ijml1d9";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
@ -36,11 +32,10 @@ buildPythonPackage rec {
numpy numpy
six six
typing-extensions typing-extensions
] ++ lib.optional (pythonOlder "3.5") [ typing ]; ];
checkInputs = [ checkInputs = [
pytestrunner pytestCheckHook
pytest
nbval nbval
tabulate tabulate
]; ];
@ -48,6 +43,9 @@ buildPythonPackage rec {
postPatch = '' postPatch = ''
chmod +x tools/protoc-gen-mypy.sh.in chmod +x tools/protoc-gen-mypy.sh.in
patchShebangs tools/protoc-gen-mypy.sh.in tools/protoc-gen-mypy.py patchShebangs tools/protoc-gen-mypy.sh.in tools/protoc-gen-mypy.py
substituteInPlace setup.py \
--replace "setup_requires.append('pytest-runner')" ""
''; '';
preBuild = '' preBuild = ''

View File

@ -0,0 +1,48 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, flask
, mock
, prettytable
, pyserial
, pytestCheckHook
, pythonOlder
, requests
, stevedore
}:
buildPythonPackage rec {
pname = "pynx584";
version = "0.6";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "kk7ds";
repo = pname;
rev = version;
sha256 = "0if1jq8qiqp4w4zhf2xzzcb8y70hr5pxqzh96i008p6izjha89y6";
};
propagatedBuildInputs = [
flask
prettytable
pyserial
requests
stevedore
];
checkInputs = [
mock
pytestCheckHook
];
pythonImportsCheck = [ "nx584" ];
meta = with lib; {
description = "Python package for communicating to NX584/NX8E interfaces";
homepage = "https://github.com/kk7ds/pynx584";
license = with licenses; [ gpl3Only ];
maintainers = with maintainers; [ fab ];
};
}

View File

@ -1,15 +1,22 @@
{ lib, fetchPypi, buildPythonPackage }: { lib, fetchFromGitHub, buildPythonPackage, jsonschema }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "robotframework"; pname = "robotframework";
version = "4.0"; version = "4.0.1";
src = fetchPypi { src = fetchFromGitHub {
inherit pname version; owner = pname;
sha256 = "a02a6f4af3b0830e4396058694c333cb63eb47f50acf6723be34f0f7a4d73ad7"; repo = pname;
extension = "zip"; rev = "v${version}";
sha256 = "1nkph0slrhss6y52y8jgbdc6m8hbqjilrwp3r00wwyqdifrfa1i6";
}; };
checkInputs = [ jsonschema ];
checkPhase = ''
python3 utest/run.py
'';
meta = with lib; { meta = with lib; {
description = "Generic test automation framework"; description = "Generic test automation framework";
homepage = "https://robotframework.org/"; homepage = "https://robotframework.org/";

View File

@ -0,0 +1,32 @@
{ lib
, buildPythonPackage
, fetchPypi
, setuptools-scm
}:
buildPythonPackage rec {
pname = "rpmfile";
version = "1.0.8";
src = fetchPypi {
inherit pname version;
sha256 = "e56cfc10e1a7d953b1890d81652a89400c614f4cdd9909464aece434d93c3a3e";
};
# Tests access the internet
doCheck = false;
nativeBuildInputs = [
setuptools-scm
];
pythonImportsCheck = [
"rpmfile"
];
meta = with lib; {
description = "Read rpm archive files";
homepage = "https://github.com/srossross/rpmfile";
license = licenses.mit;
maintainers = teams.determinatesystems.members;
};
}

View File

@ -0,0 +1,29 @@
{ buildGoPackage
, fetchFromGitHub
, lib
}:
buildGoPackage rec {
pname = "protoc-gen-go-grpc";
version = "1.1.0";
goPackagePath = "google.golang.org/grpc";
src = fetchFromGitHub {
owner = "grpc";
repo = "grpc-go";
rev = "cmd/protoc-gen-go-grpc/v${version}";
sha256 = "14rjb8j6fm07rnns3dpwgkzf3y6rmia6i9n7ns6cldc5mbf7nwi3";
};
subPackages = [ "cmd/protoc-gen-go-grpc" ];
goDeps = ./deps.nix;
meta = with lib; {
description = "The Go language implementation of gRPC. HTTP/2 based RPC";
license = licenses.asl20;
maintainers = [ maintainers.raboof ];
platforms = platforms.all;
};
}

View File

@ -0,0 +1,333 @@
# file generated from go.mod using vgo2nix (https://github.com/nix-community/vgo2nix)
[
{
goPackagePath = "cloud.google.com/go";
fetch = {
type = "git";
url = "https://github.com/googleapis/google-cloud-go";
rev = "v0.26.0";
sha256 = "149v3ci17g6wd2pm18mzcncq5qpl9hwdjnz3rlbn5rfidyn46la1";
moduleDir = "";
};
}
{
goPackagePath = "github.com/BurntSushi/toml";
fetch = {
type = "git";
url = "https://github.com/BurntSushi/toml";
rev = "v0.3.1";
sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
moduleDir = "";
};
}
{
goPackagePath = "github.com/census-instrumentation/opencensus-proto";
fetch = {
type = "git";
url = "https://github.com/census-instrumentation/opencensus-proto";
rev = "v0.2.1";
sha256 = "19fcx3sc99i5dsklny6r073z5j20vlwn2xqm6di1q3b1xwchzqfj";
moduleDir = "";
};
}
{
goPackagePath = "github.com/client9/misspell";
fetch = {
type = "git";
url = "https://github.com/client9/misspell";
rev = "v0.3.4";
sha256 = "1vwf33wsc4la25zk9nylpbp9px3svlmldkm0bha4hp56jws4q9cs";
moduleDir = "";
};
}
{
goPackagePath = "github.com/cncf/udpa/go";
fetch = {
type = "git";
url = "https://github.com/cncf/udpa";
rev = "5459f2c99403";
sha256 = "0i3al193dsp91j7iywqrm6fr56y2sz51ci4vf19mb3j4n2x44gsi";
moduleDir = "go";
};
}
{
goPackagePath = "github.com/davecgh/go-spew";
fetch = {
type = "git";
url = "https://github.com/davecgh/go-spew";
rev = "v1.1.0";
sha256 = "0d4jfmak5p6lb7n2r6yvf5p1zcw0l8j74kn55ghvr7zr7b7axm6c";
moduleDir = "";
};
}
{
goPackagePath = "github.com/envoyproxy/go-control-plane";
fetch = {
type = "git";
url = "https://github.com/envoyproxy/go-control-plane";
rev = "668b12f5399d";
sha256 = "0vmhc8ii081x1k2qw4kji7wjyg6l25zp1y6qxi27wq8m341i4rzb";
moduleDir = "";
};
}
{
goPackagePath = "github.com/envoyproxy/protoc-gen-validate";
fetch = {
type = "git";
url = "https://github.com/envoyproxy/protoc-gen-validate";
rev = "v0.1.0";
sha256 = "0kxd3wwh3xwqk0r684hsy281xq4y71cd11d4q2hspcjbnlbwh7cy";
moduleDir = "";
};
}
{
goPackagePath = "github.com/golang/glog";
fetch = {
type = "git";
url = "https://github.com/golang/glog";
rev = "23def4e6c14b";
sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
moduleDir = "";
};
}
{
goPackagePath = "github.com/golang/mock";
fetch = {
type = "git";
url = "https://github.com/golang/mock";
rev = "v1.1.1";
sha256 = "0ap8wb6pdl6ccmdb43advjll2ly4sz26wsc3axw0hbrjrybybzgy";
moduleDir = "";
};
}
{
goPackagePath = "github.com/golang/protobuf";
fetch = {
type = "git";
url = "https://github.com/golang/protobuf";
rev = "v1.4.2";
sha256 = "0m5z81im4nsyfgarjhppayk4hqnrwswr3nix9mj8pff8x9jvcjqw";
moduleDir = "";
};
}
{
goPackagePath = "github.com/google/go-cmp";
fetch = {
type = "git";
url = "https://github.com/google/go-cmp";
rev = "v0.5.0";
sha256 = "04pzp583p6b32y34c6jygfxarff9qjs39rarvfh6467z24sdd9k4";
moduleDir = "";
};
}
{
goPackagePath = "github.com/google/uuid";
fetch = {
type = "git";
url = "https://github.com/google/uuid";
rev = "v1.1.2";
sha256 = "1rbpfa0v0ly9sdnixcxhf79swki54ikgm1zkwwkj64p1ws66syqd";
moduleDir = "";
};
}
{
goPackagePath = "github.com/pmezard/go-difflib";
fetch = {
type = "git";
url = "https://github.com/pmezard/go-difflib";
rev = "v1.0.0";
sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
moduleDir = "";
};
}
{
goPackagePath = "github.com/prometheus/client_model";
fetch = {
type = "git";
url = "https://github.com/prometheus/client_model";
rev = "14fe0d1b01d4";
sha256 = "0zdmk6rbbx39cvfz0r59v2jg5sg9yd02b4pds5n5llgvivi99550";
moduleDir = "";
};
}
{
goPackagePath = "github.com/stretchr/objx";
fetch = {
type = "git";
url = "https://github.com/stretchr/objx";
rev = "v0.1.0";
sha256 = "19ynspzjdynbi85xw06mh8ad5j0qa1vryvxjgvbnyrr8rbm4vd8w";
moduleDir = "";
};
}
{
goPackagePath = "github.com/stretchr/testify";
fetch = {
type = "git";
url = "https://github.com/stretchr/testify";
rev = "v1.5.1";
sha256 = "09r89m1wy4cjv2nps1ykp00qjpi0531r07q3s34hr7m6njk4srkl";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/crypto";
fetch = {
type = "git";
url = "https://go.googlesource.com/crypto";
rev = "c2843e01d9a2";
sha256 = "01xgxbj5r79nmisdvpq48zfy8pzaaj90bn6ngd4nf33j9ar1dp8r";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/exp";
fetch = {
type = "git";
url = "https://go.googlesource.com/exp";
rev = "509febef88a4";
sha256 = "02isrh39z8znrp5znplzy0dip2gnrl3jm1355raliyvhnhg04j6q";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/lint";
fetch = {
type = "git";
url = "https://go.googlesource.com/lint";
rev = "d0100b6bd8b3";
sha256 = "0b0amr9x4ji66iv9ayfx7zrfx52k1m5g66qfcxkgj80qrb1y2yn7";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/net";
fetch = {
type = "git";
url = "https://go.googlesource.com/net";
rev = "d8887717615a";
sha256 = "1wfm6ngxjyj7v5a2dqib6lw8bb2rdnf1kl48diykxjrsddn0s163";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/oauth2";
fetch = {
type = "git";
url = "https://go.googlesource.com/oauth2";
rev = "d2e6202438be";
sha256 = "0wbn75fd10485nb93bm4kqldqifdim5xqy4v7r5sdvimvf3fyhn7";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/sync";
fetch = {
type = "git";
url = "https://go.googlesource.com/sync";
rev = "112230192c58";
sha256 = "05i2k43j2d0llq768hg5pf3hb2yhfzp9la1w5wp0rsnnzblr0lfn";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/sys";
fetch = {
type = "git";
url = "https://go.googlesource.com/sys";
rev = "d0b11bdaac8a";
sha256 = "18yfsmw622l7gc5sqriv5qmck6903vvhivpzp8i3xfy3z33dybdl";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/text";
fetch = {
type = "git";
url = "https://go.googlesource.com/text";
rev = "v0.3.0";
sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/tools";
fetch = {
type = "git";
url = "https://go.googlesource.com/tools";
rev = "2c0ae7006135";
sha256 = "1lsi2ssxajclj3bciz2a41v1vjv768ja3v6wnbyhxy8xphwkp4fk";
moduleDir = "";
};
}
{
goPackagePath = "golang.org/x/xerrors";
fetch = {
type = "git";
url = "https://go.googlesource.com/xerrors";
rev = "9bdfabe68543";
sha256 = "1yjfi1bk9xb81lqn85nnm13zz725wazvrx3b50hx19qmwg7a4b0c";
moduleDir = "";
};
}
{
goPackagePath = "google.golang.org/appengine";
fetch = {
type = "git";
url = "https://github.com/golang/appengine";
rev = "v1.4.0";
sha256 = "06zl7w4sxgdq2pl94wy9ncii6h0z3szl4xpqds0sv3b3wbdlhbnn";
moduleDir = "";
};
}
{
goPackagePath = "google.golang.org/genproto";
fetch = {
type = "git";
url = "https://github.com/googleapis/go-genproto";
rev = "cb27e3aa2013";
sha256 = "0ml73ghqcwbz7ipfk8fnxb5indcml49b5p7vp1fsyny0abyyrmxf";
moduleDir = "";
};
}
{
goPackagePath = "google.golang.org/protobuf";
fetch = {
type = "git";
url = "https://go.googlesource.com/protobuf";
rev = "v1.25.0";
sha256 = "0apfl42x166dh96zfq5kvv4b4ax9xljik6bq1mnvn2240ir3mc23";
moduleDir = "";
};
}
{
goPackagePath = "gopkg.in/check.v1";
fetch = {
type = "git";
url = "https://gopkg.in/check.v1";
rev = "20d25e280405";
sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
moduleDir = "";
};
}
{
goPackagePath = "gopkg.in/yaml.v2";
fetch = {
type = "git";
url = "https://gopkg.in/yaml.v2";
rev = "v2.2.2";
sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
moduleDir = "";
};
}
{
goPackagePath = "honnef.co/go/tools";
fetch = {
type = "git";
url = "https://github.com/dominikh/go-tools";
rev = "ea95bdfd59fc";
sha256 = "1763nw7pwpzkvzfnm63dgzcgbq9hwmq5l1nffchnhh77vgkaq4ic";
moduleDir = "";
};
}
]

View File

@ -573,7 +573,7 @@
"number" = ps: with ps; [ ]; "number" = ps: with ps; [ ];
"nut" = ps: with ps; [ ]; # missing inputs: pynut2 "nut" = ps: with ps; [ ]; # missing inputs: pynut2
"nws" = ps: with ps; [ pynws ]; "nws" = ps: with ps; [ pynws ];
"nx584" = ps: with ps; [ ]; # missing inputs: pynx584 "nx584" = ps: with ps; [ pynx584 ];
"nzbget" = ps: with ps; [ ]; # missing inputs: pynzbgetapi "nzbget" = ps: with ps; [ ]; # missing inputs: pynzbgetapi
"oasa_telematics" = ps: with ps; [ ]; # missing inputs: oasatelematics "oasa_telematics" = ps: with ps; [ ]; # missing inputs: oasatelematics
"obihai" = ps: with ps; [ ]; # missing inputs: pyobihai "obihai" = ps: with ps; [ ]; # missing inputs: pyobihai

View File

@ -332,6 +332,7 @@ in with py.pkgs; buildPythonApplication rec {
"notify" "notify"
"notion" "notion"
"number" "number"
"nx584"
"omnilogic" "omnilogic"
"ondilo_ico" "ondilo_ico"
"openerz" "openerz"

View File

@ -2,10 +2,10 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "avfs"; pname = "avfs";
version = "1.1.3"; version = "1.1.4";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/avf/${version}/${pname}-${version}.tar.bz2"; url = "mirror://sourceforge/avf/${version}/${pname}-${version}.tar.bz2";
sha256 = "1psh8k7g7rb0gn7aygbjv86kxyi9xq07barxksa99nnmq3lc2kjg"; sha256 = "0ax1zbw4pmggx1b784bfabdqyn39k7109cnl22p69y2phnpq2y9s";
}; };
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
@ -21,6 +21,6 @@ stdenv.mkDerivation rec {
homepage = "http://avf.sourceforge.net/"; homepage = "http://avf.sourceforge.net/";
description = "Virtual filesystem that allows browsing of compressed files"; description = "Virtual filesystem that allows browsing of compressed files";
platforms = lib.platforms.unix; platforms = lib.platforms.unix;
license = lib.licenses.gpl2; license = lib.licenses.gpl2Only;
}; };
} }

View File

@ -14,11 +14,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "agi"; pname = "agi";
version = "1.1.0-dev-20210421"; version = "1.1.0-dev-20210423";
src = fetchzip { src = fetchzip {
url = "https://github.com/google/agi-dev-releases/releases/download/v${version}/agi-${version}-linux.zip"; url = "https://github.com/google/agi-dev-releases/releases/download/v${version}/agi-${version}-linux.zip";
sha256 = "sha256-2IgGvQy6omDEwrzQDfa/OLi3f+Q2zarvJVGk6ZhsjSA="; sha256 = "sha256-49ZKqG+CiQkdoBMLdYrN5fMnJH5TtXdUknQLQB2UG04=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -27,7 +27,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "vips"; pname = "vips";
version = "8.10.5"; version = "8.10.6";
outputs = [ "bin" "out" "man" "dev" ]; outputs = [ "bin" "out" "man" "dev" ];
@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
owner = "libvips"; owner = "libvips";
repo = "libvips"; repo = "libvips";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-h21Ep6f4/y+m0kdrCA5dcULFeOOyLtMx2etAziG6f9Y="; sha256 = "sha256-hdpkBC76PnPTN+rnNchLVk1CrhcClTtbaWyUcyUtuAk=";
# Remove unicode file names which leads to different checksums on HFS+ # Remove unicode file names which leads to different checksums on HFS+
# vs. other filesystems because of unicode normalisation. # vs. other filesystems because of unicode normalisation.
extraPostFetch = '' extraPostFetch = ''

View File

@ -12,14 +12,16 @@ assert unicodeSupport -> ncurses.unicode && ncurses != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dialog"; pname = "dialog";
version = "1.3-20210306"; version = "1.3-20210324";
src = fetchurl { src = fetchurl {
url = "ftp://ftp.invisible-island.net/dialog/${pname}-${version}.tgz"; url = "ftp://ftp.invisible-island.net/dialog/${pname}-${version}.tgz";
hash = "sha256-pz57YHtjX2PAICuzMTEG5wD5H+Sp9NJspwA/brK5yw8="; hash = "sha256-AcLR4umvmwg+ogDKrQhP39pVF41bv05Cyf/0STUVFlM=";
}; };
buildInputs = [ ncurses ]; buildInputs = [
ncurses
];
configureFlags = [ configureFlags = [
"--disable-rpath-hacks" "--disable-rpath-hacks"

View File

@ -10,11 +10,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "nncp"; pname = "nncp";
version = "6.3.0"; version = "6.4.0";
src = fetchurl { src = fetchurl {
url = "http://www.nncpgo.org/download/${pname}-${version}.tar.xz"; url = "http://www.nncpgo.org/download/${pname}-${version}.tar.xz";
sha256 = "0ss6p91r9sr3q8p8f6mjjc2cspx3fq0q4w44gfxl0da2wc8nmhkn"; sha256 = "16xrwhr7avss238k83ih1njl0gfca57ghg360ba9ixlssrb1239x";
}; };
nativeBuildInputs = [ go redo-apenwarr ]; nativeBuildInputs = [ go redo-apenwarr ];

View File

@ -18,11 +18,11 @@ buildPythonPackage rec {
# The websites youtube-dl deals with are a very moving target. That means that # The websites youtube-dl deals with are a very moving target. That means that
# downloads break constantly. Because of that, updates should always be backported # downloads break constantly. Because of that, updates should always be backported
# to the latest stable release. # to the latest stable release.
version = "2021.04.07"; version = "2021.04.26";
src = fetchurl { src = fetchurl {
url = "https://yt-dl.org/downloads/${version}/${pname}-${version}.tar.gz"; url = "https://yt-dl.org/downloads/${version}/${pname}-${version}.tar.gz";
sha256 = "02d51l6gdjr3zhhi7ydf5kzv8dv4jzq0ygja7zb2h9k7hnl0l27m"; sha256 = "0jpa65jr5djn9175p6a8j9i1zgarshfwfsgmprc0vvnsl3s23ksc";
}; };
nativeBuildInputs = [ installShellFiles makeWrapper ]; nativeBuildInputs = [ installShellFiles makeWrapper ];

View File

@ -0,0 +1,34 @@
{ lib, fetchFromGitHub, rustPlatform, stdenv, installShellFiles, libiconv }:
rustPlatform.buildRustPackage rec {
pname = "zellij";
version = "0.5.1";
src = fetchFromGitHub {
owner = "zellij-org";
repo = pname;
rev = "v${version}";
sha256 = "102zw4napzx05rpmx6scl6il55syf3lw1gzmy1y66cg1f70sij4d";
};
cargoSha256 = "121fsch0an6d2hqaq0ws9cm7g5ppzfrycmmhajfacfg6wbiax1m5";
nativeBuildInputs = [ installShellFiles ];
buildInputs = lib.optionals stdenv.isDarwin [ libiconv ];
preCheck = ''
HOME=$TMPDIR
'';
postInstall = ''
installShellCompletion assets/completions/zellij.{bash,fish} --zsh assets/completions/_zellij
'';
meta = with lib; {
description = "A terminal workspace with batteries included";
homepage = "https://zellij.dev/";
license = with licenses; [ mit ];
maintainers = with maintainers; [ therealansh ];
};
}

View File

@ -265,6 +265,8 @@ in
protoc-gen-go = callPackage ../development/tools/protoc-gen-go { }; protoc-gen-go = callPackage ../development/tools/protoc-gen-go { };
protoc-gen-go-grpc = callPackage ../development/tools/protoc-gen-go-grpc { };
protoc-gen-twirp = callPackage ../development/tools/protoc-gen-twirp { }; protoc-gen-twirp = callPackage ../development/tools/protoc-gen-twirp { };
protoc-gen-twirp_php = callPackage ../development/tools/protoc-gen-twirp_php { }; protoc-gen-twirp_php = callPackage ../development/tools/protoc-gen-twirp_php { };
@ -2274,7 +2276,7 @@ in
inherit (haskellPackages) ghcWithPackages diagrams-builder; inherit (haskellPackages) ghcWithPackages diagrams-builder;
}; };
dialog = callPackage ../development/tools/misc/dialog { }; dialog = callPackage ../tools/misc/dialog { };
dibbler = callPackage ../tools/networking/dibbler { }; dibbler = callPackage ../tools/networking/dibbler { };
@ -4649,7 +4651,7 @@ in
frostwire-bin = callPackage ../applications/networking/p2p/frostwire/frostwire-bin.nix { }; frostwire-bin = callPackage ../applications/networking/p2p/frostwire/frostwire-bin.nix { };
ftgl = callPackage ../development/libraries/ftgl { ftgl = callPackage ../development/libraries/ftgl {
inherit (darwin.apple_sdk.frameworks) OpenGL; inherit (darwin.apple_sdk.frameworks) OpenGL GLUT;
}; };
ftop = callPackage ../os-specific/linux/ftop { }; ftop = callPackage ../os-specific/linux/ftop { };
@ -9769,6 +9771,8 @@ in
zdelta = callPackage ../tools/compression/zdelta { }; zdelta = callPackage ../tools/compression/zdelta { };
zellij = callPackage ../tools/misc/zellij { };
zenith = callPackage ../tools/system/zenith { zenith = callPackage ../tools/system/zenith {
inherit (darwin.apple_sdk.frameworks) IOKit; inherit (darwin.apple_sdk.frameworks) IOKit;
}; };

View File

@ -1603,6 +1603,8 @@ in {
curve25519-donna = callPackage ../development/python-modules/curve25519-donna { }; curve25519-donna = callPackage ../development/python-modules/curve25519-donna { };
cve-bin-tool = callPackage ../development/python-modules/cve-bin-tool { };
cvxopt = callPackage ../development/python-modules/cvxopt { }; cvxopt = callPackage ../development/python-modules/cvxopt { };
cvxpy = callPackage ../development/python-modules/cvxpy { }; cvxpy = callPackage ../development/python-modules/cvxpy { };
@ -4964,6 +4966,8 @@ in {
pynws = callPackage ../development/python-modules/pynws { }; pynws = callPackage ../development/python-modules/pynws { };
pynx584 = callPackage ../development/python-modules/pynx584 { };
pysbd = callPackage ../development/python-modules/pysbd { }; pysbd = callPackage ../development/python-modules/pysbd { };
pyshark = callPackage ../development/python-modules/pyshark { }; pyshark = callPackage ../development/python-modules/pyshark { };
@ -7106,6 +7110,8 @@ in {
inherit python; inherit python;
}); });
rpmfile = callPackage ../development/python-modules/rpmfile { };
rpmfluff = callPackage ../development/python-modules/rpmfluff { }; rpmfluff = callPackage ../development/python-modules/rpmfluff { };
rpy2 = callPackage ../development/python-modules/rpy2 { }; rpy2 = callPackage ../development/python-modules/rpy2 { };