diff options
author | github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> | 2023-10-19 06:01:20 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-19 06:01:20 +0000 |
commit | 0f332692123b80c607eecc778e97845646a8d0ae (patch) | |
tree | cdc05d531d20fcf7aa9558cff4498c7284527851 | |
parent | 4b9cf6ff6eebded20718a58eeb06fbdda16b2521 (diff) | |
parent | 458ef9126aa380996d77d44f53f886c2d8485f53 (diff) | |
download | nixlib-0f332692123b80c607eecc778e97845646a8d0ae.tar nixlib-0f332692123b80c607eecc778e97845646a8d0ae.tar.gz nixlib-0f332692123b80c607eecc778e97845646a8d0ae.tar.bz2 nixlib-0f332692123b80c607eecc778e97845646a8d0ae.tar.lz nixlib-0f332692123b80c607eecc778e97845646a8d0ae.tar.xz nixlib-0f332692123b80c607eecc778e97845646a8d0ae.tar.zst nixlib-0f332692123b80c607eecc778e97845646a8d0ae.zip |
Merge master into staging-next
22 files changed, 88 insertions, 982 deletions
diff --git a/nixos/tests/kernel-generic.nix b/nixos/tests/kernel-generic.nix index 6d883df14c64..352deb521a47 100644 --- a/nixos/tests/kernel-generic.nix +++ b/nixos/tests/kernel-generic.nix @@ -25,7 +25,6 @@ let }) args); kernels = pkgs.linuxKernel.vanillaPackages // { inherit (pkgs.linuxKernel.packages) - linux_4_14_hardened linux_4_19_hardened linux_5_4_hardened linux_5_10_hardened diff --git a/pkgs/applications/audio/ardour/6.nix b/pkgs/applications/audio/ardour/7.nix index 4e0508f00c57..ab9b2ebcd961 100644 --- a/pkgs/applications/audio/ardour/6.nix +++ b/pkgs/applications/audio/ardour/7.nix @@ -1,5 +1,7 @@ -{ lib, stdenv +{ lib +, stdenv , fetchgit +, fetchzip , alsa-lib , aubio , boost @@ -56,21 +58,40 @@ }: stdenv.mkDerivation rec { pname = "ardour"; - version = "6.9"; + version = "7.5"; # We can't use `fetchFromGitea` here, as attempting to fetch release archives from git.ardour.org # result in an empty archive. See https://tracker.ardour.org/view.php?id=7328 for more info. src = fetchgit { url = "git://git.ardour.org/ardour/ardour.git"; rev = version; - sha256 = "0vlcbd70y0an881zv87kc3akmaiz4w7whsy3yaiiqqjww35jg1mm"; + hash = "sha256-cmYt6fGYuuVs6YhAXaO9AG6TrYLDVUaE1/iC67rt76I="; + }; + + bundledContent = fetchzip { + url = "https://web.archive.org/web/20221026200824/http://stuff.ardour.org/loops/ArdourBundledMedia.zip"; + hash = "sha256-IbPQWFeyMuvCoghFl1ZwZNNcSvLNsH84rGArXnw+t7A="; + # archive does not contain a single folder at the root + stripRoot = false; }; patches = [ # AS=as in the environment causes build failure https://tracker.ardour.org/view.php?id=8096 ./as-flags.patch + ./default-plugin-search-paths.patch ]; + # Ardour's wscript requires git revision and date to be available. + # Since they are not, let's generate the file manually. + postPatch = '' + printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = "${version}"; const char* date = ""; }\n' > libs/ardour/revision.cc + sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript + patchShebangs ./tools/ + substituteInPlace libs/ardour/video_tools_paths.cc \ + --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg}/bin/ffmpeg");' \ + --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg}/bin/ffprobe");' + ''; + nativeBuildInputs = [ doxygen graphviz # for dot @@ -142,31 +163,23 @@ stdenv.mkDerivation rec { # removed because it fixes https://tracker.ardour.org/view.php?id=8161 and https://tracker.ardour.org/view.php?id=8437 # "--use-external-libs" - # Ardour's wscript requires git revision and date to be available. - # Since they are not, let's generate the file manually. - postPatch = '' - printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = "${version}"; const char* date = ""; }\n' > libs/ardour/revision.cc - sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript - patchShebangs ./tools/ - substituteInPlace libs/ardour/video_tools_paths.cc \ - --replace 'ffmpeg_exe = X_("");' 'ffmpeg_exe = X_("${ffmpeg}/bin/ffmpeg");' \ - --replace 'ffprobe_exe = X_("");' 'ffprobe_exe = X_("${ffmpeg}/bin/ffprobe");' - ''; - postInstall = '' # wscript does not install these for some reason install -vDm 644 "build/gtk2_ardour/ardour.xml" \ -t "$out/share/mime/packages" - install -vDm 644 "build/gtk2_ardour/ardour6.desktop" \ + install -vDm 644 "build/gtk2_ardour/ardour${lib.versions.major version}.desktop" \ -t "$out/share/applications" for size in 16 22 32 48 256 512; do install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \ - "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour6.png" + "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour${lib.versions.major version}.png" done install -vDm 644 "ardour.1"* -t "$out/share/man/man1" + + # install additional bundled beats, chords and progressions + cp -rp "${bundledContent}"/* "$out/share/ardour${lib.versions.major version}/media" '' + lib.optionalString videoSupport '' # `harvid` and `xjadeo` must be accessible in `PATH` for video to work. - wrapProgram "$out/bin/ardour6" \ + wrapProgram "$out/bin/ardour${lib.versions.major version}" \ --prefix PATH : "${lib.makeBinPath [ harvid xjadeo ]}" ''; @@ -185,7 +198,7 @@ stdenv.mkDerivation rec { ''; homepage = "https://ardour.org/"; license = licenses.gpl2Plus; - mainProgram = "ardour6"; + mainProgram = "ardour7"; platforms = platforms.linux; maintainers = with maintainers; [ goibhniu magnetophon mitchmindtree ]; }; diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix index ab9b2ebcd961..a0ca97a580ff 100644 --- a/pkgs/applications/audio/ardour/default.nix +++ b/pkgs/applications/audio/ardour/default.nix @@ -54,18 +54,19 @@ , vamp-plugin-sdk , wafHook , xjadeo +, optimize ? true # disable to print Lua DSP script output to stdout , videoSupport ? true }: stdenv.mkDerivation rec { pname = "ardour"; - version = "7.5"; + version = "8.0"; # We can't use `fetchFromGitea` here, as attempting to fetch release archives from git.ardour.org # result in an empty archive. See https://tracker.ardour.org/view.php?id=7328 for more info. src = fetchgit { url = "git://git.ardour.org/ardour/ardour.git"; rev = version; - hash = "sha256-cmYt6fGYuuVs6YhAXaO9AG6TrYLDVUaE1/iC67rt76I="; + hash = "sha256-ZL8aTq2OsCWwLUUx5XYbH4eRN+Xz+oMAj9IS07RfTag="; }; bundledContent = fetchzip { @@ -155,11 +156,10 @@ stdenv.mkDerivation rec { "--docs" "--freedesktop" "--no-phone-home" - "--optimize" "--ptformat" "--run-tests" "--test" - ]; + ] ++ lib.optional optimize "--optimize"; # removed because it fixes https://tracker.ardour.org/view.php?id=8161 and https://tracker.ardour.org/view.php?id=8437 # "--use-external-libs" diff --git a/pkgs/applications/emulators/86box/default.nix b/pkgs/applications/emulators/86box/default.nix index e14d3d0d7137..3083f2dccbe1 100644 --- a/pkgs/applications/emulators/86box/default.nix +++ b/pkgs/applications/emulators/86box/default.nix @@ -10,13 +10,13 @@ stdenv.mkDerivation rec { pname = "86Box"; - version = "4.0"; + version = "4.0.1"; src = fetchFromGitHub { owner = "86Box"; repo = "86Box"; rev = "v${version}"; - hash = "sha256-VTfYCVEbArcYVzh3NkX1yBXhtRnGZ/+khk0KG42fs24="; + hash = "sha256-1005Czm4CftL96G0+sKV1wx/ogXTKS0vQAzZHtIMlKA="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/misc/mediainfo-gui/default.nix b/pkgs/applications/misc/mediainfo-gui/default.nix index a830bffd7d72..d2e8c7aa59e9 100644 --- a/pkgs/applications/misc/mediainfo-gui/default.nix +++ b/pkgs/applications/misc/mediainfo-gui/default.nix @@ -6,11 +6,11 @@ let in stdenv.mkDerivation rec { pname = "mediainfo-gui"; - version = "23.07"; + version = "23.10"; src = fetchurl { url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; - hash = "sha256-ttfanimZX9NKIhAIJbhD50wyx7xnrbARZrG+7epJ9dA="; + hash = "sha256-t0OuJSHZ2Oi5pYUNfCop3jC6d321JzjQ37oXzARnduc="; }; nativeBuildInputs = [ autoreconfHook pkg-config ]; diff --git a/pkgs/applications/networking/ipget/default.nix b/pkgs/applications/networking/ipget/default.nix index 8ff8811381b4..c45398dfd4f4 100644 --- a/pkgs/applications/networking/ipget/default.nix +++ b/pkgs/applications/networking/ipget/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "ipget"; - version = "0.9.2"; + version = "0.10.0"; src = fetchFromGitHub { owner = "ipfs"; repo = "ipget"; rev = "v${version}"; - hash = "sha256-gcxfsP5awCCau1RqCuXKEdXC2jvpwsGsPkBsiaRlfBU="; + hash = "sha256-nT0bMy4L1T2rwE6g3Q4tNkmeP3XyPVxCV9yoGqMZjNs="; }; - vendorHash = "sha256-qCUa/XbfDrbwPSZywNVK/yn88C7Dsmz0cDTG2Z4ho0Y="; + vendorHash = "sha256-q8uwijh3y4l4ebFc3u5Z6TLUUiQqUK6Qpqq/m0kLF14="; postPatch = '' # main module (github.com/ipfs/ipget) does not contain package github.com/ipfs/ipget/sharness/dependencies diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix index 24d2e8dc217b..58221279e336 100644 --- a/pkgs/applications/virtualization/qemu/default.nix +++ b/pkgs/applications/virtualization/qemu/default.nix @@ -48,11 +48,11 @@ stdenv.mkDerivation (finalAttrs: { + lib.optionalString xenSupport "-xen" + lib.optionalString hostCpuOnly "-host-cpu-only" + lib.optionalString nixosTestRunner "-for-vm-tests"; - version = "8.1.1"; + version = "8.1.2"; src = fetchurl { url = "https://download.qemu.org/qemu-${finalAttrs.version}.tar.xz"; - hash = "sha256-N84u9eUA+3UvaBEXxotFEYMD6kmn4mvVQIDO1U+rfe8="; + hash = "sha256-VBUmp2RXbrSU0v9exGrrJT5i6ikDXRwjwKivTmzU8Ic="; }; depsBuildBuild = [ buildPackages.stdenv.cc ] diff --git a/pkgs/by-name/pr/presenterm/package.nix b/pkgs/by-name/pr/presenterm/package.nix new file mode 100644 index 000000000000..e3c42056a275 --- /dev/null +++ b/pkgs/by-name/pr/presenterm/package.nix @@ -0,0 +1,23 @@ +{ lib, fetchFromGitHub, rustPlatform }: + +rustPlatform.buildRustPackage rec { + pname = "presenterm"; + version = "0.2.0"; + + src = fetchFromGitHub { + owner = "mfontanini"; + repo = "presenterm"; + rev = version; + hash = "sha256-mNWnUUezKIffh5gMgMMdvApNZZTxxB8XrL0jFLyBxuk="; + }; + + cargoHash = "sha256-JLPJLhWN/yXpPIHa+FJ2aQ/GDUFKtZ7t+/8rvR8WNKM="; + + meta = with lib; { + description = "A terminal based slideshow tool"; + homepage = "https://github.com/mfontanini/presenterm"; + license = licenses.bsd2; + maintainers = with maintainers; [ mikaelfangel ]; + mainProgram = "presenterm"; + }; +} diff --git a/pkgs/by-name/ri/rimgo/package.nix b/pkgs/by-name/ri/rimgo/package.nix index 1f8ca9b8459d..73150d42b812 100644 --- a/pkgs/by-name/ri/rimgo/package.nix +++ b/pkgs/by-name/ri/rimgo/package.nix @@ -6,14 +6,14 @@ }: buildGoModule rec { pname = "rimgo"; - version = "1.2.0"; + version = "1.2.1"; src = fetchFromGitea { domain = "codeberg.org"; owner = "rimgo"; repo = "rimgo"; rev = "v${version}"; - hash = "sha256-C878ABs978viVtIuv3fPn2F2anOg2GB/+f5jaCO13tc="; + hash = "sha256-C6xixULZCDs+rIP7IWBVQNo34Yk/8j9ell2D0nUoHBg="; }; vendorHash = "sha256-u5N7aI9RIQ3EmiyHv0qhMcKkvmpp+5G7xbzdQcbhybs="; diff --git a/pkgs/development/libraries/libmediainfo/default.nix b/pkgs/development/libraries/libmediainfo/default.nix index f293d6fb6e10..86cf8dfb9e88 100644 --- a/pkgs/development/libraries/libmediainfo/default.nix +++ b/pkgs/development/libraries/libmediainfo/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "libmediainfo"; - version = "23.09"; + version = "23.10"; src = fetchurl { url = "https://mediaarea.net/download/source/libmediainfo/${version}/libmediainfo_${version}.tar.xz"; - hash = "sha256-HDJvFmVyrGwsHIim1Tr35FE4iEDH7r7scdWrv9G7LtM="; + hash = "sha256-duvlAuDzELVZ1d2Qcn2ar9X6uq7KNELzjmKd/AfaDSI="; }; nativeBuildInputs = [ autoreconfHook pkg-config ]; diff --git a/pkgs/development/libraries/lightstep-tracer-cpp/default.nix b/pkgs/development/libraries/lightstep-tracer-cpp/default.nix deleted file mode 100644 index 888e10d6a81d..000000000000 --- a/pkgs/development/libraries/lightstep-tracer-cpp/default.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ stdenv, lib, fetchFromGitHub, pkg-config, cmake -, opentracing-cpp, protobuf -, enableGrpc ? false, grpc, openssl -}: - -stdenv.mkDerivation rec { - pname = "lightstep-tracer-cpp"; - version = "0.14.0"; - - src = fetchFromGitHub { - owner = "lightstep"; - repo = pname; - rev = "v${version}"; - sha256 = "1xr11dm94qpbx3nxb7si7zy7hzg2akj01pyxkd8pzzbvmkmic16j"; - }; - - nativeBuildInputs = [ - cmake pkg-config - ]; - - buildInputs = [ - opentracing-cpp protobuf - ] ++ lib.optionals enableGrpc [ - grpc openssl - ]; - - cmakeFlags = lib.optionals (!enableGrpc) [ "-DWITH_GRPC=OFF" ]; - - meta = with lib; { - description = "Distributed tracing system built on top of the OpenTracing standard"; - homepage = "https://lightstep.com/"; - license = licenses.mit; - platforms = platforms.linux; - maintainers = with maintainers; [ ]; - }; -} diff --git a/pkgs/development/python-modules/pycatch22/default.nix b/pkgs/development/python-modules/pycatch22/default.nix index 5fea89e740a3..c82088d9adbe 100644 --- a/pkgs/development/python-modules/pycatch22/default.nix +++ b/pkgs/development/python-modules/pycatch22/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "pycatch22"; - version = "0.4.3"; + version = "0.4.4"; pyproject = true; disabled = pythonOlder "3.7"; @@ -17,7 +17,7 @@ buildPythonPackage rec { owner = "DynamicsAndNeuralSystems"; repo = "pycatch22"; rev = "refs/tags/v${version}"; - hash = "sha256-wjMklOzU9I3Y2HdZ+rOTiffoKda+6X9zwDsmB+HXrSY="; + hash = "sha256-l41LLo9k075EL8rV48bwa4Yw12XuqNJSDYtd9kyqS3U="; }; nativeBuildInputs = [ @@ -46,7 +46,7 @@ buildPythonPackage rec { description = "Python implementation of catch22"; homepage = "https://github.com/DynamicsAndNeuralSystems/pycatch22"; changelog = "https://github.com/DynamicsAndNeuralSystems/pycatch22/releases/tag/v${version}"; - license = licenses.gpl3Only; + license = licenses.gpl3Plus; maintainers = with maintainers; [ mbalatsko ]; }; } diff --git a/pkgs/development/tools/misc/runme/default.nix b/pkgs/development/tools/misc/runme/default.nix index b11573355aef..67a69db81426 100644 --- a/pkgs/development/tools/misc/runme/default.nix +++ b/pkgs/development/tools/misc/runme/default.nix @@ -3,6 +3,7 @@ , fetchFromGitHub , installShellFiles , nodejs +, python3 , runtimeShell , stdenv , testers @@ -11,16 +12,16 @@ buildGo121Module rec { pname = "runme"; - version = "1.7.6"; + version = "1.7.7"; src = fetchFromGitHub { owner = "stateful"; repo = "runme"; rev = "v${version}"; - hash = "sha256-gYaC1ROvW4wFrOKt1Wjl/ExhWX0ZQXHW6n6N70tXa+E="; + hash = "sha256-ZM8gdZ26XAlC+j6U0+oQJIb+5gOGFUAYHPP82kA1ogU="; }; - vendorHash = "sha256-/eofPpXmfpc7Vjz97hjKXH/Fl/EAk0zrnI279iit7MI="; + vendorHash = "sha256-nKH4hT0J9QfrDdvovu/XNxU4PtZYKkfqEBiCTNLWyRA="; nativeBuildInputs = [ installShellFiles @@ -28,6 +29,7 @@ buildGo121Module rec { nativeCheckInputs = [ nodejs + python3 ]; subPackages = [ diff --git a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.11.patch b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.11.patch deleted file mode 100644 index 4e247e432891..000000000000 --- a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.11.patch +++ /dev/null @@ -1,784 +0,0 @@ -commit 827b86ad1dd21feed4c0b99faf6059f245f7dadb -Author: Tejun Heo <tj@kernel.org> -Date: Fri Mar 11 07:31:23 2016 -0500 - - sched: Misc preps for cgroup unified hierarchy interface - - Make the following changes in preparation for the cpu controller - interface implementation for the unified hierarchy. This patch - doesn't cause any functional differences. - - * s/cpu_stats_show()/cpu_cfs_stats_show()/ - - * s/cpu_files/cpu_legacy_files/ - - * Separate out cpuacct_stats_read() from cpuacct_stats_show(). While - at it, make the @val array u64 for consistency. - - Signed-off-by: Tejun Heo <tj@kernel.org> - Cc: Ingo Molnar <mingo@redhat.com> - Cc: Peter Zijlstra <peterz@infradead.org> - Cc: Li Zefan <lizefan@huawei.com> - Cc: Johannes Weiner <hannes@cmpxchg.org> - -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 3b31fc05a0f1..a1b95e83fa87 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -7174,7 +7174,7 @@ static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota) - return ret; - } - --static int cpu_stats_show(struct seq_file *sf, void *v) -+static int cpu_cfs_stats_show(struct seq_file *sf, void *v) - { - struct task_group *tg = css_tg(seq_css(sf)); - struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; -@@ -7214,7 +7214,7 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css, - } - #endif /* CONFIG_RT_GROUP_SCHED */ - --static struct cftype cpu_files[] = { -+static struct cftype cpu_legacy_files[] = { - #ifdef CONFIG_FAIR_GROUP_SCHED - { - .name = "shares", -@@ -7235,7 +7235,7 @@ static struct cftype cpu_files[] = { - }, - { - .name = "stat", -- .seq_show = cpu_stats_show, -+ .seq_show = cpu_cfs_stats_show, - }, - #endif - #ifdef CONFIG_RT_GROUP_SCHED -@@ -7261,7 +7261,7 @@ struct cgroup_subsys cpu_cgrp_subsys = { - .fork = cpu_cgroup_fork, - .can_attach = cpu_cgroup_can_attach, - .attach = cpu_cgroup_attach, -- .legacy_cftypes = cpu_files, -+ .legacy_cftypes = cpu_legacy_files, - .early_init = true, - }; - -diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c -index f95ab29a45d0..6151c23f722f 100644 ---- a/kernel/sched/cpuacct.c -+++ b/kernel/sched/cpuacct.c -@@ -276,26 +276,33 @@ static int cpuacct_all_seq_show(struct seq_file *m, void *V) - return 0; - } - --static int cpuacct_stats_show(struct seq_file *sf, void *v) -+static void cpuacct_stats_read(struct cpuacct *ca, -+ u64 (*val)[CPUACCT_STAT_NSTATS]) - { -- struct cpuacct *ca = css_ca(seq_css(sf)); -- s64 val[CPUACCT_STAT_NSTATS]; - int cpu; -- int stat; - -- memset(val, 0, sizeof(val)); -+ memset(val, 0, sizeof(*val)); -+ - for_each_possible_cpu(cpu) { - u64 *cpustat = per_cpu_ptr(ca->cpustat, cpu)->cpustat; - -- val[CPUACCT_STAT_USER] += cpustat[CPUTIME_USER]; -- val[CPUACCT_STAT_USER] += cpustat[CPUTIME_NICE]; -- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SYSTEM]; -- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_IRQ]; -- val[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SOFTIRQ]; -+ (*val)[CPUACCT_STAT_USER] += cpustat[CPUTIME_USER]; -+ (*val)[CPUACCT_STAT_USER] += cpustat[CPUTIME_NICE]; -+ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SYSTEM]; -+ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_IRQ]; -+ (*val)[CPUACCT_STAT_SYSTEM] += cpustat[CPUTIME_SOFTIRQ]; - } -+} -+ -+static int cpuacct_stats_show(struct seq_file *sf, void *v) -+{ -+ u64 val[CPUACCT_STAT_NSTATS]; -+ int stat; -+ -+ cpuacct_stats_read(css_ca(seq_css(sf)), &val); - - for (stat = 0; stat < CPUACCT_STAT_NSTATS; stat++) { -- seq_printf(sf, "%s %lld\n", -+ seq_printf(sf, "%s %llu\n", - cpuacct_stat_desc[stat], - (long long)nsec_to_clock_t(val[stat])); - } - -commit fdb64d002b3a223ce4bb11aa4448a42050470052 -Author: Tejun Heo <tj@kernel.org> -Date: Fri Mar 11 07:31:23 2016 -0500 - - sched: Implement interface for cgroup unified hierarchy - - While the cpu controller doesn't have any functional problems, there - are a couple interface issues which can be addressed in the v2 - interface. - - * cpuacct being a separate controller. This separation is artificial - and rather pointless as demonstrated by most use cases co-mounting - the two controllers. It also forces certain information to be - accounted twice. - - * Use of different time units. Writable control knobs use - microseconds, some stat fields use nanoseconds while other cpuacct - stat fields use centiseconds. - - * Control knobs which can't be used in the root cgroup still show up - in the root. - - * Control knob names and semantics aren't consistent with other - controllers. - - This patchset implements cpu controller's interface on the unified - hierarchy which adheres to the controller file conventions described - in Documentation/cgroups/unified-hierarchy.txt. Overall, the - following changes are made. - - * cpuacct is implictly enabled and disabled by cpu and its information - is reported through "cpu.stat" which now uses microseconds for all - time durations. All time duration fields now have "_usec" appended - to them for clarity. While this doesn't solve the double accounting - immediately, once majority of users switch to v2, cpu can directly - account and report the relevant stats and cpuacct can be disabled on - the unified hierarchy. - - Note that cpuacct.usage_percpu is currently not included in - "cpu.stat". If this information is actually called for, it can be - added later. - - * "cpu.shares" is replaced with "cpu.weight" and operates on the - standard scale defined by CGROUP_WEIGHT_MIN/DFL/MAX (1, 100, 10000). - The weight is scaled to scheduler weight so that 100 maps to 1024 - and the ratio relationship is preserved - if weight is W and its - scaled value is S, W / 100 == S / 1024. While the mapped range is a - bit smaller than the orignal scheduler weight range, the dead zones - on both sides are relatively small and covers wider range than the - nice value mappings. This file doesn't make sense in the root - cgroup and isn't create on root. - - * "cpu.cfs_quota_us" and "cpu.cfs_period_us" are replaced by "cpu.max" - which contains both quota and period. - - * "cpu.rt_runtime_us" and "cpu.rt_period_us" are replaced by - "cpu.rt.max" which contains both runtime and period. - - v2: cpu_stats_show() was incorrectly using CONFIG_FAIR_GROUP_SCHED for - CFS bandwidth stats and also using raw division for u64. Use - CONFIG_CFS_BANDWITH and do_div() instead. - - The semantics of "cpu.rt.max" is not fully decided yet. Dropped - for now. - - Signed-off-by: Tejun Heo <tj@kernel.org> - Cc: Ingo Molnar <mingo@redhat.com> - Cc: Peter Zijlstra <peterz@infradead.org> - Cc: Li Zefan <lizefan@huawei.com> - Cc: Johannes Weiner <hannes@cmpxchg.org> - -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index a1b95e83fa87..f01d56e58a1b 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -7253,6 +7253,139 @@ static struct cftype cpu_legacy_files[] = { - { } /* Terminate */ - }; - -+static int cpu_stats_show(struct seq_file *sf, void *v) -+{ -+ cpuacct_cpu_stats_show(sf); -+ -+#ifdef CONFIG_CFS_BANDWIDTH -+ { -+ struct task_group *tg = css_tg(seq_css(sf)); -+ struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; -+ u64 throttled_usec; -+ -+ throttled_usec = cfs_b->throttled_time; -+ do_div(throttled_usec, NSEC_PER_USEC); -+ -+ seq_printf(sf, "nr_periods %d\n" -+ "nr_throttled %d\n" -+ "throttled_usec %llu\n", -+ cfs_b->nr_periods, cfs_b->nr_throttled, -+ throttled_usec); -+ } -+#endif -+ return 0; -+} -+ -+#ifdef CONFIG_FAIR_GROUP_SCHED -+static u64 cpu_weight_read_u64(struct cgroup_subsys_state *css, -+ struct cftype *cft) -+{ -+ struct task_group *tg = css_tg(css); -+ u64 weight = scale_load_down(tg->shares); -+ -+ return DIV_ROUND_CLOSEST_ULL(weight * CGROUP_WEIGHT_DFL, 1024); -+} -+ -+static int cpu_weight_write_u64(struct cgroup_subsys_state *css, -+ struct cftype *cftype, u64 weight) -+{ -+ /* -+ * cgroup weight knobs should use the common MIN, DFL and MAX -+ * values which are 1, 100 and 10000 respectively. While it loses -+ * a bit of range on both ends, it maps pretty well onto the shares -+ * value used by scheduler and the round-trip conversions preserve -+ * the original value over the entire range. -+ */ -+ if (weight < CGROUP_WEIGHT_MIN || weight > CGROUP_WEIGHT_MAX) -+ return -ERANGE; -+ -+ weight = DIV_ROUND_CLOSEST_ULL(weight * 1024, CGROUP_WEIGHT_DFL); -+ -+ return sched_group_set_shares(css_tg(css), scale_load(weight)); -+} -+#endif -+ -+static void __maybe_unused cpu_period_quota_print(struct seq_file *sf, -+ long period, long quota) -+{ -+ if (quota < 0) -+ seq_puts(sf, "max"); -+ else -+ seq_printf(sf, "%ld", quota); -+ -+ seq_printf(sf, " %ld\n", period); -+} -+ -+/* caller should put the current value in *@periodp before calling */ -+static int __maybe_unused cpu_period_quota_parse(char *buf, -+ u64 *periodp, u64 *quotap) -+{ -+ char tok[21]; /* U64_MAX */ -+ -+ if (!sscanf(buf, "%s %llu", tok, periodp)) -+ return -EINVAL; -+ -+ *periodp *= NSEC_PER_USEC; -+ -+ if (sscanf(tok, "%llu", quotap)) -+ *quotap *= NSEC_PER_USEC; -+ else if (!strcmp(tok, "max")) -+ *quotap = RUNTIME_INF; -+ else -+ return -EINVAL; -+ -+ return 0; -+} -+ -+#ifdef CONFIG_CFS_BANDWIDTH -+static int cpu_max_show(struct seq_file *sf, void *v) -+{ -+ struct task_group *tg = css_tg(seq_css(sf)); -+ -+ cpu_period_quota_print(sf, tg_get_cfs_period(tg), tg_get_cfs_quota(tg)); -+ return 0; -+} -+ -+static ssize_t cpu_max_write(struct kernfs_open_file *of, -+ char *buf, size_t nbytes, loff_t off) -+{ -+ struct task_group *tg = css_tg(of_css(of)); -+ u64 period = tg_get_cfs_period(tg); -+ u64 quota; -+ int ret; -+ -+ ret = cpu_period_quota_parse(buf, &period, "a); -+ if (!ret) -+ ret = tg_set_cfs_bandwidth(tg, period, quota); -+ return ret ?: nbytes; -+} -+#endif -+ -+static struct cftype cpu_files[] = { -+ { -+ .name = "stat", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .seq_show = cpu_stats_show, -+ }, -+#ifdef CONFIG_FAIR_GROUP_SCHED -+ { -+ .name = "weight", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .read_u64 = cpu_weight_read_u64, -+ .write_u64 = cpu_weight_write_u64, -+ }, -+#endif -+#ifdef CONFIG_CFS_BANDWIDTH -+ { -+ .name = "max", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .seq_show = cpu_max_show, -+ .write = cpu_max_write, -+ }, -+#endif -+ { } /* terminate */ -+}; -+ - struct cgroup_subsys cpu_cgrp_subsys = { - .css_alloc = cpu_cgroup_css_alloc, - .css_online = cpu_cgroup_css_online, -@@ -7262,7 +7395,15 @@ struct cgroup_subsys cpu_cgrp_subsys = { - .can_attach = cpu_cgroup_can_attach, - .attach = cpu_cgroup_attach, - .legacy_cftypes = cpu_legacy_files, -+ .dfl_cftypes = cpu_files, - .early_init = true, -+#ifdef CONFIG_CGROUP_CPUACCT -+ /* -+ * cpuacct is enabled together with cpu on the unified hierarchy -+ * and its stats are reported through "cpu.stat". -+ */ -+ .depends_on = 1 << cpuacct_cgrp_id, -+#endif - }; - - #endif /* CONFIG_CGROUP_SCHED */ -diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c -index 6151c23f722f..fc1cf13c3af1 100644 ---- a/kernel/sched/cpuacct.c -+++ b/kernel/sched/cpuacct.c -@@ -347,6 +347,31 @@ static struct cftype files[] = { - { } /* terminate */ - }; - -+/* used to print cpuacct stats in cpu.stat on the unified hierarchy */ -+void cpuacct_cpu_stats_show(struct seq_file *sf) -+{ -+ struct cgroup_subsys_state *css; -+ u64 usage, val[CPUACCT_STAT_NSTATS]; -+ -+ css = cgroup_get_e_css(seq_css(sf)->cgroup, &cpuacct_cgrp_subsys); -+ -+ usage = cpuusage_read(css, seq_cft(sf)); -+ cpuacct_stats_read(css_ca(css), &val); -+ -+ val[CPUACCT_STAT_USER] *= TICK_NSEC; -+ val[CPUACCT_STAT_SYSTEM] *= TICK_NSEC; -+ do_div(usage, NSEC_PER_USEC); -+ do_div(val[CPUACCT_STAT_USER], NSEC_PER_USEC); -+ do_div(val[CPUACCT_STAT_SYSTEM], NSEC_PER_USEC); -+ -+ seq_printf(sf, "usage_usec %llu\n" -+ "user_usec %llu\n" -+ "system_usec %llu\n", -+ usage, val[CPUACCT_STAT_USER], val[CPUACCT_STAT_SYSTEM]); -+ -+ css_put(css); -+} -+ - /* - * charge this task's execution time to its accounting group. - * -diff --git a/kernel/sched/cpuacct.h b/kernel/sched/cpuacct.h -index ba72807c73d4..ddf7af466d35 100644 ---- a/kernel/sched/cpuacct.h -+++ b/kernel/sched/cpuacct.h -@@ -2,6 +2,7 @@ - - extern void cpuacct_charge(struct task_struct *tsk, u64 cputime); - extern void cpuacct_account_field(struct task_struct *tsk, int index, u64 val); -+extern void cpuacct_cpu_stats_show(struct seq_file *sf); - - #else - -@@ -14,4 +15,8 @@ cpuacct_account_field(struct task_struct *tsk, int index, u64 val) - { - } - -+static inline void cpuacct_cpu_stats_show(struct seq_file *sf) -+{ -+} -+ - #endif - -commit 8dde150866b8c433216105c50b7e889d5242d583 -Author: Tejun Heo <tj@kernel.org> -Date: Fri Aug 5 12:41:01 2016 -0400 - - cgroup: add documentation regarding CPU controller cgroup v2 support - - Signed-off-by: Tejun Heo <tj@kernel.org> - -diff --git a/Documentation/cgroup-v2-cpu.txt b/Documentation/cgroup-v2-cpu.txt -new file mode 100644 -index 000000000000..1ed7032d4472 ---- /dev/null -+++ b/Documentation/cgroup-v2-cpu.txt -@@ -0,0 +1,368 @@ -+ -+ -+CPU Controller on Control Group v2 -+ -+August, 2016 Tejun Heo <tj@kernel.org> -+ -+ -+While most controllers have support for cgroup v2 now, the CPU -+controller support is not upstream yet due to objections from the -+scheduler maintainers on the basic designs of cgroup v2. This -+document explains the current situation as well as an interim -+solution, and details the disagreements and arguments. The latest -+version of this document can be found at the following URL. -+ -+ https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/tree/Documentation/cgroup-v2-cpu.txt?h=cgroup-v2-cpu -+ -+This document was posted to the linux-kernel and cgroup mailing lists. -+Unfortunately, no consensus was reached as of Oct, 2016. The thread -+can be found at the following URL. -+ -+ http://lkml.kernel.org/r/20160805170752.GK2542@mtj.duckdns.org -+ -+ -+CONTENTS -+ -+1. Current Situation and Interim Solution -+2. Disagreements and Arguments -+ 2-1. Contentious Restrictions -+ 2-1-1. Process Granularity -+ 2-1-2. No Internal Process Constraint -+ 2-2. Impact on CPU Controller -+ 2-2-1. Impact of Process Granularity -+ 2-2-2. Impact of No Internal Process Constraint -+ 2-3. Arguments for cgroup v2 -+3. Way Forward -+4. References -+ -+ -+1. Current Situation and Interim Solution -+ -+All objections from the scheduler maintainers apply to cgroup v2 core -+design, and there are no known objections to the specifics of the CPU -+controller cgroup v2 interface. The only blocked part is changes to -+expose the CPU controller interface on cgroup v2, which comprises the -+following two patches: -+ -+ [1] sched: Misc preps for cgroup unified hierarchy interface -+ [2] sched: Implement interface for cgroup unified hierarchy -+ -+The necessary changes are superficial and implement the interface -+files on cgroup v2. The combined diffstat is as follows. -+ -+ kernel/sched/core.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++-- -+ kernel/sched/cpuacct.c | 57 ++++++++++++------ -+ kernel/sched/cpuacct.h | 5 + -+ 3 files changed, 189 insertions(+), 22 deletions(-) -+ -+The patches are easy to apply and forward-port. The following git -+branch will always carry the two patches on top of the latest release -+of the upstream kernel. -+ -+ git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/cgroup-v2-cpu -+ -+There also are versioned branches going back to v4.4. -+ -+ git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/cgroup-v2-cpu-$KERNEL_VER -+ -+While it's difficult to tell whether the CPU controller support will -+be merged, there are crucial resource control features in cgroup v2 -+that are only possible due to the design choices that are being -+objected to, and every effort will be made to ease enabling the CPU -+controller cgroup v2 support out-of-tree for parties which choose to. -+ -+ -+2. Disagreements and Arguments -+ -+There have been several lengthy discussion threads [3][4] on LKML -+around the structural constraints of cgroup v2. The two that affect -+the CPU controller are process granularity and no internal process -+constraint. Both arise primarily from the need for common resource -+domain definition across different resources. -+ -+The common resource domain is a powerful concept in cgroup v2 that -+allows controllers to make basic assumptions about the structural -+organization of processes and controllers inside the cgroup hierarchy, -+and thus solve problems spanning multiple types of resources. The -+prime example for this is page cache writeback: dirty page cache is -+regulated through throttling buffered writers based on memory -+availability, and initiating batched write outs to the disk based on -+IO capacity. Tracking and controlling writeback inside a cgroup thus -+requires the direct cooperation of the memory and the IO controller. -+ -+This easily extends to other areas, such as CPU cycles consumed while -+performing memory reclaim or IO encryption. -+ -+ -+2-1. Contentious Restrictions -+ -+For controllers of different resources to work together, they must -+agree on a common organization. This uniform model across controllers -+imposes two contentious restrictions on the CPU controller: process -+granularity and the no-internal-process constraint. -+ -+ -+ 2-1-1. Process Granularity -+ -+ For memory, because an address space is shared between all threads -+ of a process, the terminal consumer is a process, not a thread. -+ Separating the threads of a single process into different memory -+ control domains doesn't make semantical sense. cgroup v2 ensures -+ that all controller can agree on the same organization by requiring -+ that threads of the same process belong to the same cgroup. -+ -+ There are other reasons to enforce process granularity. One -+ important one is isolating system-level management operations from -+ in-process application operations. The cgroup interface, being a -+ virtual filesystem, is very unfit for multiple independent -+ operations taking place at the same time as most operations have to -+ be multi-step and there is no way to synchronize multiple accessors. -+ See also [5] Documentation/cgroup-v2.txt, "R-2. Thread Granularity" -+ -+ -+ 2-1-2. No Internal Process Constraint -+ -+ cgroup v2 does not allow processes to belong to any cgroup which has -+ child cgroups when resource controllers are enabled on it (the -+ notable exception being the root cgroup itself). This is because, -+ for some resources, a resource domain (cgroup) is not directly -+ comparable to the terminal consumer (process/task) of said resource, -+ and so putting the two into a sibling relationship isn't meaningful. -+ -+ - Differing Control Parameters and Capabilities -+ -+ A cgroup controller has different resource control parameters and -+ capabilities from a terminal consumer, be that a task or process. -+ There are a couple cases where a cgroup control knob can be mapped -+ to a per-task or per-process API but they are exceptions and the -+ mappings aren't obvious even in those cases. -+ -+ For example, task priorities (also known as nice values) set -+ through setpriority(2) are mapped to the CPU controller -+ "cpu.shares" values. However, how exactly the two ranges map and -+ even the fact that they map to each other at all are not obvious. -+ -+ The situation gets further muddled when considering other resource -+ types and control knobs. IO priorities set through ioprio_set(2) -+ cannot be mapped to IO controller weights and most cgroup resource -+ control knobs including the bandwidth control knobs of the CPU -+ controller don't have counterparts in the terminal consumers. -+ -+ - Anonymous Resource Consumption -+ -+ For CPU, every time slice consumed from inside a cgroup, which -+ comprises most but not all of consumed CPU time for the cgroup, -+ can be clearly attributed to a specific task or process. Because -+ these two types of entities are directly comparable as consumers -+ of CPU time, it's theoretically possible to mix tasks and cgroups -+ on the same tree levels and let them directly compete for the time -+ quota available to their common ancestor. -+ -+ However, the same can't be said for resource types like memory or -+ IO: the memory consumed by the page cache, for example, can be -+ tracked on a per-cgroup level, but due to mismatches in lifetimes -+ of involved objects (page cache can persist long after processes -+ are gone), shared usages and the implementation overhead of -+ tracking persistent state, it can no longer be attributed to -+ individual processes after instantiation. Consequently, any IO -+ incurred by page cache writeback can be attributed to a cgroup, -+ but not to the individual consumers inside the cgroup. -+ -+ For memory and IO, this makes a resource domain (cgroup) an object -+ of a fundamentally different type than a terminal consumer -+ (process). A process can't be a first class object in the resource -+ distribution graph as its total resource consumption can't be -+ described without the containing resource domain. -+ -+ Disallowing processes in internal cgroups avoids competition between -+ cgroups and processes which cannot be meaningfully defined for these -+ resources. All resource control takes place among cgroups and a -+ terminal consumer interacts with the containing cgroup the same way -+ it would with the system without cgroup. -+ -+ Root cgroup is exempt from this constraint, which is in line with -+ how root cgroup is handled in general - it's excluded from cgroup -+ resource accounting and control. -+ -+ -+Enforcing process granularity and no internal process constraint -+allows all controllers to be on the same footing in terms of resource -+distribution hierarchy. -+ -+ -+2-2. Impact on CPU Controller -+ -+As indicated earlier, the CPU controller's resource distribution graph -+is the simplest. Every schedulable resource consumption can be -+attributed to a specific task. In addition, for weight based control, -+the per-task priority set through setpriority(2) can be translated to -+and from a per-cgroup weight. As such, the CPU controller can treat a -+task and a cgroup symmetrically, allowing support for any tree layout -+of cgroups and tasks. Both process granularity and the no internal -+process constraint restrict how the CPU controller can be used. -+ -+ -+ 2-2-1. Impact of Process Granularity -+ -+ Process granularity prevents tasks belonging to the same process to -+ be assigned to different cgroups. It was pointed out [6] that this -+ excludes the valid use case of hierarchical CPU distribution within -+ processes. -+ -+ To address this issue, the rgroup (resource group) [7][8][9] -+ interface, an extension of the existing setpriority(2) API, was -+ proposed, which is in line with other programmable priority -+ mechanisms and eliminates the risk of in-application configuration -+ and system configuration stepping on each other's toes. -+ Unfortunately, the proposal quickly turned into discussions around -+ cgroup v2 design decisions [4] and no consensus could be reached. -+ -+ -+ 2-2-2. Impact of No Internal Process Constraint -+ -+ The no internal process constraint disallows tasks from competing -+ directly against cgroups. Here is an excerpt from Peter Zijlstra -+ pointing out the issue [10] - R, L and A are cgroups; t1, t2, t3 and -+ t4 are tasks: -+ -+ -+ R -+ / | \ -+ t1 t2 A -+ / \ -+ t3 t4 -+ -+ -+ Is fundamentally different from: -+ -+ -+ R -+ / \ -+ L A -+ / \ / \ -+ t1 t2 t3 t4 -+ -+ -+ Because if in the first hierarchy you add a task (t5) to R, all of -+ its A will run at 1/4th of total bandwidth where before it had -+ 1/3rd, whereas with the second example, if you add our t5 to L, A -+ doesn't get any less bandwidth. -+ -+ -+ It is true that the trees are semantically different from each other -+ and the symmetric handling of tasks and cgroups is aesthetically -+ pleasing. However, it isn't clear what the practical usefulness of -+ a layout with direct competition between tasks and cgroups would be, -+ considering that number and behavior of tasks are controlled by each -+ application, and cgroups primarily deal with system level resource -+ distribution; changes in the number of active threads would directly -+ impact resource distribution. Real world use cases of such layouts -+ could not be established during the discussions. -+ -+ -+2-3. Arguments for cgroup v2 -+ -+There are strong demands for comprehensive hierarchical resource -+control across all major resources, and establishing a common resource -+hierarchy is an essential step. As with most engineering decisions, -+common resource hierarchy definition comes with its trade-offs. With -+cgroup v2, the trade-offs are in the form of structural constraints -+which, among others, restrict the CPU controller's space of possible -+configurations. -+ -+However, even with the restrictions, cgroup v2, in combination with -+rgroup, covers most of identified real world use cases while enabling -+new important use cases of resource control across multiple resource -+types that were fundamentally broken previously. -+ -+Furthermore, for resource control, treating resource domains as -+objects of a different type from terminal consumers has important -+advantages - it can account for resource consumptions which are not -+tied to any specific terminal consumer, be that a task or process, and -+allows decoupling resource distribution controls from in-application -+APIs. Even the CPU controller may benefit from it as the kernel can -+consume significant amount of CPU cycles in interrupt context or tasks -+shared across multiple resource domains (e.g. softirq). -+ -+Finally, it's important to note that enabling cgroup v2 support for -+the CPU controller doesn't block use cases which require the features -+which are not available on cgroup v2. Unlikely, but should anybody -+actually rely on the CPU controller's symmetric handling of tasks and -+cgroups, backward compatibility is and will be maintained by being -+able to disconnect the controller from the cgroup v2 hierarchy and use -+it standalone. This also holds for cpuset which is often used in -+highly customized configurations which might be a poor fit for common -+resource domains. -+ -+The required changes are minimal, the benefits for the target use -+cases are critical and obvious, and use cases which have to use v1 can -+continue to do so. -+ -+ -+3. Way Forward -+ -+cgroup v2 primarily aims to solve the problem of comprehensive -+hierarchical resource control across all major computing resources, -+which is one of the core problems of modern server infrastructure -+engineering. The trade-offs that cgroup v2 took are results of -+pursuing that goal and gaining a better understanding of the nature of -+resource control in the process. -+ -+I believe that real world usages will prove cgroup v2's model right, -+considering the crucial pieces of comprehensive resource control that -+cannot be implemented without common resource domains. This is not to -+say that cgroup v2 is fixed in stone and can't be updated; if there is -+an approach which better serves both comprehensive resource control -+and the CPU controller's flexibility, we will surely move towards -+that. It goes without saying that discussions around such approach -+should consider practical aspects of resource control as a whole -+rather than absolutely focusing on a particular controller. -+ -+Until such consensus can be reached, the CPU controller cgroup v2 -+support will be maintained out of the mainline kernel in an easily -+accessible form. If there is anything cgroup developers can do to -+ease the pain, please feel free to contact us on the cgroup mailing -+list at cgroups@vger.kernel.org. -+ -+ -+4. References -+ -+[1] http://lkml.kernel.org/r/20160105164834.GE5995@mtj.duckdns.org -+ [PATCH 1/2] sched: Misc preps for cgroup unified hierarchy interface -+ Tejun Heo <tj@kernel.org> -+ -+[2] http://lkml.kernel.org/r/20160105164852.GF5995@mtj.duckdns.org -+ [PATCH 2/2] sched: Implement interface for cgroup unified hierarchy -+ Tejun Heo <tj@kernel.org> -+ -+[3] http://lkml.kernel.org/r/1438641689-14655-4-git-send-email-tj@kernel.org -+ [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy -+ Tejun Heo <tj@kernel.org> -+ -+[4] http://lkml.kernel.org/r/20160407064549.GH3430@twins.programming.kicks-ass.net -+ Re: [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource group and PRIO_RGRP -+ Peter Zijlstra <peterz@infradead.org> -+ -+[5] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/cgroup-v2.txt -+ Control Group v2 -+ Tejun Heo <tj@kernel.org> -+ -+[6] http://lkml.kernel.org/r/CAPM31RJNy3jgG=DYe6GO=wyL4BPPxwUm1f2S6YXacQmo7viFZA@mail.gmail.com -+ Re: [PATCH 3/3] sched: Implement interface for cgroup unified hierarchy -+ Paul Turner <pjt@google.com> -+ -+[7] http://lkml.kernel.org/r/20160105154503.GC5995@mtj.duckdns.org -+ [RFD] cgroup: thread granularity support for cpu controller -+ Tejun Heo <tj@kernel.org> -+ -+[8] http://lkml.kernel.org/r/1457710888-31182-1-git-send-email-tj@kernel.org -+ [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource group and PRIO_RGRP -+ Tejun Heo <tj@kernel.org> -+ -+[9] http://lkml.kernel.org/r/20160311160522.GA24046@htj.duckdns.org -+ Example program for PRIO_RGRP -+ Tejun Heo <tj@kernel.org> -+ -+[10] http://lkml.kernel.org/r/20160407082810.GN3430@twins.programming.kicks-ass.net -+ Re: [PATCHSET RFC cgroup/for-4.6] cgroup, sched: implement resource -+ Peter Zijlstra <peterz@infradead.org> diff --git a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/README.md b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/README.md deleted file mode 100644 index b454e14801db..000000000000 --- a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/README.md +++ /dev/null @@ -1,21 +0,0 @@ -Patches for CPU Controller on Control Group v2 -=============================================== - -See Tejun Heo's [explanation][1] for why these patches are currently -out-of-tree. - -Generating the patches ------------------------ - -In a linux checkout, with remote tc-cgroup pointing to -git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git, your -nixpkgs checkout in the same directory as your linux checkout (or -modify the command accordingly), and setting `ver` to the appropriate -version: - -```shell -$ ver=4.7 -$ git log --reverse --patch v$ver..remotes/tc-cgroup/cgroup-v2-cpu-v$ver > ../nixpkgs/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/$ver.patch -``` - -[1]: https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git/tree/Documentation/cgroup-v2-cpu.txt?h=cgroup-v2-cpu diff --git a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/default.nix b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/default.nix deleted file mode 100644 index 5bef5633aa03..000000000000 --- a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -let - ents = builtins.readDir ./.; -in builtins.listToAttrs (builtins.filter (x: x != null) (map (name: let - match = builtins.match "(.*)\\.patch" name; -in if match == null then null else { - name = builtins.head match; - value = { - name = "cpu-cgroup-v2-${name}"; - patch = ./. + "/${name}"; - }; -}) (builtins.attrNames ents))) diff --git a/pkgs/os-specific/linux/kernel/linux-hardkernel-4.14.nix b/pkgs/os-specific/linux/kernel/linux-hardkernel-4.14.nix deleted file mode 100644 index 69bbdf648d22..000000000000 --- a/pkgs/os-specific/linux/kernel/linux-hardkernel-4.14.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ buildPackages, fetchFromGitHub, fetchurl, perl, buildLinux, libelf, util-linux, kernelPatches ? [], ... } @ args: - -buildLinux (args // rec { - version = "4.14.180-176"; - - # modDirVersion needs to be x.y.z. - modDirVersion = "4.14.180"; - - # branchVersion needs to be x.y. - extraMeta.branch = "4.14"; - - src = fetchFromGitHub { - owner = "hardkernel"; - repo = "linux"; - rev = version; - sha256 = "0n7i7a2bkrm9p1wfr20h54cqm32fbjvwyn703r6zm1f6ivqhk43v"; - }; - - kernelPatches = args.kernelPatches ++ [{ - name = "usbip-tools-fno-common"; - patch = fetchurl { - url = "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=d5efc2e6b98fe661dbd8dd0d5d5bfb961728e57a"; - hash = "sha256-1CXYCV5zMLA4YdbCr8cO2N4CHEDzQChS9qbKYHPm3U4="; - }; - }]; - - defconfig = "odroidxu4_defconfig"; - - # This extraConfig is (only) required because the gator module fails to build as-is. - extraConfig = '' - - GATOR n - - # This attempted fix applies correctly but does not fix the build. - #GATOR_MALI_MIDGARD_PATH ${src}/drivers/gpu/arm/midgard - - '' + (args.extraConfig or ""); - - extraMeta.platforms = [ "armv7l-linux" ]; - -} // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index ab3b4e56066e..5d4ebc214dc7 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -44,8 +44,6 @@ patch = ./modinst-arg-list-too-long.patch; }; - cpu-cgroup-v2 = import ./cpu-cgroup-v2-patches; - hardened = let mkPatch = kernelVersion: { version, sha256, patch }: let src = patch; in { name = lib.removeSuffix ".patch" src.name; diff --git a/pkgs/tools/package-management/nix-du/default.nix b/pkgs/tools/package-management/nix-du/default.nix index 37b42e29bb14..3f9814b36ac5 100644 --- a/pkgs/tools/package-management/nix-du/default.nix +++ b/pkgs/tools/package-management/nix-du/default.nix @@ -12,16 +12,16 @@ rustPlatform.buildRustPackage rec { pname = "nix-du"; - version = "1.0.0"; + version = "1.1.0"; src = fetchFromGitHub { owner = "symphorien"; repo = "nix-du"; rev = "v${version}"; - sha256 = "sha256-JU0kXMS4vCMdm3nOJM92Bit16141iuBnjRaV+HXiReQ="; + sha256 = "sha256-Ft0j9kcR5HTSX0K09OKZMIUz25PR/isqZQIKmlNjqNE="; }; - cargoSha256 = "sha256-DX0jpp1ujaeesW7iQWZ5/xAzGndOQqBmQZbBpMEI9u0="; + cargoSha256 = "sha256-x+NONRKF7b0tADG2flgBKo32wx/TyXm7Z0bd9ZbbES8="; doCheck = true; nativeCheckInputs = [ nix graphviz ]; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 0aaf7e4f111d..8f151e6610dc 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -68,6 +68,7 @@ mapAliases ({ angelfish = libsForQt5.kdeGear.angelfish; # Added 2021-10-06 ansible_2_12 = throw "Ansible 2.12 goes end of life in 2023/05 and can't be supported throughout the 23.05 release cycle"; # Added 2023-05-16 antimicroX = antimicrox; # Added 2021-10-31 + ardour_6 = throw "ardour_6 has been removed in favor of newer versions"; # Added 2023-10-13 aseprite-unfree = aseprite; # Added 2023-08-26 asls = throw "asls has been removed: abandoned by upstream"; # Added 2023-03-16 asterisk_16 = throw "asterisk_16: Asterisk 16 is end of life and has been removed"; # Added 2023-04-19 @@ -461,6 +462,7 @@ mapAliases ({ libyamlcpp_0_3 = yaml-cpp_0_3; # Added 2023-01-29 libxkbcommon_7 = throw "libxkbcommon_7 has been removed because it is impacted by security issues and not used in nixpkgs, move to 'libxkbcommon'"; # Added 2023-01-03 lightdm_gtk_greeter = lightdm-gtk-greeter; # Added 2022-08-01 + lightstep-tracer-cpp = throw "lightstep-tracer-cpp is deprecated since 2022-08-29; the upstream recommends migration to opentelemetry projects."; llama = walk; # Added 2023-01-23 # Linux kernels @@ -482,7 +484,6 @@ mapAliases ({ linuxPackages_6_3 = linuxKernel.packages.linux_6_3; linuxPackages_6_4 = linuxKernel.packages.linux_6_4; linuxPackages_6_5 = linuxKernel.packages.linux_6_5; - linuxPackages_hardkernel_4_14 = linuxKernel.packages.hardkernel_4_14; linuxPackages_rpi0 = linuxKernel.packages.linux_rpi1; linuxPackages_rpi02w = linuxKernel.packages.linux_rpi3; linuxPackages_rpi1 = linuxKernel.packages.linux_rpi1; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b23b0b60f127..e79838eca9c8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11707,8 +11707,6 @@ with pkgs; opentelemetry-collector = callPackage ../tools/misc/opentelemetry-collector { }; opentelemetry-collector-contrib = callPackage ../tools/misc/opentelemetry-collector/contrib.nix { }; - opentracing-cpp = callPackage ../development/libraries/opentracing-cpp { }; - openvswitch = callPackage ../os-specific/linux/openvswitch { }; openvswitch-lts = callPackage ../os-specific/linux/openvswitch/lts.nix { }; @@ -23821,9 +23819,7 @@ with pkgs; lightspark = callPackage ../misc/lightspark { }; - lightstep-tracer-cpp = callPackage ../development/libraries/lightstep-tracer-cpp { - protobuf = protobuf3_21; - }; + opentracing-cpp = callPackage ../development/libraries/opentracing-cpp { }; ligolo-ng = callPackage ../tools/networking/ligolo-ng { }; @@ -28148,8 +28144,6 @@ with pkgs; # hardened kernels linuxPackages_hardened = linuxKernel.packages.linux_hardened; linux_hardened = linuxPackages_hardened.kernel; - linuxPackages_4_14_hardened = linuxKernel.packages.linux_4_14_hardened; - linux_4_14_hardened = linuxPackages_4_14_hardened.kernel; linuxPackages_4_19_hardened = linuxKernel.packages.linux_4_19_hardened; linux_4_19_hardened = linuxPackages_4_19_hardened.kernel; linuxPackages_5_4_hardened = linuxKernel.packages.linux_5_4_hardened; @@ -28163,10 +28157,6 @@ with pkgs; linuxPackages_6_5_hardened = linuxKernel.packages.linux_6_5_hardened; linux_6_5_hardened = linuxKernel.kernels.linux_6_5_hardened; - # Hardkernel (Odroid) kernels. - linuxPackages_hardkernel_latest = linuxKernel.packageAliases.linux_hardkernel_latest; - linux_hardkernel_latest = linuxPackages_hardkernel_latest.kernel; - # GNU Linux-libre kernels linuxPackages-libre = linuxKernel.packages.linux_libre; linux-libre = linuxPackages-libre.kernel; @@ -30431,8 +30421,8 @@ with pkgs; texlive = texlive.combined.scheme-medium; }; - ardour_6 = callPackage ../applications/audio/ardour/6.nix { }; ardour = callPackage ../applications/audio/ardour { }; + ardour_7 = callPackage ../applications/audio/ardour/7.nix { }; arelle = with python3Packages; toPythonApplication arelle; diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 44b9897ede15..d796fa7164d0 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -96,18 +96,6 @@ in { rpiVersion = 4; }; - linux_4_14 = callPackage ../os-specific/linux/kernel/mainline.nix { - branch = "4.14"; - kernelPatches = - [ kernelPatches.bridge_stp_helper - kernelPatches.request_key_helper - # See pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/README.md - # when adding a new linux version - kernelPatches.cpu-cgroup-v2."4.11" - kernelPatches.modinst_arg_list_too_long - ]; - }; - linux_4_19 = callPackage ../os-specific/linux/kernel/mainline.nix { branch = "4.19"; kernelPatches = @@ -217,14 +205,6 @@ in { ]; }; - linux_hardkernel_4_14 = callPackage ../os-specific/linux/kernel/linux-hardkernel-4.14.nix { - kernelPatches = [ - kernelPatches.bridge_stp_helper - kernelPatches.request_key_helper - kernelPatches.modinst_arg_list_too_long - ]; - }; - # Using zenKernels like this due lqx&zen came from one source, but may have different base kernel version # https://github.com/NixOS/nixpkgs/pull/161773#discussion_r820134708 zenKernels = callPackage ../os-specific/linux/kernel/zen-kernels.nix; @@ -261,10 +241,6 @@ in { linux_hardened = hardenedKernelFor packageAliases.linux_default.kernel { }; - linux_4_14_hardened = hardenedKernelFor kernels.linux_4_14 { - stdenv = gcc10Stdenv; - buildPackages = buildPackages // { stdenv = buildPackages.gcc10Stdenv; }; - }; linux_4_19_hardened = hardenedKernelFor kernels.linux_4_19 { stdenv = gcc10Stdenv; buildPackages = buildPackages // { stdenv = buildPackages.gcc10Stdenv; }; @@ -280,6 +256,7 @@ in { } // lib.optionalAttrs config.allowAliases { linux_4_9 = throw "linux 4.9 was removed because it will reach its end of life within 22.11"; + linux_4_14 = throw "linux 4.14 was removed because it will reach its end of life within 23.11"; linux_5_18 = throw "linux 5.18 was removed because it has reached its end of life upstream"; linux_5_19 = throw "linux 5.19 was removed because it has reached its end of life upstream"; linux_6_0 = throw "linux 6.0 was removed because it has reached its end of life upstream"; @@ -590,7 +567,6 @@ in { vanillaPackages = { # recurse to build modules for the kernels - linux_4_14 = recurseIntoAttrs (packagesFor kernels.linux_4_14); linux_4_19 = recurseIntoAttrs (packagesFor kernels.linux_4_19); linux_5_4 = recurseIntoAttrs (packagesFor kernels.linux_5_4); linux_5_10 = recurseIntoAttrs (packagesFor kernels.linux_5_10); @@ -599,6 +575,7 @@ in { linux_6_5 = recurseIntoAttrs (packagesFor kernels.linux_6_5); } // lib.optionalAttrs config.allowAliases { linux_4_9 = throw "linux 4.9 was removed because it will reach its end of life within 22.11"; # Added 2022-11-08 + linux_4_14 = throw "linux 4.14 was removed because it will reach its end of life within 23.11"; # Added 2023-10-11 linux_5_18 = throw "linux 5.18 was removed because it reached its end of life upstream"; # Added 2022-09-17 linux_5_19 = throw "linux 5.19 was removed because it reached its end of life upstream"; # Added 2022-11-01 linux_6_0 = throw "linux 6.0 was removed because it reached its end of life upstream"; # Added 2023-01-20 @@ -630,7 +607,6 @@ in { linux_hardened = recurseIntoAttrs (packagesFor kernels.linux_hardened); - linux_4_14_hardened = recurseIntoAttrs (packagesFor kernels.linux_4_14_hardened); linux_4_19_hardened = recurseIntoAttrs (packagesFor kernels.linux_4_19_hardened); linux_5_4_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_4_hardened); linux_5_10_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_10_hardened); @@ -644,8 +620,6 @@ in { linux_xanmod_stable = recurseIntoAttrs (packagesFor kernels.linux_xanmod_stable); linux_xanmod_latest = recurseIntoAttrs (packagesFor kernels.linux_xanmod_latest); - hardkernel_4_14 = recurseIntoAttrs (packagesFor kernels.linux_hardkernel_4_14); - linux_libre = recurseIntoAttrs (packagesFor kernels.linux_libre); linux_latest_libre = recurseIntoAttrs (packagesFor kernels.linux_latest_libre); @@ -663,7 +637,6 @@ in { linux_mptcp = throw "'linux_mptcp' has been moved to https://github.com/teto/mptcp-flake"; linux_rt_default = packages.linux_rt_5_4; linux_rt_latest = packages.linux_rt_6_1; - linux_hardkernel_latest = packages.hardkernel_4_14; }; manualConfig = callPackage ../os-specific/linux/kernel/manual-config.nix {}; |