Merge master into staging-next

This commit is contained in:
github-actions[bot]
2024-07-14 06:01:12 +00:00
committed by GitHub
262 changed files with 1519 additions and 533 deletions
+4 -1
View File
@@ -283,7 +283,10 @@ in {
];
composerRepository = php.mkComposerRepository {
inherit (finalAttrs) src;
inherit (finalAttrs) pname version src;
composerNoDev = true;
composerNoPlugins = true;
composerNoScripts = true;
# Specifying a custom composer.lock since it is not present in the sources.
composerLock = ./composer.lock;
# The composer vendor hash
@@ -14,6 +14,8 @@
.Op Fl -root Ar root
.Op Fl -system Ar path
.Op Fl -flake Ar flake-uri
.Op Fl -file | f Ar path
.Op Fl -attr | A Ar attrPath
.Op Fl -impure
.Op Fl -channel Ar channel
.Op Fl -no-channel-copy
@@ -111,6 +113,32 @@ output named
.Ql nixosConfigurations. Ns Ar name Ns
\&.
.
.It Fl -file Ar path , Fl f Ar path
Enable and build the NixOS system from the specified file. The file must
evaluate to an attribute set, and it must contain a valid NixOS configuration
at attribute
.Va attrPath Ns
\&. This is useful for building a NixOS system from a nix file that is not
a flake or a NixOS configuration module. Attribute set a with valid NixOS
configuration can be made using
.Va nixos
function in nixpkgs or importing and calling
.Pa nixos/lib/eval-config.nix
from nixpkgs. If specified without
.Fl -attr
option, builds the configuration from the top-level
attribute of the file.
.
.It Fl -attr Ar attrPath , Fl A Ar attrPath
Enable and build the NixOS system from nix file and use the specified attribute
path from file specified by the
.Fl -file
option. If specified without
.Fl -file
option, uses
.Va [root] Ns Pa /etc/nixos/default.nix Ns
\&.
.
.It Fl -channel Ar channel
If this option is provided, do not copy the current
.Dq nixos
+58 -10
View File
@@ -17,6 +17,9 @@ mountPoint=/mnt
channelPath=
system=
verbosity=()
attr=
buildFile=
buildingAttribute=1
while [ "$#" -gt 0 ]; do
i="$1"; shift 1
@@ -41,6 +44,24 @@ while [ "$#" -gt 0 ]; do
flakeFlags=(--experimental-features 'nix-command flakes')
shift 1
;;
--file|-f)
if [ -z "$1" ]; then
log "$0: '$i' requires an argument"
exit 1
fi
buildFile="$1"
buildingAttribute=
shift 1
;;
--attr|-A)
if [ -z "$1" ]; then
log "$0: '$i' requires an argument"
exit 1
fi
attr="$1"
buildingAttribute=
shift 1
;;
--recreate-lock-file|--no-update-lock-file|--no-write-lock-file|--no-registries|--commit-lock-file)
lockFlags+=("$i")
;;
@@ -101,17 +122,30 @@ while [[ "$checkPath" != "/" ]]; do
checkPath="$(dirname "$checkPath")"
done
# Get the path of the NixOS configuration file.
if [[ -z $NIXOS_CONFIG ]]; then
NIXOS_CONFIG=$mountPoint/etc/nixos/configuration.nix
fi
if [[ ${NIXOS_CONFIG:0:1} != / ]]; then
echo "$0: \$NIXOS_CONFIG is not an absolute path"
# Verify that user is not trying to use attribute building and flake
# at the same time
if [[ -z $buildingAttribute && -n $flake ]]; then
echo "$0: '--flake' cannot be used with '--file' or '--attr'"
exit 1
fi
if [[ -n $flake ]]; then
# Get the path of the NixOS configuration file.
if [[ -z $flake && -n $buildingAttribute ]]; then
if [[ -z $NIXOS_CONFIG ]]; then
NIXOS_CONFIG=$mountPoint/etc/nixos/configuration.nix
fi
if [[ ${NIXOS_CONFIG:0:1} != / ]]; then
echo "$0: \$NIXOS_CONFIG is not an absolute path"
exit 1
fi
elif [[ -z $buildingAttribute ]]; then
if [[ -z $buildFile ]]; then
buildFile="$mountPoint/etc/nixos/default.nix"
elif [[ -d $buildFile ]]; then
buildFile="$buildFile/default.nix"
fi
elif [[ -n $flake ]]; then
if [[ $flake =~ ^(.*)\#([^\#\"]*)$ ]]; then
flake="${BASH_REMATCH[1]}"
flakeAttr="${BASH_REMATCH[2]}"
@@ -129,11 +163,16 @@ if [[ -n $flake ]]; then
flake=$(nix "${flakeFlags[@]}" flake metadata --json "${extraBuildFlags[@]}" "${lockFlags[@]}" -- "$flake" | jq -r .url)
fi
if [[ ! -e $NIXOS_CONFIG && -z $system && -z $flake ]]; then
if [[ ! -e $NIXOS_CONFIG && -z $system && -z $flake && -n $buildingAttribute ]]; then
echo "configuration file $NIXOS_CONFIG doesn't exist"
exit 1
fi
if [[ ! -z $buildingAttribute && -e $buildFile && -z $system ]]; then
echo "configuration file $buildFile doesn't exist"
exit 1
fi
# A place to drop temporary stuff.
tmpdir="$(mktemp -d -p "$mountPoint")"
trap 'rm -rf $tmpdir' EXIT
@@ -163,11 +202,20 @@ fi
# Build the system configuration in the target filesystem.
if [[ -z $system ]]; then
outLink="$tmpdir/system"
if [[ -z $flake ]]; then
if [[ -z $flake && -n $buildingAttribute ]]; then
echo "building the configuration in $NIXOS_CONFIG..."
nix-build --out-link "$outLink" --store "$mountPoint" "${extraBuildFlags[@]}" \
--extra-substituters "$sub" \
'<nixpkgs/nixos>' -A system -I "nixos-config=$NIXOS_CONFIG" "${verbosity[@]}"
elif [[ -z $buildingAttribute ]]; then
if [[ -n $attr ]]; then
echo "building the configuration in $buildFile and attribute $attr..."
else
echo "building the configuration in $buildFile..."
fi
nix-build --out-link "$outLink" --store "$mountPoint" "${extraBuildFlags[@]}" \
--extra-substituters "$sub" \
"$buildFile" -A "${attr:+$attr.}config.system.build.toplevel" "${verbosity[@]}"
else
echo "building the flake in $flake..."
nix "${flakeFlags[@]}" build "$flake#$flakeAttr.config.system.build.toplevel" \
+5 -2
View File
@@ -16,14 +16,14 @@ import ./make-test-python.nix ({ pkgs, ... }: {
# list probes
machine.succeed("bpftrace -l")
# simple BEGIN probe (user probe on bpftrace itself)
print(machine.succeed("bpftrace -e 'BEGIN { print(\"ok\"); exit(); }'"))
print(machine.succeed("bpftrace -e 'BEGIN { print(\"ok\\n\"); exit(); }'"))
# tracepoint
print(machine.succeed("bpftrace -e 'tracepoint:syscalls:sys_enter_* { print(probe); exit() }'"))
# kprobe
print(machine.succeed("bpftrace -e 'kprobe:schedule { print(probe); exit() }'"))
# BTF
print(machine.succeed("bpftrace -e 'kprobe:schedule { "
" printf(\"tgid: %d\", ((struct task_struct*) curtask)->tgid); exit() "
" printf(\"tgid: %d\\n\", ((struct task_struct*) curtask)->tgid); exit() "
"}'"))
# module BTF (bpftrace >= 0.17)
# test is currently disabled on aarch64 as kfunc does not work there yet
@@ -32,5 +32,8 @@ import ./make-test-python.nix ({ pkgs, ... }: {
"bpftrace -e 'kfunc:nft_trans_alloc_gfp { "
" printf(\"portid: %d\\n\", args->ctx->portid); "
"} BEGIN { exit() }'"))
# glibc includes
print(machine.succeed("bpftrace -e '#include <errno.h>\n"
"BEGIN { printf(\"ok %d\\n\", EINVAL); exit(); }'"))
'';
})
+132 -5
View File
@@ -11,7 +11,7 @@ let
# The configuration to install.
makeConfig = { bootLoader, grubDevice, grubIdentifier, grubUseEfi
, extraConfig, forceGrubReinstallCount ? 0, flake ? false
, extraConfig, forceGrubReinstallCount ? 0, withTestInstrumentation ? true
, clevisTest
}:
pkgs.writeText "configuration.nix" ''
@@ -19,7 +19,7 @@ let
{ imports =
[ ./hardware-configuration.nix
${if flake
${if !withTestInstrumentation
then "" # Still included, but via installer/flake.nix
else "<nixpkgs/nixos/modules/testing/test-instrumentation.nix>"}
];
@@ -81,7 +81,7 @@ let
# partitions and filesystems.
testScriptFun = { bootLoader, createPartitions, grubDevice, grubUseEfi, grubIdentifier
, postInstallCommands, postBootCommands, extraConfig
, testSpecialisationConfig, testFlakeSwitch, clevisTest, clevisFallbackTest
, testSpecialisationConfig, testFlakeSwitch, testByAttrSwitch, clevisTest, clevisFallbackTest
, disableFileSystems
}:
let
@@ -316,6 +316,119 @@ let
target.shutdown()
''
+ optionalString testByAttrSwitch ''
with subtest("Configure system with attribute set"):
target.succeed("""
mkdir /root/my-config
mv /etc/nixos/hardware-configuration.nix /root/my-config/
rm /etc/nixos/configuration.nix
""")
target.copy_from_host_via_shell(
"${makeConfig {
inherit bootLoader grubDevice grubIdentifier grubUseEfi extraConfig clevisTest;
forceGrubReinstallCount = 1;
withTestInstrumentation = false;
}}",
"/root/my-config/configuration.nix",
)
target.copy_from_host_via_shell(
"${./installer/byAttrWithChannel.nix}",
"/root/my-config/default.nix",
)
with subtest("Switch to attribute set based config with channels"):
target.succeed("nixos-rebuild switch --file /root/my-config/default.nix")
target.shutdown()
${startTarget}
target.succeed("""
rm /root/my-config/default.nix
""")
target.copy_from_host_via_shell(
"${./installer/byAttrNoChannel.nix}",
"/root/my-config/default.nix",
)
target.succeed("""
pkgs=$(readlink -f /nix/var/nix/profiles/per-user/root/channels)/nixos
if ! [[ -e $pkgs/pkgs/top-level/default.nix ]]; then
echo 1>&2 "$pkgs does not seem to be a nixpkgs source. Please fix the test so that pkgs points to a nixpkgs source.";
exit 1;
fi
sed -e s^@nixpkgs@^$pkgs^ -i /root/my-config/default.nix
""")
with subtest("Switch to attribute set based config without channels"):
target.succeed("nixos-rebuild switch --file /root/my-config/default.nix")
target.shutdown()
${startTarget}
with subtest("nix-channel command is not available anymore"):
target.succeed("! which nix-channel")
with subtest("builtins.nixPath is now empty"):
target.succeed("""
[[ "[ ]" == "$(nix-instantiate builtins.nixPath --eval --expr)" ]]
""")
with subtest("<nixpkgs> does not resolve"):
target.succeed("""
! nix-instantiate '<nixpkgs>' --eval --expr
""")
with subtest("Evaluate attribute set based config in fresh env without nix-channel"):
target.succeed("nixos-rebuild switch --file /root/my-config/default.nix")
with subtest("Evaluate attribute set based config in fresh env without channel profiles"):
target.succeed("""
(
exec 1>&2
mkdir -p /root/restore
mv -v /root/.nix-channels /root/restore/
mv -v ~/.nix-defexpr /root/restore/
mkdir -p /root/restore/channels
mv -v /nix/var/nix/profiles/per-user/root/channels* /root/restore/channels/
)
""")
target.succeed("nixos-rebuild switch --file /root/my-config/default.nix")
''
+ optionalString (testByAttrSwitch && testFlakeSwitch) ''
with subtest("Restore channel profiles"):
target.succeed("""
(
exec 1>&2
mv -v /root/restore/.nix-channels /root/
mv -v /root/restore/.nix-defexpr ~/.nix-defexpr
mv -v /root/restore/channels/* /nix/var/nix/profiles/per-user/root/
rm -vrf /root/restore
)
""")
with subtest("Restore /etc/nixos"):
target.succeed("""
mv -v /root/my-config/hardware-configuration.nix /etc/nixos/
""")
target.copy_from_host_via_shell(
"${makeConfig {
inherit bootLoader grubDevice grubIdentifier grubUseEfi extraConfig clevisTest;
forceGrubReinstallCount = 1;
}}",
"/etc/nixos/configuration.nix",
)
with subtest("Restore /root/my-config"):
target.succeed("""
rm -vrf /root/my-config
""")
''
+ optionalString (testByAttrSwitch && !testFlakeSwitch) ''
target.shutdown()
''
+ optionalString testFlakeSwitch ''
${startTarget}
@@ -330,7 +443,7 @@ let
"${makeConfig {
inherit bootLoader grubDevice grubIdentifier grubUseEfi extraConfig clevisTest;
forceGrubReinstallCount = 1;
flake = true;
withTestInstrumentation = false;
}}",
"/root/my-config/configuration.nix",
)
@@ -399,6 +512,7 @@ let
, enableOCR ? false, meta ? {}
, testSpecialisationConfig ? false
, testFlakeSwitch ? false
, testByAttrSwitch ? false
, clevisTest ? false
, clevisFallbackTest ? false
, disableFileSystems ? false
@@ -533,7 +647,7 @@ let
testScript = testScriptFun {
inherit bootLoader createPartitions postInstallCommands postBootCommands
grubDevice grubIdentifier grubUseEfi extraConfig
testSpecialisationConfig testFlakeSwitch clevisTest clevisFallbackTest
testSpecialisationConfig testFlakeSwitch testByAttrSwitch clevisTest clevisFallbackTest
disableFileSystems;
};
};
@@ -589,6 +703,15 @@ let
testFlakeSwitch = true;
};
simple-test-config-by-attr = simple-test-config // {
testByAttrSwitch = true;
};
simple-test-config-from-by-attr-to-flake = simple-test-config // {
testByAttrSwitch = true;
testFlakeSwitch = true;
};
simple-uefi-grub-config = {
createPartitions = ''
installer.succeed(
@@ -782,6 +905,10 @@ in {
switchToFlake = makeInstallerTest "switch-to-flake" simple-test-config-flake;
switchToByAttr = makeInstallerTest "switch-to-by-attr" simple-test-config-by-attr;
switchFromByAttrToFlake = makeInstallerTest "switch-from-by-attr-to-flake" simple-test-config-from-by-attr-to-flake;
# Test cloned configurations with the simple grub configuration
simpleSpecialised = makeInstallerTest "simpleSpecialised" (simple-test-config // specialisation-test-extraconfig);
+18
View File
@@ -0,0 +1,18 @@
# This file gets copied into the installation
let
nixpkgs = "@nixpkgs@";
in
{ evalConfig ? import "${nixpkgs}/nixos/lib/eval-config.nix" }:
evalConfig {
modules = [
./configuration.nix
( import "${nixpkgs}/nixos/modules/testing/test-instrumentation.nix" )
{
# Disable nix channels
nix.channel.enable = false;
}
];
}
@@ -0,0 +1,10 @@
# This file gets copied into the installation
{ evalConfig ? import <nixpkgs/nixos/lib/eval-config.nix> }:
evalConfig {
modules = [
./configuration.nix
( import <nixpkgs/nixos/modules/testing/test-instrumentation.nix> )
];
}
+1 -1
View File
@@ -5,7 +5,7 @@ python3Packages.buildPythonApplication rec {
version = "1.1.5";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-wg9zcOKfZQRhpyA1Cu5wvdwKpmrlcr2m9mrqBHgUXAQ=";
hash = "sha256-wg9zcOKfZQRhpyA1Cu5wvdwKpmrlcr2m9mrqBHgUXAQ=";
};
propagatedBuildInputs = with python3Packages; [ mopidy pykka ];
+1 -1
View File
@@ -6,7 +6,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-PEAXnapiyxozijR053I7zQYRYLeDOV719L0QbO2r4r4=";
hash = "sha256-PEAXnapiyxozijR053I7zQYRYLeDOV719L0QbO2r4r4=";
};
propagatedBuildInputs = [
+1 -1
View File
@@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit version;
pname = "Mopidy-Jellyfin";
sha256 = "sha256-cZliraTxTAJ2dXaxttWI3x4wCkmEhEo33GTNtAYwgTc=";
hash = "sha256-cZliraTxTAJ2dXaxttWI3x4wCkmEhEo33GTNtAYwgTc=";
};
propagatedBuildInputs = [ mopidy python3Packages.unidecode python3Packages.websocket-client ];
+1 -1
View File
@@ -6,7 +6,7 @@ pythonPackages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-RlCC+39zC+LeA/QDWPHYx5TrEwOgVrnvcH1Xg12qSLE=";
hash = "sha256-RlCC+39zC+LeA/QDWPHYx5TrEwOgVrnvcH1Xg12qSLE=";
};
propagatedBuildInputs = with pythonPackages; [ mopidy configobj ];
+1 -1
View File
@@ -6,7 +6,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-CeLMRqj9cwBvQrOx7XHVV8MjDjwOosONVlsN2o+vTVM=";
hash = "sha256-CeLMRqj9cwBvQrOx7XHVV8MjDjwOosONVlsN2o+vTVM=";
};
propagatedBuildInputs = [ mopidy ];
+1 -1
View File
@@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit version;
pname = "Mopidy-MPRIS";
sha256 = "sha256-rHQgNIyludTEL7RDC8dIpyGTMOt1Tazn6i/orKlSP4U=";
hash = "sha256-rHQgNIyludTEL7RDC8dIpyGTMOt1Tazn6i/orKlSP4U=";
};
propagatedBuildInputs = [
+1 -1
View File
@@ -7,7 +7,7 @@ pythonPackages.buildPythonApplication rec {
src = fetchPypi {
inherit version;
pname = "Mopidy-Muse";
sha256 = "sha256-CEPAPWtMrD+HljyqBB6EAyGVeOjzkvVoEywlE4XEJGs=";
hash = "sha256-CEPAPWtMrD+HljyqBB6EAyGVeOjzkvVoEywlE4XEJGs=";
};
propagatedBuildInputs = [
+1 -1
View File
@@ -6,7 +6,7 @@ pythonPackages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-8FT4O4k0wEsdHA1vJaOW9UamJ3QLyO47HwL5XcSU3Pc=";
hash = "sha256-8FT4O4k0wEsdHA1vJaOW9UamJ3QLyO47HwL5XcSU3Pc=";
};
propagatedBuildInputs = [
+1 -1
View File
@@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit version;
pname = "Mopidy-Podcast";
sha256 = "sha256-grNPVEVM2PlpYhBXe6sabFjWVB9+q+apIRjcHUxH52A=";
hash = "sha256-grNPVEVM2PlpYhBXe6sabFjWVB9+q+apIRjcHUxH52A=";
};
propagatedBuildInputs = [
@@ -5,7 +5,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-XJMkiQR1FoeIPfAuJT22kfYJdc/ABuxExELh0EEev8k=";
hash = "sha256-XJMkiQR1FoeIPfAuJT22kfYJdc/ABuxExELh0EEev8k=";
};
preBuild = ''
@@ -87,6 +87,7 @@
glib
, gobject-introspection
, wrapGAppsHook3
, writeText
, # sniprun dependencies
bashInteractive
, coreutils
@@ -1482,12 +1483,19 @@
install -Dt $out/bin ftplugin/evinceSync.py
'';
};
# the vim plugin expects evinceSync.py to be a python file, but it is a C wrapper
pythonWrapper = writeText "evinceSync-wrapper.py" /* python */ ''
#!${python3}/bin/python3
import os
import sys
os.execv("${svedbackend}/bin/evinceSync.py", sys.argv)
'';
in
super.sved.overrideAttrs {
preferLocalBuild = true;
postPatch = ''
rm ftplugin/evinceSync.py
ln -s ${svedbackend}/bin/evinceSync.py ftplugin/evinceSync.py
install -m 544 ${pythonWrapper} ftplugin/evinceSync.py
'';
meta = {
description = "synctex support between vim/neovim and evince";
+8 -8
View File
@@ -30,21 +30,21 @@ let
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
sha256 = {
x86_64-linux = "0bzf0mx1rgndpdd4a97kr01xsgsgp86gyscg8js2cvaad4265bmv";
x86_64-darwin = "1m7f91cqbbv00difvfqld8fqkj9kvyddihmzi3zyzn4gfkv8gvf0";
aarch64-linux = "09mxsk4qkq34yg1sd67cdasfxwdhdzcfij50fv1nl3kdjzp2i0iz";
aarch64-darwin = "1jxjzfz6gr0pcp2anwjqwm38ma2i8fnzf5zpscfdklrlbhf438k2";
armv7l-linux = "1yp4npgw4dkx8halsr1vm5ll1w4phx67dwd4krz1914mddx7x2kr";
x86_64-linux = "0ighhwwmc8cxdabq2wkzzr21sv6zaj90pnqi2cy8krfwm88w6jc0";
x86_64-darwin = "1fbpw0xib9vm47ab028frg789vgmkpwcdxs8m2in7ywrckl6xycy";
aarch64-linux = "0n0f518xl1fh17llsd159ldi50z2vihkghfq7plfnbnngpf0swy9";
aarch64-darwin = "03v3869yblx03j0c3njlvg7qgdmqrg8jvj9s1iyhqw1xpb2lc41c";
armv7l-linux = "12dv0vqqzriqr8ysjjx62hy2b41dky2p0rcr11wznqi259bryckr";
}.${system} or throwSystem;
in
callPackage ./generic.nix rec {
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.91.0";
version = "1.91.1";
pname = "vscode" + lib.optionalString isInsiders "-insiders";
# This is used for VS Code - Remote SSH test
rev = "ea1445cc7016315d0f5728f8e8b12a45dc0a7286";
rev = "f1e16e1e6214d7c44d078b1f0607b2388f29d729";
executableName = "code" + lib.optionalString isInsiders "-insiders";
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
@@ -68,7 +68,7 @@ in
src = fetchurl {
name = "vscode-server-${rev}.tar.gz";
url = "https://update.code.visualstudio.com/commit:${rev}/server-linux-x64/stable";
sha256 = "08mgfrwiji16q8x8kwmw3pdmb0325hfr9pd2fa5g5kmy9gnfw38v";
sha256 = "0k38pkfz9kpbpx0n50iq531mrm7qxqggks092cs4zicv815jk8wg";
};
};
+1 -1
View File
@@ -26,7 +26,7 @@ buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-3fVo+B71SsJs+XF4+FWH2nz0ouTnpC/02fXYr1C9Jrk=";
hash = "sha256-3fVo+B71SsJs+XF4+FWH2nz0ouTnpC/02fXYr1C9Jrk=";
};
# Relax requirements from "==" to ">="
+1 -1
View File
@@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-AjE+1MkSkZOtEUPKEPBKQ3n+aOB8cwsorBpL5skNskU=";
hash = "sha256-AjE+1MkSkZOtEUPKEPBKQ3n+aOB8cwsorBpL5skNskU=";
};
doCheck = false; # there are no tests
+1 -1
View File
@@ -6,7 +6,7 @@ python3.pkgs.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-WfMKDaPD2j6wT02+GO5HY5E7aF2Z7IQY/VdKiMSRxJA=";
hash = "sha256-WfMKDaPD2j6wT02+GO5HY5E7aF2Z7IQY/VdKiMSRxJA=";
};
nativeBuildInputs = with python3.pkgs; [
@@ -6,7 +6,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-L/hu0mYCAxHkp5me96a6HlEY6QsuJDESpTNhlzVRHWs=";
hash = "sha256-L/hu0mYCAxHkp5me96a6HlEY6QsuJDESpTNhlzVRHWs=";
};
nativeBuildInputs = [ python3Packages.setuptools-scm ];
@@ -6,7 +6,7 @@ buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-82P9tE3jiUlKBGZCiWDoL+9VJ06Bc+If+aMfcEEU90U=";
hash = "sha256-82P9tE3jiUlKBGZCiWDoL+9VJ06Bc+If+aMfcEEU90U=";
};
propagatedBuildInputs = with python3Packages; [ screeninfo paramiko pynput libevdev ];
+1 -1
View File
@@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-RBs28FC7f82DrxRcmvTP9nljVpm7tjrGuvr05l32hDM=";
hash = "sha256-RBs28FC7f82DrxRcmvTP9nljVpm7tjrGuvr05l32hDM=";
};
doCheck = false; # there are no tests
@@ -35,14 +35,14 @@ https://github.com/NixOS/nixpkgs/issues/199596#issuecomment-1310136382 */
}:
stdenv.mkDerivation (finalAttrs: {
version = "1.5.4";
version = "1.5.5";
pname = "syncthingtray";
src = fetchFromGitHub {
owner = "Martchus";
repo = "syncthingtray";
rev = "v${finalAttrs.version}";
hash = "sha256-3Z9heiQiuYzWtReKs/XeA+ENRKgxHR74ANzrDcdyjh4=";
hash = "sha256-NfFB+4cqe1rHqc+w0Enl9h33gPjJ3CfrFpyOhysmz0Q=";
};
buildInputs = [
+10 -7
View File
@@ -7,16 +7,16 @@
, libappindicator-gtk3
, libnotify
, librsvg
, python3
, python3Packages
, udisks2
, wrapGAppsHook3
, testers
, udiskie
}:
python3.pkgs.buildPythonApplication rec {
python3Packages.buildPythonApplication rec {
pname = "udiskie";
version = "2.5.2";
version = "2.5.3";
pyproject = true;
@@ -24,7 +24,7 @@ python3.pkgs.buildPythonApplication rec {
owner = "coldfix";
repo = "udiskie";
rev = "v${version}";
hash = "sha256-r9ppuWYY3e2thsfFh4ooOgfqNvmCVw7fS0SpJCJcysQ=";
hash = "sha256-asrVQR0d+5l76COsXp88srtGZQHU+AwbP3HwDiwRlnE=";
};
patches = [
@@ -39,10 +39,13 @@ python3.pkgs.buildPythonApplication rec {
asciidoc # Man page
gobject-introspection
installShellFiles
python3.pkgs.setuptools
wrapGAppsHook3
];
build-system = with python3Packages; [
setuptools
];
dontWrapGApps = true;
buildInputs = [
@@ -53,7 +56,7 @@ python3.pkgs.buildPythonApplication rec {
udisks2
];
propagatedBuildInputs = with python3.pkgs; [
dependencies = with python3Packages; [
docopt
keyutils
pygobject3
@@ -76,7 +79,7 @@ python3.pkgs.buildPythonApplication rec {
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
nativeCheckInputs = with python3.pkgs; [
nativeCheckInputs = with python3Packages; [
pytestCheckHook
];
+1 -1
View File
@@ -14,7 +14,7 @@ buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-qDfY6GWnDQ44Sh540xQzDwANEI+mLjpy2a7G3sfKIzw=";
hash = "sha256-qDfY6GWnDQ44Sh540xQzDwANEI+mLjpy2a7G3sfKIzw=";
};
propagatedBuildInputs = [
@@ -6,7 +6,7 @@ python3.pkgs.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-/HkLJ0dRXdGcZz77uOTJrOX0xc3DH45/k9xmfesuxsg=";
hash = "sha256-/HkLJ0dRXdGcZz77uOTJrOX0xc3DH45/k9xmfesuxsg=";
};
propagatedBuildInputs = with python3.pkgs; [ python-dateutil tornado python-daemon boto3 tenacity ];
@@ -12,7 +12,7 @@ buildPythonApplication rec {
version = "2.1.1";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-21gd6sPYCZll3Q2O7kucTRhXvc5byXeQr50+1bZVT3M=";
hash = "sha256-21gd6sPYCZll3Q2O7kucTRhXvc5byXeQr50+1bZVT3M=";
};
buildInputs = [python.pkgs.sphinx];
@@ -1,5 +1,4 @@
{ lib
, stdenv
, fetchFromGitHub
, python310Packages
, testers
@@ -10,13 +9,13 @@ python310Packages.buildPythonApplication rec {
pname = "stig";
# This project has a different concept for pre release / alpha,
# Read the project's README for details: https://github.com/rndusr/stig#stig
version = "0.12.8a0";
version = "0.12.10a0";
src = fetchFromGitHub {
owner = "rndusr";
repo = "stig";
rev = "v${version}";
sha256 = "sha256-vfmuA6DqWvAygcS6N+qX1h+Ag+P4eOwm41DhAFZR3r8=";
sha256 = "sha256-lSFI4/DxWl17KFgLXZ7c5nW/e5IUGN7s8Gm6wTM5ZWg=";
};
propagatedBuildInputs = with python310Packages; [
@@ -58,12 +57,13 @@ python310Packages.buildPythonApplication rec {
version = "stig version ${version}";
};
# https://github.com/rndusr/stig/issues/214#issuecomment-1995651219
dontUsePytestCheck = true;
meta = with lib; {
description = "TUI and CLI for the BitTorrent client Transmission";
homepage = "https://github.com/rndusr/stig";
license = licenses.gpl3Plus;
# Too many broken tests, and it fails to launch
broken = true;
maintainers = with maintainers; [ ];
};
}
+1 -1
View File
@@ -27,7 +27,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-XIPzpVIttTgP34rbA705vFoRZE9dj8Of3BR23DbpQPk=";
hash = "sha256-XIPzpVIttTgP34rbA705vFoRZE9dj8Of3BR23DbpQPk=";
};
nativeBuildInputs = [
+1 -1
View File
@@ -12,7 +12,7 @@ python3.pkgs.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-2QCFUV7FpNiqGPHLXAMHJcnCn9FOk1mx12P9ZDtvVvg=";
hash = "sha256-2QCFUV7FpNiqGPHLXAMHJcnCn9FOk1mx12P9ZDtvVvg=";
};
buildInputs = [
@@ -6,7 +6,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-79xNPzYP1j71sU5wZM5e2xTqQExqQEdxXPxbk4T/Scw=";
hash = "sha256-79xNPzYP1j71sU5wZM5e2xTqQExqQEdxXPxbk4T/Scw=";
};
nativeBuildInputs = with python3Packages; [
@@ -9,7 +9,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-lJOWtoApqK9AWrIMkBkCNB72vVXH/sbatxFB1j1AaxE=";
hash = "sha256-lJOWtoApqK9AWrIMkBkCNB72vVXH/sbatxFB1j1AaxE=";
};
propagatedBuildInputs = with python3Packages; [
@@ -10,6 +10,7 @@
, CoreServices
, Foundation
, Security
, testers
}:
let
@@ -31,14 +32,14 @@ let
{ name = "contrib"; path = "${src}/contrib"; }
];
in
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: rec {
pname = "p4";
version = "2022.2.2407422";
version = "2024.1/2596294";
src = fetchurl {
# Upstream replaces minor versions, so use archived URL.
url = "https://web.archive.org/web/20230512173806id_/https://ftp.perforce.com/perforce/r22.2/bin.tools/p4source.tgz";
sha256 = "4355375def3f3d2256d4a92ac1b9960173e7aa97404346c0c74caf23a0905e1b";
url = "https://web.archive.org/web/20240526153453id_/https://ftp.perforce.com/perforce/r24.1/bin.tools/p4source.tgz";
sha256 = "sha256-6+DOJPeVzP4x0UsN9MlZRAyusapBTICX0BuyvVBQBC8=";
};
nativeBuildInputs = [ jam ];
@@ -92,11 +93,16 @@ stdenv.mkDerivation rec {
runHook preInstall
mkdir -p $bin/bin $dev $out
cp bin.unix/p4 $bin/bin
cp -r bin.unix/p4api-${version}/include $dev
cp -r bin.unix/p4api-${version}/lib $out
cp -r bin.unix/p4api-*/include $dev
cp -r bin.unix/p4api-*/lib $out
runHook postInstall
'';
passthru.tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "p4 -V";
};
meta = with lib; {
description = "Perforce Helix Core command-line client and APIs";
homepage = "https://www.perforce.com";
@@ -105,4 +111,4 @@ stdenv.mkDerivation rec {
platforms = platforms.unix;
maintainers = with maintainers; [ corngood impl ];
};
}
})
@@ -2,28 +2,30 @@
, fetchurl
, lib
, callPackage
, libsForQt5
, qt6Packages
}:
let
# Upstream replaces minor versions, so use archived URLs.
srcs = {
"x86_64-linux" = fetchurl {
url = "https://web.archive.org/web/20220902181457id_/https://ftp.perforce.com/perforce/r22.2/bin.linux26x86_64/p4v.tgz";
sha256 = "8fdade4aafe25f568a61cfd80823aa90599c2a404b7c6b4a0862c84b07a9f8d2";
srcs = rec {
x86_64-linux = fetchurl {
url = "https://web.archive.org/web/20240612193642id_/https://ftp.perforce.com/perforce/r24.2/bin.linux26x86_64/p4v.tgz";
sha256 = "sha256-HA99fHcmgli/vVnr0M8ZJEsaZ2ZLzpG3M8S77oDYJyE=";
};
"x86_64-darwin" = fetchurl {
url = "https://web.archive.org/web/20220902194716id_/https://ftp.perforce.com/perforce/r22.2/bin.macosx1015x86_64/P4V.dmg";
sha256 = "c4a9460c0f849be193c68496c500f8a785c740f5bea5b5e7f617969c20be3cd7";
aarch64-darwin = fetchurl {
url = "https://web.archive.org/web/20240612194532id_/https://ftp.perforce.com/perforce/r24.2/bin.macosx12u/P4V.dmg";
sha256 = "sha256-PS7gfDdWspyL//YWLkrsGi5wh6SIeAry2yef1/V0d6o=";
};
# this is universal
x86_64-darwin = aarch64-darwin;
};
mkDerivation =
if stdenv.isDarwin then callPackage ./darwin.nix { }
else libsForQt5.callPackage ./linux.nix { };
else qt6Packages.callPackage ./linux.nix { };
in mkDerivation {
pname = "p4v";
version = "2022.2.2336701";
version = "2024.2/2606884";
src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
@@ -17,8 +17,12 @@
, libxcb
, libxkbcommon
, nss
, qtbase
, qtmultimedia
, qtsvg
, qttools
, qtwebengine
, qtwebview
, xcbutilimage
, xcbutilkeysyms
, xcbutilrenderutil
@@ -50,8 +54,12 @@ let
libxcb
libxkbcommon
nss
qtbase
qtmultimedia
qtsvg
qttools
qtwebengine
qtwebview
xcbutilimage
xcbutilkeysyms
xcbutilrenderutil
@@ -63,10 +71,19 @@ let
# Don't wrap the Qt apps; upstream has its own wrapper scripts.
dontWrapQtApps = true;
postPatch = ''
rm -r lib/plugins lib/libQt6* lib/libssl* lib/libicu* lib/libcrypto*
'';
installPhase = ''
mkdir -p $out
cp -r bin lib $out
addAutoPatchelfSearchPath $out/lib
ln -s "${qtbase}/${qtbase.qtPluginPrefix}" $out/lib/plugins
'';
preFixup = ''
patchelf --clear-symbol-version close $out/bin/p4{v,admin}.bin
'';
};
in
@@ -11,7 +11,7 @@ buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-OwREpfWaP0tdAjMGjGpVIAQn8rlTTjSfT+0t5g/2yjQ=";
hash = "sha256-OwREpfWaP0tdAjMGjGpVIAQn8rlTTjSfT+0t5g/2yjQ=";
};
propagatedBuildInputs = [ ffmpeg ffmpeg-progress-yield ];
@@ -22,7 +22,7 @@ buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-EANaNmvD8hcdGB2aoGemKvA9syS1VvIqGsP1jk0b+lE=";
hash = "sha256-EANaNmvD8hcdGB2aoGemKvA9syS1VvIqGsP1jk0b+lE=";
};
nativeBuildInputs = [
@@ -6,7 +6,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-zJdn/Q6r60FQgfehtQfeDkmN0Rz3ZaqgNhiWvjyQFy0=";
hash = "sha256-zJdn/Q6r60FQgfehtQfeDkmN0Rz3ZaqgNhiWvjyQFy0=";
};
propagatedBuildInputs = [ i3ipc ];
@@ -6,7 +6,7 @@ buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-13FKRvEE4vHq5G51G1UyBnfNiWeS9Q/SYCG16E1Sn4c=";
hash = "sha256-13FKRvEE4vHq5G51G1UyBnfNiWeS9Q/SYCG16E1Sn4c=";
};
propagatedBuildInputs = [ click psutil xprop natsort i3ipc xdotool importlib-metadata ];
@@ -1,6 +1,8 @@
{ lib
, runtimeShell
, stdenvNoCC
, callPackage
, substituteAll
, writeShellScript
, srcOnly
, linkFarmFromDrvs
@@ -202,131 +204,48 @@ stdenvNoCC.mkDerivation (args // {
passthru = {
inherit nuget-source;
} // lib.optionalAttrs (!lib.isDerivation nugetDeps) {
fetch-deps =
let
flags = dotnetFlags ++ dotnetRestoreFlags;
runtimeIds =
if runtimeId != null
then [ runtimeId ]
else map (system: dotnetCorePackages.systemToDotnetRid system) platforms;
defaultDepsFile =
# Wire in the nugetDeps file such that running the script with no args
# runs it agains the correct deps file by default.
# Note that toString is necessary here as it results in the path at
# eval time (i.e. to the file in your local Nixpkgs checkout) rather
# than the Nix store path of the path after it's been imported.
if lib.isPath nugetDepsFile && !lib.hasPrefix "${builtins.storeDir}/" (toString nugetDepsFile)
then toString nugetDepsFile
else ''$(mktemp -t "${pname}-deps-XXXXXX.nix")'';
in
writeShellScript "fetch-${pname}-deps" ''
set -euo pipefail
export PATH="${lib.makeBinPath [ coreutils runtimeShellPackage dotnet-sdk (nuget-to-nix.override { inherit dotnet-sdk; }) ]}"
for arg in "$@"; do
case "$arg" in
--keep-sources|-k)
keepSources=1
shift
;;
--help|-h)
echo "usage: $0 [--keep-sources] [--help] <output path>"
echo " <output path> The path to write the lockfile to. A temporary file is used if this is not set"
echo " --keep-sources Dont remove temporary directories upon exit, useful for debugging"
echo " --help Show this help message"
exit
;;
esac
done
if [[ ''${TMPDIR:-} == /run/user/* ]]; then
# /run/user is usually a tmpfs in RAM, which may be too small
# to store all downloaded dotnet packages
unset TMPDIR
fi
export tmp=$(mktemp -td "deps-${pname}-XXXXXX")
HOME=$tmp/home
exitTrap() {
test -n "''${ranTrap-}" && return
ranTrap=1
if test -n "''${keepSources-}"; then
echo -e "Path to the source: $tmp/src\nPath to the fake home: $tmp/home"
else
rm -rf "$tmp"
fi
# Since mktemp is used this will be empty if the script didnt succesfully complete
if ! test -s "$depsFile"; then
rm -rf "$depsFile"
fi
}
trap exitTrap EXIT INT TERM
dotnetRestore() {
local -r project="''${1-}"
local -r rid="$2"
dotnet restore ''${project-} \
-p:ContinuousIntegrationBuild=true \
-p:Deterministic=true \
--packages "$tmp/nuget_pkgs" \
--runtime "$rid" \
--no-cache \
--force \
${lib.optionalString (!enableParallelBuilding) "--disable-parallel"} \
${lib.escapeShellArgs flags}
}
declare -a projectFiles=( ${lib.escapeShellArgs projectFiles} )
declare -a testProjectFiles=( ${lib.escapeShellArgs testProjectFiles} )
export DOTNET_NOLOGO=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
depsFile=$(realpath "''${1:-${defaultDepsFile}}")
echo Will write lockfile to "$depsFile"
mkdir -p "$tmp/nuget_pkgs"
storeSrc="${srcOnly args}"
src=$tmp/src
cp -rT "$storeSrc" "$src"
chmod -R +w "$src"
cd "$src"
echo "Restoring project..."
${dotnet-sdk}/bin/dotnet tool restore
cp -r $HOME/.nuget/packages/* $tmp/nuget_pkgs || true
for rid in "${lib.concatStringsSep "\" \"" runtimeIds}"; do
(( ''${#projectFiles[@]} == 0 )) && dotnetRestore "" "$rid"
for project in ''${projectFiles[@]-} ''${testProjectFiles[@]-}; do
dotnetRestore "$project" "$rid"
done
done
# Second copy, makes sure packages restored by ie. paket are included
cp -r $HOME/.nuget/packages/* $tmp/nuget_pkgs || true
echo "Succesfully restored project"
echo "Writing lockfile..."
excluded_sources="${lib.concatStringsSep " " sdkDeps}"
for excluded_source in ''${excluded_sources[@]}; do
ls "$excluded_source" >> "$tmp/excluded_list"
done
tmpFile="$tmp"/deps.nix
echo -e "# This file was automatically generated by passthru.fetch-deps.\n# Please dont edit it manually, your changes might get overwritten!\n" > "$tmpFile"
nuget-to-nix "$tmp/nuget_pkgs" "$tmp/excluded_list" >> "$tmpFile"
mv "$tmpFile" "$depsFile"
echo "Succesfully wrote lockfile to $depsFile"
'';
fetch-deps = let
flagsList = dotnetFlags ++ dotnetRestoreFlags;
flags = lib.concatStringsSep " " (map lib.escapeShellArg flagsList);
disableParallel =
lib.optionalString (!enableParallelBuilding) "--disable-parallel";
runtimeIdsList = if runtimeId != null then
[ runtimeId ]
else
map (system: dotnetCorePackages.systemToDotnetRid system) platforms;
runtimeIds =
lib.concatStringsSep " " (map lib.escapeShellArg runtimeIdsList);
defaultDepsFile =
# Wire in the nugetDeps file such that running the script with no args
# runs it agains the correct deps file by default.
# Note that toString is necessary here as it results in the path at
# eval time (i.e. to the file in your local Nixpkgs checkout) rather
# than the Nix store path of the path after it's been imported.
if lib.isPath nugetDepsFile
&& !lib.hasPrefix "${builtins.storeDir}/" (toString nugetDepsFile) then
toString nugetDepsFile
else
''$(mktemp -t "${pname}-deps-XXXXXX.nix")'';
storeSrc = srcOnly args;
projectFileStr = lib.escapeShellArg projectFiles;
testProjectFileStr = lib.escapeShellArg testProjectFiles;
path = lib.makeBinPath [
coreutils
runtimeShellPackage
dotnet-sdk
(nuget-to-nix.override { inherit dotnet-sdk; })
];
dotnetSdkPath = toString dotnet-sdk;
excludedSources =
lib.concatStringsSep " " (map lib.escapeShellArg sdkDeps);
in substituteAll {
name = "fetch-deps";
src = ./fetch-deps.sh;
isExecutable = true;
inherit pname defaultDepsFile runtimeIds storeSrc flags disableParallel
projectFileStr testProjectFileStr path dotnetSdkPath excludedSources
runtimeShell;
};
} // args.passthru or { };
meta = (args.meta or { }) // { inherit platforms; };
@@ -0,0 +1,111 @@
#! @runtimeShell@
# shellcheck shell=bash
set -euo pipefail
export PATH="@path@"
for arg in "$@"; do
case "$arg" in
--keep-sources|-k)
keepSources=1
shift
;;
--help|-h)
echo "usage: $0 [--keep-sources] [--help] <output path>"
echo " <output path> The path to write the lockfile to. A temporary file is used if this is not set"
echo " --keep-sources Dont remove temporary directories upon exit, useful for debugging"
echo " --help Show this help message"
exit
;;
esac
done
if [[ ${TMPDIR:-} == /run/user/* ]]; then
# /run/user is usually a tmpfs in RAM, which may be too small
# to store all downloaded dotnet packages
unset TMPDIR
fi
export tmp=$(mktemp -td "deps-@pname@-XXXXXX")
HOME=$tmp/home
exitTrap() {
test -n "${ranTrap-}" && return
ranTrap=1
if test -n "${keepSources-}"; then
echo -e "Path to the source: $tmp/src\nPath to the fake home: $tmp/home"
else
rm -rf "$tmp"
fi
# Since mktemp is used this will be empty if the script didnt succesfully complete
if ! test -s "$depsFile"; then
rm -rf "$depsFile"
fi
}
trap exitTrap EXIT INT TERM
dotnetRestore() {
local -r project="${1-}"
local -r rid="$2"
dotnet restore ${project-} \
-p:ContinuousIntegrationBuild=true \
-p:Deterministic=true \
--packages "$tmp/nuget_pkgs" \
--runtime "$rid" \
--no-cache \
--force \
@disableParallel@ \
@flags@
}
declare -a projectFiles=( @projectFileStr@ )
declare -a testProjectFiles=( @testProjectFileStr@ )
export DOTNET_NOLOGO=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
depsFile=$(realpath "${1:-@defaultDepsFile@}")
echo Will write lockfile to "$depsFile"
mkdir -p "$tmp/nuget_pkgs"
storeSrc="@storeSrc@"
src=$tmp/src
cp -rT "$storeSrc" "$src"
chmod -R +w "$src"
cd "$src"
echo "Restoring project..."
"@dotnetSdkPath@/bin/dotnet" tool restore
cp -r $HOME/.nuget/packages/* $tmp/nuget_pkgs || true
runtimeIds=(@runtimeIds@)
for rid in "${runtimeIds[@]}"; do
(( ${#projectFiles[@]} == 0 )) && dotnetRestore "" "$rid"
for project in ${projectFiles[@]-} ${testProjectFiles[@]-}; do
dotnetRestore "$project" "$rid"
done
done
# Second copy, makes sure packages restored by ie. paket are included
cp -r $HOME/.nuget/packages/* $tmp/nuget_pkgs || true
echo "Succesfully restored project"
echo "Writing lockfile..."
excluded_sources=( @excludedSources@ )
for excluded_source in ${excluded_sources[@]}; do
ls "$excluded_source" >> "$tmp/excluded_list"
done
tmpFile="$tmp"/deps.nix
echo -e "# This file was automatically generated by passthru.fetch-deps.\n# Please dont edit it manually, your changes might get overwritten!\n" > "$tmpFile"
nuget-to-nix "$tmp/nuget_pkgs" "$tmp/excluded_list" >> "$tmpFile"
mv "$tmpFile" "$depsFile"
echo "Succesfully wrote lockfile to $depsFile"
+3 -3
View File
@@ -6,7 +6,7 @@
}:
let
pname = "asm-lsp";
version = "0.6.0";
version = "0.7.1";
in
rustPlatform.buildRustPackage {
inherit pname version;
@@ -15,7 +15,7 @@ rustPlatform.buildRustPackage {
owner = "bergercookie";
repo = "asm-lsp";
rev = "v${version}";
hash = "sha256-vOkuTJFP2zme8S+u5j1TXt6BXnwtASRVH4Dre9g1dtk=";
hash = "sha256-nHLM4cwVo6esrrpr4s+DfJIUWWKSrYwWLOPC84tb68o=";
};
nativeBuildInputs = [
@@ -26,7 +26,7 @@ rustPlatform.buildRustPackage {
openssl
];
cargoHash = "sha256-lmOnBcLWfTCuQcPiRmPoFD/QvagfkApFP6/h1ot7atU=";
cargoHash = "sha256-CiHXfy8Xqrg8SAWA4nTHSGZKS0pGcoQem9kLRtTLpRs=";
# tests expect ~/.cache/asm-lsp to be writable
preCheck = ''
@@ -0,0 +1,59 @@
From 76950d08a3da13dd9e51b2fbef3532c3de79265b Mon Sep 17 00:00:00 2001
From: Dominique Martinet <asmadeus@codewreck.org>
Date: Fri, 14 Jun 2024 23:19:05 +0900
Subject: [PATCH] utils: fix kernel headers not found warning (#3242)
The code would make ksrc and kobj empty then try to print them,
this would always print empty strings.
Store is_dir() checks as bool instead and use these, the strings
cannot be empty if the check passed.
(cherry picked from commit f937803c2ad156ab90b9194965dbfb62bef1ff80)
---
(mostly to avoid conflicts with the next patch)
src/utils.cpp | 21 +++++++--------------
1 file changed, 7 insertions(+), 14 deletions(-)
diff --git a/src/utils.cpp b/src/utils.cpp
index bda722136588..c358a401fc83 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -738,15 +738,11 @@ std::tuple<std::string, std::string> get_kernel_dirs(
auto ksrc = kdir + "/source";
auto kobj = kdir + "/build";
- // if one of source/ or build/ is not present - try to use the other one for both.
- if (!is_dir(ksrc)) {
- ksrc = "";
- }
- if (!is_dir(kobj)) {
- kobj = "";
- }
- if (ksrc.empty() && kobj.empty())
- {
+ // if one of source/ or build/ is not present - try to use the other one for
+ // both.
+ auto has_ksrc = is_dir(ksrc);
+ auto has_kobj = is_dir(kobj);
+ if (!has_ksrc && !has_kobj) {
LOG(WARNING) << "Could not find kernel headers in " << ksrc << " or "
<< kobj
<< ". To specify a particular path to kernel headers, set the "
@@ -757,12 +753,9 @@ std::tuple<std::string, std::string> get_kernel_dirs(
"file at /sys/kernel/kheaders.tar.xz";
return std::make_tuple("", "");
}
- if (ksrc.empty())
- {
+ if (!has_ksrc) {
ksrc = kobj;
- }
- else if (kobj.empty())
- {
+ } else if (!has_kobj) {
kobj = ksrc;
}
--
2.45.2
@@ -0,0 +1,220 @@
From 5208c6275e65d94d0ed169ca2b253602c78c15a8 Mon Sep 17 00:00:00 2001
From: Dominique Martinet <asmadeus@codewreck.org>
Date: Fri, 14 Jun 2024 22:32:43 +0900
Subject: [PATCH] kernel headers: only print kheaders not found warning if
parsing failed
Current code would print kheaders not found as soon as the code has any
include, even if the include worked.
This delays printing the warning until we know if parsing succeeded or
not, and only prints it if parsing failed.
Also update the message to give clearer extraction instructions
---
CHANGELOG.md | 2 ++
src/CMakeLists.txt | 3 ++-
src/main.cpp | 40 ++++++++++++++++++++++++----------------
src/utils.cpp | 45 +++++++++++++++++++++------------------------
src/utils.h | 5 +++--
5 files changed, 52 insertions(+), 43 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a4aca8b6c85d..181c1bffc9f3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,8 @@ ## Unreleased
#### Added
#### Changed
+- Only print kernel headers not found message if parsing fails
+ - [#3265](https://github.com/bpftrace/bpftrace/pull/3265)
#### Deprecated
#### Removed
#### Fixed
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index eadb11207052..7b637835afd9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -90,11 +90,12 @@ endif()
if (KERNEL_HEADERS_DIR)
MESSAGE(STATUS "Using KERNEL_HEADERS_DIR=${KERNEL_HEADERS_DIR}")
- target_compile_definitions(runtime PUBLIC KERNEL_HEADERS_DIR="${KERNEL_HEADERS_DIR}")
endif()
+target_compile_definitions(runtime PUBLIC KERNEL_HEADERS_DIR="${KERNEL_HEADERS_DIR}")
if (NOT SYSTEM_INCLUDE_PATHS EQUAL "auto")
MESSAGE(STATUS "Using SYSTEM_INCLUDE_PATHS=${SYSTEM_INCLUDE_PATHS}")
endif()
+target_compile_definitions(runtime PUBLIC SYSTEM_INCLUDE_PATHS="${SYSTEM_INCLUDE_PATHS}")
execute_process(
COMMAND git describe --abbrev=4 --dirty --tags
diff --git a/src/main.cpp b/src/main.cpp
index 3c532b3aa767..7918f90b90ab 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -420,24 +420,20 @@ static std::optional<struct timespec> get_delta_taitime()
bool should_clang_parse = !(driver.root.get()->c_definitions.empty() &&
bpftrace.btf_set_.empty());
-
- if (should_clang_parse)
- {
+ if (should_clang_parse) {
ClangParser clang;
+ bool found_kernel_headers;
+ std::string ksrc, kobj;
+ struct utsname utsname;
std::vector<std::string> extra_flags;
- {
- struct utsname utsname;
- uname(&utsname);
- std::string ksrc, kobj;
- auto kdirs = get_kernel_dirs(utsname);
- ksrc = std::get<0>(kdirs);
- kobj = std::get<1>(kdirs);
+ uname(&utsname);
+ found_kernel_headers = get_kernel_dirs(utsname, ksrc, kobj);
- if (ksrc != "")
- {
- extra_flags = get_kernel_cflags(
- utsname.machine, ksrc, kobj, bpftrace.kconfig);
- }
+ if (found_kernel_headers)
+ {
+ extra_flags = get_kernel_cflags(
+ utsname.machine, ksrc, kobj, bpftrace.kconfig);
+ found_kernel_headers = true;
}
extra_flags.push_back("-include");
extra_flags.push_back(CLANG_WORKAROUNDS_H);
@@ -453,8 +449,20 @@ static std::optional<struct timespec> get_delta_taitime()
extra_flags.push_back(file);
}
- if (!clang.parse(driver.root.get(), bpftrace, extra_flags))
+ if (!clang.parse(driver.root.get(), bpftrace, extra_flags)) {
+ if (!found_kernel_headers) {
+ LOG(WARNING)
+ << "Could not find kernel headers in " << ksrc << " / " << kobj
+ << ". To specify a particular path to kernel headers, set the env "
+ << "variables BPFTRACE_KERNEL_SOURCE and, optionally, "
+ << "BPFTRACE_KERNEL_BUILD if the kernel was built in a different "
+ << "directory than its source. You can also point the variable to "
+ << "a directory with built-in headers extracted from the following "
+ << "snippet:\nmodprobe kheaders && tar -C <directory> -xf "
+ << "/sys/kernel/kheaders.tar.xz";
+ }
return nullptr;
+ }
}
err = driver.parse();
diff --git a/src/utils.cpp b/src/utils.cpp
index c358a401fc83..06d7fa95ff6e 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -700,8 +700,8 @@ bool is_dir(const std::string& path)
return std_filesystem::is_directory(buf, ec);
}
-// get_kernel_dirs returns {ksrc, kobj} - directories for pristine and
-// generated kernel sources.
+// get_kernel_dirs fills {ksrc, kobj} - directories for pristine and
+// generated kernel sources - and returns if they were found.
//
// When the kernel was built in its source tree ksrc == kobj, however when
// the kernel was build in a different directory than its source, ksrc != kobj.
@@ -714,44 +714,41 @@ bool is_dir(const std::string& path)
//
// /lib/modules/`uname -r`/build/
//
-// {"", ""} is returned if no trace of kernel headers was found at all.
-// Both ksrc and kobj are guaranteed to be != "", if at least some trace of kernel sources was found.
-std::tuple<std::string, std::string> get_kernel_dirs(
- const struct utsname &utsname)
+// false is returned if no trace of kernel headers was found at all, with the guessed
+// location set anyway for later warning.
+// Both ksrc and kobj are guaranteed to be != ""
+bool get_kernel_dirs(const struct utsname &utsname,
+ std::string &ksrc,
+ std::string &kobj)
{
-#ifdef KERNEL_HEADERS_DIR
- return {KERNEL_HEADERS_DIR, KERNEL_HEADERS_DIR};
-#endif
+ ksrc = kobj = std::string(KERNEL_HEADERS_DIR);
+ if (!ksrc.empty())
+ return true;
const char *kpath_env = ::getenv("BPFTRACE_KERNEL_SOURCE");
if (kpath_env)
{
+ ksrc = std::string(kpath_env);
const char *kpath_build_env = ::getenv("BPFTRACE_KERNEL_BUILD");
- if (!kpath_build_env)
+ if (kpath_build_env)
{
- kpath_build_env = kpath_env;
+ kobj = std::string(kpath_build_env);
+ } else {
+ kobj = ksrc;
}
- return std::make_tuple(kpath_env, kpath_build_env);
+ return true;
}
std::string kdir = std::string("/lib/modules/") + utsname.release;
- auto ksrc = kdir + "/source";
- auto kobj = kdir + "/build";
+ ksrc = kdir + "/source";
+ kobj = kdir + "/build";
// if one of source/ or build/ is not present - try to use the other one for
// both.
auto has_ksrc = is_dir(ksrc);
auto has_kobj = is_dir(kobj);
if (!has_ksrc && !has_kobj) {
- LOG(WARNING) << "Could not find kernel headers in " << ksrc << " or "
- << kobj
- << ". To specify a particular path to kernel headers, set the "
- "env variables BPFTRACE_KERNEL_SOURCE and, optionally, "
- "BPFTRACE_KERNEL_BUILD if the kernel was built in a "
- "different directory than its source. To create kernel "
- "headers run 'modprobe kheaders', which will create a tar "
- "file at /sys/kernel/kheaders.tar.xz";
- return std::make_tuple("", "");
+ return false;
}
if (!has_ksrc) {
ksrc = kobj;
@@ -759,7 +756,7 @@ std::tuple<std::string, std::string> get_kernel_dirs(
kobj = ksrc;
}
- return std::make_tuple(ksrc, kobj);
+ return true;
}
const std::string &is_deprecated(const std::string &str)
diff --git a/src/utils.h b/src/utils.h
index bc78bd2176b5..9bd5395eab22 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -186,8 +186,9 @@ std::vector<int> get_online_cpus();
std::vector<int> get_possible_cpus();
bool is_dir(const std::string &path);
bool file_exists_and_ownedby_root(const char *f);
-std::tuple<std::string, std::string> get_kernel_dirs(
- const struct utsname &utsname);
+bool get_kernel_dirs(const struct utsname &utsname,
+ std::string &ksrc,
+ std::string &kobj);
std::vector<std::string> get_kernel_cflags(const char *uname_machine,
const std::string &ksrc,
const std::string &kobj,
--
2.45.2
@@ -0,0 +1,94 @@
From c1737d4ab6ab263932caa9e3ac170ebe3e28d404 Mon Sep 17 00:00:00 2001
From: Dominique Martinet <asmadeus@codewreck.org>
Date: Fri, 14 Jun 2024 21:56:46 +0900
Subject: [PATCH] clang_parser system_include_paths: allow overriding at
compile time
While bpftrace depends on libclang it can be installed without a clang
frontend, so some distributions might want to make these paths fixed as
they are unlikely to change.
In particular, this is necessary to include system libraries as used by
older versions of tcpaccept.bt (they now no longer require these since
#3152, but that illustrate this was a recurring problem)
(cherry picked from commit 5bf5f86313600b16c8c23e03b31337941cbefdd0)
---
CMakeLists.txt | 2 ++
src/CMakeLists.txt | 4 +++-
src/clang_parser.cpp | 19 +++++++++++++++----
3 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cd620d0e56e5..ade33c503efb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,6 +21,8 @@ set(VENDOR_GTEST OFF CACHE BOOL "Clone gtest from github")
set(BUILD_FUZZ OFF CACHE BOOL "Build bpftrace for fuzzing")
set(USE_LIBFUZZER OFF CACHE BOOL "Use libfuzzer for fuzzing")
set(FUZZ_TARGET "codegen" CACHE STRING "Fuzzing target")
+set(KERNEL_HEADERS_DIR "" CACHE PATH "Hard-code kernel headers directory")
+set(SYSTEM_INCLUDE_PATHS "auto" CACHE STRING "Hard-code system include paths (colon separated, the default value \"auto\" queries clang at runtime)")
set(ENABLE_SKB_OUTPUT ON CACHE BOOL "Enable skb_output, will include libpcap")
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 88f5928c8a75..eadb11207052 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -88,11 +88,13 @@ endif()
# compile definitions
-set(KERNEL_HEADERS_DIR "" CACHE PATH "Hard-code kernel headers directory")
if (KERNEL_HEADERS_DIR)
MESSAGE(STATUS "Using KERNEL_HEADERS_DIR=${KERNEL_HEADERS_DIR}")
target_compile_definitions(runtime PUBLIC KERNEL_HEADERS_DIR="${KERNEL_HEADERS_DIR}")
endif()
+if (NOT SYSTEM_INCLUDE_PATHS EQUAL "auto")
+ MESSAGE(STATUS "Using SYSTEM_INCLUDE_PATHS=${SYSTEM_INCLUDE_PATHS}")
+endif()
execute_process(
COMMAND git describe --abbrev=4 --dirty --tags
diff --git a/src/clang_parser.cpp b/src/clang_parser.cpp
index 8b6689454267..9367e6692eb0 100644
--- a/src/clang_parser.cpp
+++ b/src/clang_parser.cpp
@@ -882,11 +882,9 @@ std::string ClangParser::get_arch_include_path()
return "/usr/include/" + std::string(utsname.machine) + "-linux-gnu";
}
-std::vector<std::string> ClangParser::system_include_paths()
+static void query_clang_include_dirs(std::vector<std::string> &result)
{
- std::vector<std::string> result;
- try
- {
+ try {
auto clang = "clang-" + std::to_string(LLVM_VERSION_MAJOR);
auto cmd = clang + " -Wp,-v -x c -fsyntax-only /dev/null 2>&1";
auto check = exec_system(cmd.c_str());
@@ -902,6 +900,19 @@ std::vector<std::string> ClangParser::system_include_paths()
catch (std::runtime_error &)
{ // If exec_system fails, just ignore it
}
+}
+
+std::vector<std::string> ClangParser::system_include_paths()
+{
+ std::vector<std::string> result;
+ std::istringstream lines(SYSTEM_INCLUDE_PATHS);
+ std::string line;
+ while (std::getline(lines, line, ':')) {
+ if (line == "auto")
+ query_clang_include_dirs(result);
+ else
+ result.push_back(trim(line));
+ }
if (result.empty())
result = { "/usr/local/include", "/usr/include" };
--
2.45.2
+14 -2
View File
@@ -1,6 +1,6 @@
{ lib, stdenv, fetchFromGitHub
, llvmPackages, elfutils, bcc
, libbpf, libbfd, libopcodes
, libbpf, libbfd, libopcodes, glibc
, cereal, asciidoctor
, cmake, pkg-config, flex, bison
, util-linux
@@ -41,9 +41,21 @@ stdenv.mkDerivation rec {
"-DBUILD_TESTING=FALSE"
"-DLIBBCC_INCLUDE_DIRS=${bcc}/include"
"-DINSTALL_TOOL_DOCS=OFF"
"-DUSE_SYSTEM_BPF_BCC=ON"
"-DSYSTEM_INCLUDE_PATHS=${glibc.dev}/include"
];
patches = [
# https://github.com/bpftrace/bpftrace/pull/3243 (merged)
./override-system-headers.patch
# https://github.com/bpftrace/bpftrace/pull/3152 (merged)
./tcp-bt-no-includes.patch
# https://github.com/bpftrace/bpftrace/pull/3262 (merged)
./runqlat-bt-no-includes.patch
# https://github.com/bpftrace/bpftrace/pull/3242 (merged)
./kheaders-not-found-message-fix.patch
# https://github.com/bpftrace/bpftrace/pull/3265
./kheaders-not-found-message-only-on-error.patch
];
# Pull BPF scripts into $PATH (next to their bcc program equivalents), but do
# not move them to keep `${pkgs.bpftrace}/share/bpftrace/tools/...` working.
@@ -0,0 +1,45 @@
From 9b5f22854297aabb924969c25af66461d8d2fcb9 Mon Sep 17 00:00:00 2001
From: Dominique Martinet <asmadeus@codewreck.org>
Date: Fri, 21 Jun 2024 21:02:09 +0900
Subject: [PATCH] tools/runqlat: provide TASK_RUNNING as a define
runqlat requires kernel headers to run even with BTF, just because of a
define.
TASK_RUNNING isn't part of the stable API but it's never changed in all
of the linux git history so let's pretend it's stable and just define
it.
If we find a way to handle kheaders again in the future we might want to
consider reverting this.
Fixes: #3255
(cherry picked from commit aa041d9d85f9ec11235c39fdcb5833412ec27083)
---
tools/runqlat.bt | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/tools/runqlat.bt b/tools/runqlat.bt
index 3d71b76062eb..1298f399aee7 100755
--- a/tools/runqlat.bt
+++ b/tools/runqlat.bt
@@ -11,7 +11,17 @@
* 17-Sep-2018 Brendan Gregg Created this.
*/
+#ifndef BPFTRACE_HAVE_BTF
#include <linux/sched.h>
+#else
+/*
+ * With BTF providing types, full headers are not needed.
+ * We only need to supply the preprocessor defines used in this script.
+ * TASK_RUNNING is not arch-dependant and has not changed in the linux
+ * git history (it is not part of the stable API though)
+ */
+#define TASK_RUNNING 0
+#endif
BEGIN
{
--
2.45.2
@@ -0,0 +1,114 @@
From ebb12512f6ea0a1113ad8ddf30db26128f7a3426 Mon Sep 17 00:00:00 2001
From: Dominique Martinet <asmadeus@codewreck.org>
Date: Sun, 23 Jun 2024 20:41:01 +0900
Subject: [PATCH] With BTF, users do not need libc headers installed for
AF_INET/AF_INET6
Signed-off-by: Bernhard Kaindl <bernhardkaindl7@gmail.com>
(cherry picked from commit c0b9d252a43f99b9091245dedb178a6874803306)
---
tools/tcpaccept.bt | 8 +++++++-
tools/tcpconnect.bt | 8 +++++++-
tools/tcpdrop.bt | 8 +++++++-
tools/tcplife.bt | 8 +++++++-
tools/tcpretrans.bt | 8 +++++++-
5 files changed, 35 insertions(+), 5 deletions(-)
diff --git a/tools/tcpaccept.bt b/tools/tcpaccept.bt
index 08e6af0158fc..cbffe36889ee 100755
--- a/tools/tcpaccept.bt
+++ b/tools/tcpaccept.bt
@@ -20,7 +20,13 @@
#include <linux/socket.h>
#include <net/sock.h>
#else
-#include <sys/socket.h>
+/*
+ * With BTF providing types, socket headers are not needed.
+ * We only need to supply the preprocessor defines in this script.
+ * AF_INET/AF_INET6 are part of the stable arch-independent Linux ABI
+ */
+#define AF_INET 2
+#define AF_INET6 10
#endif
BEGIN
diff --git a/tools/tcpconnect.bt b/tools/tcpconnect.bt
index 1ac1eb99e9ad..636337275cd8 100755
--- a/tools/tcpconnect.bt
+++ b/tools/tcpconnect.bt
@@ -22,7 +22,13 @@
#include <linux/socket.h>
#include <net/sock.h>
#else
-#include <sys/socket.h>
+/*
+ * BTF provides the types, we just need to define AF_INET and AF_INET6.
+ * These are Linux ABI defines, and are not architecture-specific.
+ * With BTF, this allows tcpconnect.bt to work without glibc headers:
+ */
+#define AF_INET 2 /* IPv4 */
+#define AF_INET6 10 /* IPv6 */
#endif
BEGIN
diff --git a/tools/tcpdrop.bt b/tools/tcpdrop.bt
index fd3e55f490bf..a56bf69fcc6c 100755
--- a/tools/tcpdrop.bt
+++ b/tools/tcpdrop.bt
@@ -24,7 +24,13 @@
#include <linux/socket.h>
#include <net/sock.h>
#else
-#include <sys/socket.h>
+/*
+ * With BTF providing types, socket headers are not needed.
+ * We only need to supply the preprocessor defines in this script.
+ * AF_INET/AF_INET6 are part of the stable arch-independent Linux ABI
+ */
+#define AF_INET 2
+#define AF_INET6 10
#endif
BEGIN
diff --git a/tools/tcplife.bt b/tools/tcplife.bt
index dd4c1d68284e..d5a09c4e5da9 100755
--- a/tools/tcplife.bt
+++ b/tools/tcplife.bt
@@ -19,7 +19,13 @@
#include <linux/socket.h>
#include <linux/tcp.h>
#else
-#include <sys/socket.h>
+/*
+ * With BTF providing types, socket headers are not needed.
+ * We only need to supply the preprocessor defines in this script.
+ * AF_INET/AF_INET6 are part of the stable arch-independent Linux ABI
+ */
+#define AF_INET 2
+#define AF_INET6 10
#endif
BEGIN
diff --git a/tools/tcpretrans.bt b/tools/tcpretrans.bt
index ee2975d6e545..32a11bfa81b2 100755
--- a/tools/tcpretrans.bt
+++ b/tools/tcpretrans.bt
@@ -21,7 +21,13 @@
#include <linux/socket.h>
#include <net/sock.h>
#else
-#include <sys/socket.h>
+/*
+ * With BTF providing types, socket headers are not needed.
+ * We only need to supply the preprocessor defines in this script.
+ * AF_INET/AF_INET6 are part of the stable arch-independent Linux ABI
+ */
+#define AF_INET 2
+#define AF_INET6 10
#endif
BEGIN
--
2.45.2
+1 -1
View File
@@ -32,7 +32,7 @@ python3Packages.buildPythonApplication rec {
substituteInPlace exe-thumbnailer.thumbnailer \
--replace Exec=exe-thumbnailer Exec=$out/bin/exe-thumbnailer
install -Dm644 exe-thumbnailer.thumbnailer $out/share/thumbnailers
install -Dm644 exe-thumbnailer.thumbnailer -t $out/share/thumbnailers
'';
meta = with lib; {
@@ -1,31 +1,42 @@
{ lib, buildGoModule, fetchFromGitHub, lazygit, testers }:
{
lib,
buildGoModule,
fetchFromGitHub,
lazygit,
testers,
}:
buildGoModule rec {
pname = "lazygit";
version = "0.42.0";
version = "0.43.1";
src = fetchFromGitHub {
owner = "jesseduffield";
repo = pname;
rev = "v${version}";
hash = "sha256-w5QL+CuMYyTTnNAfWF8jQuQWfjxaw7bANK69Dc+onGk=";
hash = "sha256-iFx/ffaijhOqEDRW1QVzhQMvSgnS4lKFOzq1YdlkUzc=";
};
vendorHash = null;
subPackages = [ "." ];
ldflags = [ "-X main.version=${version}" "-X main.buildSource=nix" ];
ldflags = [
"-X main.version=${version}"
"-X main.buildSource=nix"
];
passthru.tests.version = testers.testVersion {
package = lazygit;
};
passthru.tests.version = testers.testVersion { package = lazygit; };
meta = with lib; {
description = "Simple terminal UI for git commands";
homepage = "https://github.com/jesseduffield/lazygit";
changelog = "https://github.com/jesseduffield/lazygit/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ Br1ght0ne equirosa paveloom starsep ];
maintainers = with maintainers; [
Br1ght0ne
equirosa
paveloom
starsep
];
mainProgram = "lazygit";
};
}
+2 -2
View File
@@ -12,7 +12,7 @@
python3Packages.buildPythonApplication rec {
pname = "mousam";
version = "1.3.1";
version = "1.3.2";
# built with meson, not a python format
pyproject = false;
@@ -20,7 +20,7 @@ python3Packages.buildPythonApplication rec {
owner = "amit9838";
repo = "mousam";
rev = "refs/tags/v${version}";
hash = "sha256-QFEn7o3DRJyRLbEfb86AsS/ifYqzs3b5n2fZa/9Mm1A=";
hash = "sha256-1gFuMh5Poypmgyk2bpi9v6iK7WkO5KHLs+WsoDpJPeg=";
};
nativeBuildInputs = [
@@ -1,39 +1,27 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, pkg-config
, autoreconfHook
, ffmpeg
, poco
, ocl-icd
, opencl-clhpp
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
pkg-config,
ffmpeg,
poco,
ocl-icd,
opencl-clhpp,
}:
stdenv.mkDerivation rec {
pname = "sanjuuni";
version = "0.4";
version = "0.5";
src = fetchFromGitHub {
owner = "MCJack123";
repo = "sanjuuni";
rev = version;
sha256 = "sha256-wgtyrik4Z5AXd8MHkiMuxMpGh/xcEtNqivyhvL68aac=";
sha256 = "sha256-wJRPD4OWOTPiyDr9dYseRA7BI942HPfHONVJGTc/+wU=";
};
patches = [
(fetchpatch {
name = "build-with-cxx17.patch";
url = "https://github.com/MCJack123/sanjuuni/commit/f2164bc18935bcf63ee5b0a82087bc91f7fd258d.patch";
hash = "sha256-MjDeAiB3WkemCRYzgOHzHlbPUoI4DHEYe28xIIC+c7I=";
excludes = [ "configure" ]; # conflicts with release tarball; we manually regenerate this
})
];
nativeBuildInputs = [
pkg-config
autoreconfHook
];
nativeBuildInputs = [ pkg-config ];
buildInputs = [
ffmpeg
+3 -3
View File
@@ -9,13 +9,13 @@
rustPlatform.buildRustPackage rec {
pname = "shpool";
version = "0.6.2";
version = "0.6.3";
src = fetchFromGitHub {
owner = "shell-pool";
repo = "shpool";
rev = "v${version}";
hash = "sha256-6gfK71uM6IOP571Jzv3QPPKITaRteXyySZAstH0e+/M=";
hash = "sha256-RzXlwzCMZ5nDnNfQHzqY9Wu7gvG8y39yR2W3cfl208w=";
};
@@ -24,7 +24,7 @@ rustPlatform.buildRustPackage rec {
--replace-fail '/usr/bin/shpool' "$out/bin/shpool"
'';
cargoHash = "sha256-rJ+Avq/6y68xEcJ+EeFVhFaSWJyC+x0a46cclVsTE4Q=";
cargoHash = "sha256-Xb/ohGzgXR8B6Zfd2pUqgpxK6WQnk2xF4bbCyz1g2os=";
buildInputs = [
linux-pam
+1 -1
View File
@@ -11,7 +11,7 @@ python3.pkgs.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-Hm0BVF2RUsxDacsAB3MJtk1t9FYmBPjeb5JzwaLkZ14=";
hash = "sha256-Hm0BVF2RUsxDacsAB3MJtk1t9FYmBPjeb5JzwaLkZ14=";
};
nativeBuildInputs = with python3.pkgs; [
+48
View File
@@ -0,0 +1,48 @@
{ lib
, stdenv
, fetchFromGitHub
, mpi
, mpich
, tmux
, reptyr
, autoconf
, makeWrapper
}:
stdenv.mkDerivation rec {
pname = "tmpi";
version = "0-unstable-2022-02-22";
src = fetchFromGitHub {
owner = "Azrael3000";
repo = "tmpi";
rev = "f5a0fd8848b5c87b301edc8a23de9bfcfbd41918";
hash = "sha256-BaOaMpsF8ho8EIVuHfu4+CiVV3yLoC3tDkLq4R8BYBA=";
};
propagatedBuildInputs = [ mpi mpich reptyr tmux ];
buildInputs = [ autoconf makeWrapper ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
install -m755 tmpi $out/bin/tmpi
wrapProgram $out/bin/tmpi \
--prefix PATH : ${lib.makeBinPath [ mpi mpich tmux reptyr ]}
runHook postInstall
'';
meta = {
description = "Run a parallel command inside a split tmux window";
mainProgram = "tmpi";
homepage = "https://github.com/Azrael3000/tmpi";
license = lib.licenses.gpl2;
maintainers = with lib.maintainers; [ vasissualiyp ];
platforms = reptyr.meta.platforms;
};
}
@@ -6,7 +6,7 @@ python3Packages.buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-EEXRepj2iGRsp1jf8lTm6cA3RWSOBRoIGwOVw7d8gkw=";
hash = "sha256-EEXRepj2iGRsp1jf8lTm6cA3RWSOBRoIGwOVw7d8gkw=";
};
checkInputs = with python3Packages; [ pytestCheckHook ];
+1 -1
View File
@@ -11,7 +11,7 @@ buildPythonApplication rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-frIwZ21JzVgxRS+KouBjDShHCP1lCoUwwySy2oFGcJ8=";
hash = "sha256-frIwZ21JzVgxRS+KouBjDShHCP1lCoUwwySy2oFGcJ8=";
};
propagatedBuildInputs = [
@@ -20,7 +20,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-mKK1N1cTbMdNwpflniEB009tSPQfdBVrtsDeJruiqj8=";
hash = "sha256-mKK1N1cTbMdNwpflniEB009tSPQfdBVrtsDeJruiqj8=";
};
meta = with lib; {
@@ -17,7 +17,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-1kQced6YdC/wvegqFVhZfej4+4aemGXvKysKjejP13w=";
hash = "sha256-1kQced6YdC/wvegqFVhZfej4+4aemGXvKysKjejP13w=";
};
propagatedBuildInputs = [
@@ -15,7 +15,7 @@ buildPythonPackage rec {
pyproject = true;
src = fetchPypi {
inherit pname version;
sha256 = "sha256-B2b/9O2gVJjHUlN0pYeBDcwsy3slaAnd5SroeQqEU+s=";
hash = "sha256-B2b/9O2gVJjHUlN0pYeBDcwsy3slaAnd5SroeQqEU+s=";
};
nativeBuildInputs = [ poetry-core ];
propagatedBuildInputs = [
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit version;
pname = "aiorpcX";
sha256 = "sha256-WyMALxpNXTCF4xVVoHUZxe+NTEAHHrSZVW/9qBFIYKI=";
hash = "sha256-WyMALxpNXTCF4xVVoHUZxe+NTEAHHrSZVW/9qBFIYKI=";
};
propagatedBuildInputs = [ attrs ];
@@ -12,7 +12,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-G1r7uY9sTcrbLirmq5+plLu4wddfT6ltNA+UN65FRAY=";
hash = "sha256-G1r7uY9sTcrbLirmq5+plLu4wddfT6ltNA+UN65FRAY=";
};
pythonImportsCheck = [ "altgraph" ];
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-YSTqqd+Kv2QVlAjA0lf4IRx7rJ1DmvB0JIReBv3yZcM=";
hash = "sha256-YSTqqd+Kv2QVlAjA0lf4IRx7rJ1DmvB0JIReBv3yZcM=";
};
propagatedBuildInputs = [
@@ -25,7 +25,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-3YzBMnqmcTIpn5UOFg3SDTFLjPSE9UDw0i8fB8LYh2s=";
hash = "sha256-3YzBMnqmcTIpn5UOFg3SDTFLjPSE9UDw0i8fB8LYh2s=";
};
propagatedBuildInputs = [
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-7I+5BQO/gsvTREDkBfxrMblw3JPfY48S4KI4PCGPtFY=";
hash = "sha256-7I+5BQO/gsvTREDkBfxrMblw3JPfY48S4KI4PCGPtFY=";
};
propagatedBuildInputs = [ numpy ];
@@ -18,7 +18,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-BbbeYu4/KgpuaUHmkzt5K4AMPn9v/OL8MkvBmHV1c5M=";
hash = "sha256-BbbeYu4/KgpuaUHmkzt5K4AMPn9v/OL8MkvBmHV1c5M=";
};
propagatedBuildInputs = [
@@ -18,7 +18,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-XPUJzALti7QXTmgtuwVDhCA2luWz7zfykWEsJmpHzA4=";
hash = "sha256-XPUJzALti7QXTmgtuwVDhCA2luWz7zfykWEsJmpHzA4=";
};
nativeBuildInputs = [ setuptools ];
@@ -16,7 +16,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
extension = "zip";
sha256 = "sha256-2DedS7kZS4G3nlKE2HX6bfgHBzRvLLtcVJGiDzUmb9A=";
hash = "sha256-2DedS7kZS4G3nlKE2HX6bfgHBzRvLLtcVJGiDzUmb9A=";
};
propagatedBuildInputs = [
@@ -12,7 +12,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-gjFuFnm8aHnjyDMY0Ba1S3ySJf8IxEYt5IE+IgONX5Q=";
hash = "sha256-gjFuFnm8aHnjyDMY0Ba1S3ySJf8IxEYt5IE+IgONX5Q=";
};
propagatedBuildInputs = [ requests ];
@@ -13,7 +13,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "calmjs.types";
inherit version;
sha256 = "sha256-EGWYv9mx3RPqs9dnB5t3Bu3hiujL2y/XxyMP7JkjjAQ=";
hash = "sha256-EGWYv9mx3RPqs9dnB5t3Bu3hiujL2y/XxyMP7JkjjAQ=";
extension = "zip";
};
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-73NQiY1RMdBrMIlm/VTvHY4dCHL1pQoj6a48CWRos3o=";
hash = "sha256-73NQiY1RMdBrMIlm/VTvHY4dCHL1pQoj6a48CWRos3o=";
extension = "zip";
};
@@ -12,7 +12,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-qAbV254xihotP86YgAgXkWjn2xPl5VsZt5dj+budKYI=";
hash = "sha256-qAbV254xihotP86YgAgXkWjn2xPl5VsZt5dj+budKYI=";
};
nativeBuildInputs = [ setuptools ];
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-S9e90BtS6qMjFtYUmgC0w4IKQP8q1iR2tGqq5l2+n6o=";
hash = "sha256-S9e90BtS6qMjFtYUmgC0w4IKQP8q1iR2tGqq5l2+n6o=";
};
# tests only distributed upstream source, not PyPi
@@ -29,7 +29,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit version pname;
sha256 = "sha256-pEJkuz0wxKt2PkowmLE2YC+HPYa2ZiENK7FAW14Ec/Y=";
hash = "sha256-pEJkuz0wxKt2PkowmLE2YC+HPYa2ZiENK7FAW14Ec/Y=";
};
# removing optional dependency needing pyobjc
@@ -21,7 +21,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-GiWGXDTyCx3JWDB5jjSrZDbieLjgyA3HvwqzTF2wOrg=";
hash = "sha256-GiWGXDTyCx3JWDB5jjSrZDbieLjgyA3HvwqzTF2wOrg=";
};
patches = [
@@ -10,7 +10,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-ItDan9ajJ1tUySapyXsYD5JYqtZRE+oY8/7FLLrc2Bg=";
hash = "sha256-ItDan9ajJ1tUySapyXsYD5JYqtZRE+oY8/7FLLrc2Bg=";
};
# there are no tests
@@ -30,7 +30,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-IErym/Fd8G75NOa+xOyV87UNmEaB31XPvg8GWCSP7k8=";
hash = "sha256-IErym/Fd8G75NOa+xOyV87UNmEaB31XPvg8GWCSP7k8=";
};
patches = [
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-Kso2y64LXAzv7ZVlQW7EQjNXZ/sxRb/xHlhiL8ZTza0=";
hash = "sha256-Kso2y64LXAzv7ZVlQW7EQjNXZ/sxRb/xHlhiL8ZTza0=";
};
propagatedBuildInputs = [ django-classy-tags ];
@@ -16,7 +16,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-rQSnQPNYr5SyeNbKoFAbnGb2X/8utrfWLa8gu93hy2w=";
hash = "sha256-rQSnQPNYr5SyeNbKoFAbnGb2X/8utrfWLa8gu93hy2w=";
};
buildInputs = [
@@ -12,7 +12,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "Durus";
inherit version;
sha256 = "sha256:1gzxg43zawwgqjrfixvcrilwpikb1ix9b7710rsl5ffk7q50yi3c";
hash = "sha256:1gzxg43zawwgqjrfixvcrilwpikb1ix9b7710rsl5ffk7q50yi3c";
};
# Checks disabled due to missing python unittest framework 'sancho' in nixpkgs
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-MmxtzPMvH/PUyEiJOIWQd4REuhj3cK3uUvJHIcuXxMc=";
hash = "sha256-MmxtzPMvH/PUyEiJOIWQd4REuhj3cK3uUvJHIcuXxMc=";
};
propagatedBuildInputs = [
@@ -19,7 +19,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-qiSQAp3Zb0AVszPBgnqiH9bApNIjsA37D+kzuNCaURs=";
hash = "sha256-qiSQAp3Zb0AVszPBgnqiH9bApNIjsA37D+kzuNCaURs=";
};
nativeBuildInputs = [ elastic-transport ];
@@ -10,7 +10,7 @@ buildPythonPackage rec {
format = "setuptools";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-nXEul8E5WFm+E9K0V4jJGGzZfxwE2sUQOZEw8yhkM2c=";
hash = "sha256-nXEul8E5WFm+E9K0V4jJGGzZfxwE2sUQOZEw8yhkM2c=";
};
pythonImportsCheck = [ "em" ];
meta = with lib; {
@@ -18,7 +18,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-BqO3+o7ZAYewdqjbvlsbYqzulCAdPG6CL1X0SWAe9vI=";
hash = "sha256-BqO3+o7ZAYewdqjbvlsbYqzulCAdPG6CL1X0SWAe9vI=";
};
doCheck = false; # Tests are (i) not 3.x compatible, (ii) broken under 2.7
@@ -13,7 +13,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-IokMj9mCMsFMVFYO4CpZUB2i32cOamhS5u2mNkNjljo=";
hash = "sha256-IokMj9mCMsFMVFYO4CpZUB2i32cOamhS5u2mNkNjljo=";
};
propagatedBuildInputs = [
@@ -15,7 +15,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-IFB+246JQGofvXd15uKj2BpN1jPdUGsOnPDhYT6DHWo=";
hash = "sha256-IFB+246JQGofvXd15uKj2BpN1jPdUGsOnPDhYT6DHWo=";
};
propagatedBuildInputs = [
@@ -13,7 +13,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-2b1Rw7XpVqKlKZjDcIxNLHKfL8wxEYjh5dO5cmOTVGo=";
hash = "sha256-2b1Rw7XpVqKlKZjDcIxNLHKfL8wxEYjh5dO5cmOTVGo=";
};
propagatedBuildInputs = [
@@ -17,7 +17,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-8HXyPyj9In8JfDayEhYcbPAS4cbKr3/1PV1rsCzUK50=";
hash = "sha256-8HXyPyj9In8JfDayEhYcbPAS4cbKr3/1PV1rsCzUK50=";
};
postPatch = ''
@@ -17,7 +17,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-WrcXuXlTB3DBavtItQ0qmNI8Pp/jmFHc9rxNAYRaAqA=";
hash = "sha256-WrcXuXlTB3DBavtItQ0qmNI8Pp/jmFHc9rxNAYRaAqA=";
};
postPatch = ''
@@ -20,7 +20,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "FormEncode";
inherit version;
sha256 = "sha256-63TSIweKKM8BX6iJZsbjTy0Y11EnMY1lwUS+2a/EJj8=";
hash = "sha256-63TSIweKKM8BX6iJZsbjTy0Y11EnMY1lwUS+2a/EJj8=";
};
postPatch = ''
@@ -6,7 +6,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-5rkB01OdbD5Z4vA6dbqhWp5pGwqI1IlE4IE1dSdT1QE=";
hash = "sha256-5rkB01OdbD5Z4vA6dbqhWp5pGwqI1IlE4IE1dSdT1QE=";
};
# Project has no tests
@@ -13,7 +13,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-XDPxQmjfW4+hEH2FN4Fb5v67rW7FYFJNakBLd3jPa6Y=";
hash = "sha256-XDPxQmjfW4+hEH2FN4Fb5v67rW7FYFJNakBLd3jPa6Y=";
};
# No tests in archive
@@ -15,7 +15,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-LoztiQRADMk6t+hSCttpNM+mAe2sxvWT/Cy0RIZiu0c=";
hash = "sha256-LoztiQRADMk6t+hSCttpNM+mAe2sxvWT/Cy0RIZiu0c=";
};
propagatedBuildInputs = [ protobuf ];
@@ -15,7 +15,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "http_ece";
inherit version;
sha256 = "sha256-tZIPjvuOG1+wJXE+Ozb9pUM2JiAQY0sm3B+Y+F0es94=";
hash = "sha256-tZIPjvuOG1+wJXE+Ozb9pUM2JiAQY0sm3B+Y+F0es94=";
};
postPatch = ''
@@ -11,7 +11,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-C6rnFroAd5vOULBMwsLSyeSK5zPXOEgGHDSYt+Pm2dQ=";
hash = "sha256-C6rnFroAd5vOULBMwsLSyeSK5zPXOEgGHDSYt+Pm2dQ=";
};
doCheck = false;
@@ -12,7 +12,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-+lHr6GTqk1WyaDDif91qQdWli0GfqNS0fjuLgHGNbiE=";
hash = "sha256-+lHr6GTqk1WyaDDif91qQdWli0GfqNS0fjuLgHGNbiE=";
};
propagatedBuildInputs = [ numpy ];
@@ -14,7 +14,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
sha256 = "sha256-5OMlfvLPgaMzl4ek1c+STlTJHwlacj9tJYTa5h1Dlu0=";
hash = "sha256-5OMlfvLPgaMzl4ek1c+STlTJHwlacj9tJYTa5h1Dlu0=";
};
propagatedBuildInputs = [ numpy ];

Some files were not shown because too many files have changed in this diff Show More