Merge master into staging-next

This commit is contained in:
github-actions[bot] 2022-08-07 18:01:30 +00:00 committed by GitHub
commit 45241ed94e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 190 additions and 95 deletions

View File

@ -0,0 +1,59 @@
diff --git a/cmake/FindPyQt5.cmake b/cmake/FindPyQt5.cmake
index b51fd0075e..87ee317e05 100644
--- a/cmake/FindPyQt5.cmake
+++ b/cmake/FindPyQt5.cmake
@@ -25,7 +25,7 @@ ELSE(EXISTS PYQT5_VERSION_STR)
IF(SIP_BUILD_EXECUTABLE)
# SIP >= 5.0 path
- FILE(GLOB _pyqt5_metadata "${Python_SITEARCH}/PyQt5-*.dist-info/METADATA")
+ FILE(GLOB _pyqt5_metadata "@pyQt5PackageDir@/PyQt5-*.dist-info/METADATA")
IF(_pyqt5_metadata)
FILE(READ ${_pyqt5_metadata} _pyqt5_metadata_contents)
STRING(REGEX REPLACE ".*\nVersion: ([^\n]+).*$" "\\1" PYQT5_VERSION_STR ${_pyqt5_metadata_contents})
@@ -34,8 +34,8 @@ ELSE(EXISTS PYQT5_VERSION_STR)
ENDIF(_pyqt5_metadata)
IF(PYQT5_VERSION_STR)
- SET(PYQT5_MOD_DIR "${Python_SITEARCH}/PyQt5")
- SET(PYQT5_SIP_DIR "${Python_SITEARCH}/PyQt5/bindings")
+ SET(PYQT5_MOD_DIR "@pyQt5PackageDir@/PyQt5")
+ SET(PYQT5_SIP_DIR "@pyQt5PackageDir@/PyQt5/bindings")
FIND_PROGRAM(__pyuic5 "pyuic5")
GET_FILENAME_COMPONENT(PYQT5_BIN_DIR ${__pyuic5} DIRECTORY)
diff --git a/cmake/FindQsci.cmake b/cmake/FindQsci.cmake
index 69e41c1fe9..5456c3d59b 100644
--- a/cmake/FindQsci.cmake
+++ b/cmake/FindQsci.cmake
@@ -24,7 +24,7 @@ ELSE(QSCI_MOD_VERSION_STR)
IF(SIP_BUILD_EXECUTABLE)
# SIP >= 5.0 path
- FILE(GLOB _qsci_metadata "${Python_SITEARCH}/QScintilla*.dist-info/METADATA")
+ FILE(GLOB _qsci_metadata "@qsciPackageDir@/QScintilla*.dist-info/METADATA")
IF(_qsci_metadata)
FILE(READ ${_qsci_metadata} _qsci_metadata_contents)
STRING(REGEX REPLACE ".*\nVersion: ([^\n]+).*$" "\\1" QSCI_MOD_VERSION_STR ${_qsci_metadata_contents})
@@ -33,7 +33,7 @@ ELSE(QSCI_MOD_VERSION_STR)
ENDIF(_qsci_metadata)
IF(QSCI_MOD_VERSION_STR)
- SET(QSCI_SIP_DIR "${PYQT5_SIP_DIR}")
+ SET(QSCI_SIP_DIR "@qsciPackageDir@/PyQt5/bindings")
SET(QSCI_FOUND TRUE)
ENDIF(QSCI_MOD_VERSION_STR)
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 4cd19c3af4..668cc6a5e6 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -206,7 +206,7 @@ if (WITH_GUI)
install(FILES ${QGIS_PYTHON_OUTPUT_DIRECTORY}/_gui.pyi DESTINATION ${QGIS_PYTHON_DIR})
endif()
if(QSCI_SIP_DIR)
- set(SIP_EXTRA_OPTIONS ${SIP_EXTRA_OPTIONS} -I ${QSCI_SIP_DIR})
+ set(SIP_BUILD_EXTRA_OPTIONS ${SIP_BUILD_EXTRA_OPTIONS} --include-dir=${QSCI_SIP_DIR})
else()
message(STATUS "Qsci sip file not found - disabling bindings for derived classes")
set(SIP_DISABLE_FEATURES ${SIP_DISABLE_FEATURES} HAVE_QSCI_SIP)

View File

@ -38,6 +38,8 @@
, pdal
, zstd
, makeWrapper
, wrapGAppsHook
, substituteAll
}:
let
@ -64,7 +66,9 @@ let
urllib3
pygments
pyqt5
sip_4
pyqt-builder
sip
setuptools
owslib
six
];
@ -116,29 +120,31 @@ in mkDerivation rec {
++ lib.optional withWebKit qtwebkit
++ pythonBuildInputs;
nativeBuildInputs = [ makeWrapper cmake flex bison ninja ];
nativeBuildInputs = [ makeWrapper wrapGAppsHook cmake flex bison ninja ];
# Force this pyqt_sip_dir variable to point to the sip dir in PyQt5
#
# TODO: Correct PyQt5 to provide the expected directory and fix
# build to use PYQT5_SIP_DIR consistently.
postPatch = ''
substituteInPlace cmake/FindPyQt5.py \
--replace 'sip_dir = cfg.default_sip_dir' 'sip_dir = "${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}/PyQt5/bindings"'
'';
patches = [
(substituteAll {
src = ./set-pyqt-package-dirs.patch;
pyQt5PackageDir = "${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}";
qsciPackageDir = "${py.pkgs.qscintilla-qt5}/${py.pkgs.python.sitePackages}";
})
];
cmakeFlags = [
"-DWITH_3D=True"
"-DWITH_PDAL=TRUE"
"-DPYQT5_SIP_DIR=${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}/PyQt5/bindings"
"-DQSCI_SIP_DIR=${py.pkgs.qscintilla-qt5}/${py.pkgs.python.sitePackages}/PyQt5/bindings"
] ++ lib.optional (!withWebKit) "-DWITH_QTWEBKIT=OFF"
++ lib.optional withGrass "-DGRASS_PREFIX7=${grass}/grass78";
dontWrapGApps = true; # wrapper params passed below
postFixup = lib.optionalString withGrass ''
# grass has to be availble on the command line even though we baked in
# the path at build time using GRASS_PREFIX
# the path at build time using GRASS_PREFIX.
# using wrapGAppsHook also prevents file dialogs from crashing the program
# on non-NixOS
wrapProgram $out/bin/qgis \
"''${gappsWrapperArgs[@]}" \
--prefix PATH : ${lib.makeBinPath [ grass ]}
'';

View File

@ -38,6 +38,8 @@
, pdal
, zstd
, makeWrapper
, wrapGAppsHook
, substituteAll
}:
let
@ -64,7 +66,9 @@ let
urllib3
pygments
pyqt5
sip_4
pyqt-builder
sip
setuptools
owslib
six
];
@ -116,29 +120,31 @@ in mkDerivation rec {
++ lib.optional withWebKit qtwebkit
++ pythonBuildInputs;
nativeBuildInputs = [ makeWrapper cmake flex bison ninja ];
nativeBuildInputs = [ makeWrapper wrapGAppsHook cmake flex bison ninja ];
# Force this pyqt_sip_dir variable to point to the sip dir in PyQt5
#
# TODO: Correct PyQt5 to provide the expected directory and fix
# build to use PYQT5_SIP_DIR consistently.
postPatch = ''
substituteInPlace cmake/FindPyQt5.py \
--replace 'sip_dir = cfg.default_sip_dir' 'sip_dir = "${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}/PyQt5/bindings"'
'';
patches = [
(substituteAll {
src = ./set-pyqt-package-dirs.patch;
pyQt5PackageDir = "${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}";
qsciPackageDir = "${py.pkgs.qscintilla-qt5}/${py.pkgs.python.sitePackages}";
})
];
cmakeFlags = [
"-DWITH_3D=True"
"-DWITH_PDAL=TRUE"
"-DPYQT5_SIP_DIR=${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}/PyQt5/bindings"
"-DQSCI_SIP_DIR=${py.pkgs.qscintilla-qt5}/${py.pkgs.python.sitePackages}/PyQt5/bindings"
] ++ lib.optional (!withWebKit) "-DWITH_QTWEBKIT=OFF"
++ lib.optional withGrass "-DGRASS_PREFIX7=${grass}/grass78";
dontWrapGApps = true; # wrapper params passed below
postFixup = lib.optionalString withGrass ''
# grass has to be availble on the command line even though we baked in
# the path at build time using GRASS_PREFIX
# the path at build time using GRASS_PREFIX.
# using wrapGAppsHook also prevents file dialogs from crashing the program
# on non-NixOS
wrapProgram $out/bin/qgis \
"''${gappsWrapperArgs[@]}" \
--prefix PATH : ${lib.makeBinPath [ grass ]}
'';

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "openasar";
version = "unstable-2022-06-27";
version = "unstable-2022-08-07";
src = fetchFromGitHub {
owner = "GooseMod";
repo = "OpenAsar";
rev = "6f7505fb91a07035d3661a3a7bf68b3018ddfd82";
sha256 = "2tb6OgYOnpryiyk7UH39sgzwtGJf9hNOpy74YqLI+Uk=";
rev = "e0870784008a584229d3094e0988f5da155c7fd7";
hash = "sha256-t0b2SFlDDBSQEkOCQME0jsLJ8NvoXROTxoQgnoXM9eQ=";
};
postPatch = ''

View File

@ -16,11 +16,11 @@
stdenv.mkDerivation rec {
pname = "fossil";
version = "2.18";
version = "2.19";
src = fetchurl {
url = "https://www.fossil-scm.org/home/tarball/version-${version}/fossil-${version}.tar.gz";
sha256 = "0iimdzfdl5687xyqxfadbn640x45n3933q1nfx7b32rl4v3vk778";
sha256 = "sha256-RZ9/7b4lRJqFVyfXwzutO8C/Pa6XPyxtvpp7gmEGoj4=";
};
nativeBuildInputs = [ installShellFiles tcl tcllib ];

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "berkeley_upc";
version = "2.22.0";
version = "2020.12.0";
src = fetchurl {
url = "http://upc.lbl.gov/download/release/berkeley_upc-${version}.tar.gz";
sha256 = "041l215x8z1cvjcx7kwjdgiaf9rl2d778k6kiv8q09bc68nwd44m";
sha256 = "sha256-JdpFORlXHpCQE+TivoQQnjQlxQN7C8BNfHvTOSwXbYQ=";
};
postPatch = ''

View File

@ -4,11 +4,11 @@
stdenv.mkDerivation rec {
pname = "gnatboot";
version = "11.2.0-4";
version = "12.1.0-2";
src = fetchzip {
url = "https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnat-${version}/gnat-x86_64-linux-${version}.tar.gz";
hash = "sha256-8fMBJp6igH+Md5jE4LMubDmC4GLt4A+bZG/Xcz2LAJQ=";
hash = "sha256-EPDPOOjWJnJsUM7GGxj20/PXumjfLoMIEFX1EDtvWVY=";
};
nativeBuildInputs = [

View File

@ -1,29 +1,40 @@
{ fetchFromGitHub, lib, stdenv, boost, cmake, libX11, libGL, libGLU }:
{ lib
, stdenv
, fetchFromGitHub
, boost
, cmake
, libGL
, libGLU
, libX11
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "coin";
version = "2020-12-07-unstable";
version = "unstable-2022-07-27";
src = fetchFromGitHub {
owner = "coin3d";
repo = "coin";
# rev = "Coin-${version}";
rev = "d5539998aff272b349590fe74d068659682ecd0d";
sha256 = "11jaz8p9nn8jpd6dsgwgkldwr7z829gyf64g014qyyh8l6p7jzzd";
rev = "4c67945a58d2a6e5adb4d2332ab08007769130ef";
hash = "sha256-lXS7GxtoPsZe2SJfr0uY99Q0ZtYG0KFlauY1PBuFleo=";
};
postPatch = ''
sed -i /cpack.d/d CMakeLists.txt
'';
nativeBuildInputs = [ cmake ];
buildInputs = [ boost libX11 libGL libGLU ];
buildInputs = [
boost
libGL
libGLU
libX11
];
cmakeFlags = [ "-DCOIN_USE_CPACK=OFF" ];
meta = with lib; {
homepage = "https://github.com/coin3d/coin";
license = licenses.bsd3;
description = "High-level, retained-mode toolkit for effective 3D graphics development";
license = licenses.bsd3;
maintainers = with maintainers; [ gebner viric ];
platforms = platforms.linux;
};
}
})

View File

@ -1,10 +1,7 @@
{ lib
, stdenv
, fetchFromGitLab
, docbook-xsl-nons
, gi-docgen
, gtk-doc
, libxml2
, meson
, ninja
, pkg-config
@ -37,10 +34,7 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = [
docbook-xsl-nons
gi-docgen
gtk-doc
libxml2 # for xmllint
meson
ninja
pkg-config
@ -99,8 +93,9 @@ stdenv.mkDerivation rec {
runHook postCheck
'';
postInstall = ''
mv $out/share/{doc,gtk-doc}
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
moveToOutput "share/doc" "$devdoc"
'';
passthru = {

View File

@ -10,15 +10,15 @@
buildPythonPackage rec {
pname = "azure-mgmt-monitor";
version = "4.0.0";
version = "4.0.1";
format = "setuptools";
disabled = pythonOlder "3.6";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
extension = "zip";
hash = "sha256-trIM1TL86kEg0ycPbTEThh0Bw/MtDyNE5U+X1biTSUE=";
hash = "sha256-rwUhKm9arvUW3EWAgv3+SdJYR54Hob2RmMDA6IjEpn4=";
};
propagatedBuildInputs = [

View File

@ -16,7 +16,7 @@
buildPythonPackage rec {
pname = "fakeredis";
version = "1.8.2";
version = "1.9.0";
format = "pyproject";
disabled = pythonOlder "3.7";
@ -25,7 +25,7 @@ buildPythonPackage rec {
owner = "dsoftwareinc";
repo = "fakeredis-py";
rev = "refs/tags/v${version}";
hash = "sha256-T8A6vU1m7nlHpTMC62IpgsQGh3ksuBp1ty4GkjN+2T8=";
hash = "sha256-HmCF1CNZOCdvuJv3qr3qAWIP9wYr6053FToQyJ1MpmQ=";
};
nativeBuildInputs = [

View File

@ -1,4 +1,4 @@
{ lib, stdenv, fetchPypi, buildPythonPackage, packaging, ply, toml }:
{ lib, stdenv, fetchPypi, buildPythonPackage, packaging, ply, toml, fetchpatch }:
buildPythonPackage rec {
pname = "sip";
@ -15,6 +15,13 @@ buildPythonPackage rec {
# and PIP will refuse to install the resulting wheel.
# remove once upstream fixes this, hopefully in 6.5.2
./fix-manylinux-version.patch
# fix issue triggered by QGIS 3.26.x, already fixed upstream
# in SIP, waiting for release past 6.6.2
(fetchpatch {
url = "https://riverbankcomputing.com/hg/sip/raw-diff/323d39a2d602/sipbuild/generator/parser/instantiations.py";
hash = "sha256-QEQuRzXA+wK9Dt22U/LgIwtherY9pJURGJYpKpJkiok=";
})
];
propagatedBuildInputs = [ packaging ply toml ];

View File

@ -7,14 +7,14 @@
buildPythonPackage rec {
pname = "stripe";
version = "4.0.1";
version = "4.0.2";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-eRwaQZwqlw+U6QnJqCypeihfrZuSwdETt8aNyICfdck=";
hash = "sha256-0IWz6UUKVVCRL0dsbbsrr6Ep5IXiTW9AR8UJT/CNXeI=";
};
propagatedBuildInputs = [

View File

@ -1,7 +1,7 @@
{ lib, buildGoModule, fetchFromGitLab, fetchurl }:
let
version = "15.2.0";
version = "15.2.1";
in
buildGoModule rec {
inherit version;
@ -14,13 +14,13 @@ buildGoModule rec {
"-X ${commonPackagePath}.REVISION=v${version}"
];
vendorSha256 = "sha256-0lp4Hd6j7G59clWxLfz8GfQEmpXmhuGzmgX2ws/VJeQ=";
vendorSha256 = "sha256-weT4Ed/VNTLovxUu2xCdHDqxY7v/5Wi3WsWlNDWYLLc=";
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "gitlab-runner";
rev = "v${version}";
sha256 = "sha256-1OflKz8AV8vSCkNBWGteIbXqbueAYNeAdp9nL3lgD8A=";
sha256 = "sha256-HaFxMNREHTtnbIuQUXCinhd4lhcnkLkacLczeySsfWQ=";
};
patches = [

View File

@ -13,15 +13,15 @@
rustPlatform.buildRustPackage rec {
pname = "cargo-geiger";
version = "0.11.3";
version = "0.11.4";
src = fetchFromGitHub {
owner = "rust-secure-code";
repo = pname;
rev = "${pname}-${version}";
sha256 = "sha256-xymDV/FHJABw1s94m8fl8D51PQwkF5dX+1XD96++RX8=";
sha256 = "sha256-GxlUhfzGIKHSTNcSme/mQums6yI4ev8V0L1bXAWt8pw=";
};
cargoSha256 = "sha256-2szgR9N3PGjGCIjqgtGNFSnzfSv57sGfslZ/PZyqMjI=";
cargoSha256 = "sha256-nCMUnhxNAMdk3Mi6eebrViQ1G5jcc3jk+CPRTUvcWRc=";
buildInputs = [ openssl ]
++ lib.optionals stdenv.isDarwin [ CoreFoundation Security libiconv curl ];

View File

@ -1,20 +1,30 @@
{ stdenv, lib, fetchurl, protobuf, protobufc, asciidoc, iptables
, xmlto, docbook_xsl, libpaper, libnl, libcap, libnet, pkg-config
, which, python3, makeWrapper, docbook_xml_dtd_45, perl }:
{ stdenv, lib, fetchFromGitHub, fetchpatch, protobuf, protobufc, asciidoc, iptables
, xmlto, docbook_xsl, libpaper, libnl, libcap, libnet, pkg-config, iproute2
, which, python3, makeWrapper, docbook_xml_dtd_45, perl, nftables, libbsd }:
stdenv.mkDerivation rec {
pname = "criu";
version = "3.15";
version = "3.17.1";
src = fetchurl {
url = "https://download.openvz.org/criu/${pname}-${version}.tar.bz2";
sha256 = "09d0j24x0cyc7wkgi7cnxqgfjk7kbdlm79zxpj8d356sa3rw2z24";
src = fetchFromGitHub {
owner = "checkpoint-restore";
repo = pname;
rev = "v${version}";
hash = "sha256-0B0cdX5bemy4glF9iWjrQIXIqilyYcCcAN9x4Jjrwzk=";
};
patches = [
# Fixes redefinition of rseq headers
(fetchpatch {
url = "https://github.com/checkpoint-restore/criu/commit/1e6e826ffb7ac05f33fa123051c2fc2ddf0f68ea.patch";
hash = "sha256-LJjk0jQ5v5wqeprvBMpxhjLXn7v+lSPldEGgazGUM44=";
})
];
enableParallelBuilding = true;
nativeBuildInputs = [ pkg-config docbook_xsl which makeWrapper docbook_xml_dtd_45 python3 python3.pkgs.wrapPython perl ];
buildInputs = [ protobuf protobufc asciidoc xmlto libpaper libnl libcap libnet iptables ];
propagatedBuildInputs = with python3.pkgs; [ python python3.pkgs.protobuf ];
buildInputs = [ protobuf asciidoc xmlto libpaper libnl libcap libnet nftables libbsd ];
propagatedBuildInputs = [ protobufc ] ++ (with python3.pkgs; [ python python3.pkgs.protobuf ]);
postPatch = ''
substituteInPlace ./Documentation/Makefile \
@ -39,7 +49,8 @@ stdenv.mkDerivation rec {
postFixup = ''
wrapProgram $out/bin/criu \
--prefix PATH : ${lib.makeBinPath [ iptables ]}
--set-default CR_IPTABLES ${iptables}/bin/iptables \
--set-default CR_IP_TOOL ${iproute2}/bin/ip
wrapPythonPrograms
'';

View File

@ -1,14 +1,14 @@
{ stdenv, lib, fetchFromGitHub, kernel, fetchurl }:
stdenv.mkDerivation rec {
name = "xone-${version}-${kernel.version}";
version = "0.2";
pname = "xone";
version = "0.3";
src = fetchFromGitHub {
owner = "medusalix";
repo = "xone";
rev = "v${version}";
sha256 = "sha256-m4305Xl5w4nyAVqubjwWsiyPDVtfGykjlSW2eKEytVk=";
repo = pname;
rev = "refs/tags/v${version}";
sha256 = "sha256-h+j4xCV9R6hp9trsv1NByh9m0UBafOz42ZuYUjclILE=";
};
setSourceRoot = ''

View File

@ -264,8 +264,8 @@ in
name = "moreheaders";
owner = "openresty";
repo = "headers-more-nginx-module";
rev = "e536bc595d8b490dbc9cf5999ec48fca3f488632";
sha256 = "sha256-gxLgs07XdFLcV4lv4JpiG2WGeLhBk13FRyzI0FOUjyA=";
rev = "v0.34";
sha256 = "sha256-LsrN/rF/p17x/80Jw9CgbmK69to6LycCM1OwTBojz8M=";
};
};

View File

@ -7,11 +7,11 @@
stdenv.mkDerivation rec {
pname = "siege";
version = "4.1.4";
version = "4.1.5";
src = fetchurl {
url = "http://download.joedog.org/siege/${pname}-${version}.tar.gz";
hash = "sha256-zkPfnH9rCBqE52CxaEMlGUebrrRXtHTAl6/6W0UqRcs=";
hash = "sha256-B235/Nt/Y8Rtb2YazCzMhAWTeunK5JCrip14qdLnuMs=";
};
NIX_LDFLAGS = lib.optionalString stdenv.isLinux [

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "svt-av1";
version = "1.0.0";
version = "1.2.0";
src = fetchFromGitLab {
owner = "AOMediaCodec";
repo = "SVT-AV1";
rev = "v${version}";
sha256 = "sha256-M5ErWB/klVijsF+GysR0b3m180h+O+10weKr1pTh8ow=";
sha256 = "sha256-mUWWYaExEd/WkIYb1d8AduioHBxGp4Nn7Trhe2vv6Z0=";
};
nativeBuildInputs = [ cmake nasm ];

View File

@ -11224,14 +11224,14 @@ let
IOAsync = buildPerlModule {
pname = "IO-Async";
version = "0.78";
version = "0.801";
src = fetchurl {
url = "mirror://cpan/authors/id/P/PE/PEVANS/IO-Async-0.78.tar.gz";
sha256 = "sha256-P7UYhZd7hiGKiepC84yvvOWCO/SPqqLRhaGGwqNYNmw=";
url = "mirror://cpan/authors/id/P/PE/PEVANS/IO-Async-0.801.tar.gz";
sha256 = "sha256-ieRZuhe3alcrsbS7EgMBVB6MyTJCQXFmI2tsbbDhybk=";
};
preCheck = "rm t/50resolver.t"; # this test fails with "Temporary failure in name resolution" in sandbox
propagatedBuildInputs = [ Future StructDumb ];
buildInputs = [ TestFatal TestIdentity TestMetricsAny TestRefcount ];
buildInputs = [ FutureIO TestFatal TestIdentity TestMetricsAny TestRefcount ];
meta = {
description = "Asynchronous event-driven programming";
license = with lib.licenses; [ artistic1 gpl1Plus ];