diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/package-management')
122 files changed, 9899 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/package-management/akku/default.nix b/nixpkgs/pkgs/tools/package-management/akku/default.nix new file mode 100644 index 000000000000..68ee94d3f94e --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/akku/default.nix @@ -0,0 +1,42 @@ +{ lib, stdenv, fetchFromGitLab, autoreconfHook, pkg-config, guile, curl, substituteAll }: + +stdenv.mkDerivation rec { + pname = "akku"; + version = "1.1.0"; + + src = fetchFromGitLab { + owner = "akkuscm"; + repo = "akku"; + rev = "v${version}"; + sha256 = "1pi18aamg1fd6f9ynfl7zx92052xzf0zwmhi2pwcwjs1kbah19f5"; + }; + + patches = [ + # substitute libcurl path + (substituteAll { + src = ./hardcode-libcurl.patch; + libcurl = "${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary}"; + }) + ]; + + nativeBuildInputs = [ autoreconfHook pkg-config ]; + + buildInputs = [ guile ]; + + # Use a dummy package index to boostrap Akku + preBuild = '' + touch bootstrap.db + ''; + + makeFlags = [ "GUILE_AUTO_COMPILE=0" ]; + + meta = with lib; { + homepage = "https://akkuscm.org/"; + description = "Language package manager for Scheme"; + changelog = "https://gitlab.com/akkuscm/akku/-/raw/v${version}/NEWS.md"; + platforms = platforms.all; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ marsam ]; + mainProgram = "akku"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/akku/hardcode-libcurl.patch b/nixpkgs/pkgs/tools/package-management/akku/hardcode-libcurl.patch new file mode 100644 index 000000000000..7c5b8b50c320 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/akku/hardcode-libcurl.patch @@ -0,0 +1,18 @@ +--- old/private/http.scm ++++ new/private/http.scm +@@ -101,14 +101,7 @@ + ;; shouldn't, but it's an old issue. + (log/error "Could not load libcurl. Please install the curl development(!) package.") + (exit 1))) +- (case (os-name) +- ((darwin) (set! libcurl (open-shared-object "libcurl.dylib"))) +- ((msys) (set! libcurl (open-shared-object "msys-curl-4"))) +- (else +- (guard (exn +- (else +- (set! libcurl (open-shared-object "libcurl.so.3")))) +- (set! libcurl (open-shared-object "libcurl.so.4")))))) ++ (set! libcurl (open-shared-object "@libcurl@"))) + (letrec () + (define %curl_global_init (foreign-procedure libcurl int curl_global_init (long))) + (call %curl_global_init #b11))) diff --git a/nixpkgs/pkgs/tools/package-management/apk-tools/default.nix b/nixpkgs/pkgs/tools/package-management/apk-tools/default.nix new file mode 100644 index 000000000000..4a460adfd0ff --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/apk-tools/default.nix @@ -0,0 +1,49 @@ +{ lib, stdenv, fetchFromGitLab, pkg-config, scdoc, openssl, zlib +, luaSupport ? stdenv.hostPlatform == stdenv.buildPlatform, lua +}: + +stdenv.mkDerivation rec { + pname = "apk-tools"; + version = "2.14.0"; + + src = fetchFromGitLab { + domain = "gitlab.alpinelinux.org"; + owner = "alpine"; + repo = "apk-tools"; + rev = "v${version}"; + sha256 = "sha256-NbADp017wL6h+Owg/GISidoXEq0seWaa98/Hyyq6pYc="; + }; + + nativeBuildInputs = [ pkg-config scdoc ] + ++ lib.optionals luaSupport [ lua lua.pkgs.lua-zlib ]; + buildInputs = [ openssl zlib ] ++ lib.optional luaSupport lua; + strictDeps = true; + + makeFlags = [ + "CROSS_COMPILE=${stdenv.cc.targetPrefix}" + "SBINDIR=$(out)/bin" + "LIBDIR=$(out)/lib" + "LUA=${if luaSupport then "lua" else "no"}" + "LUA_LIBDIR=$(out)/lib/lua/${lib.versions.majorMinor lua.version}" + "MANDIR=$(out)/share/man" + "DOCDIR=$(out)/share/doc/apk" + "INCLUDEDIR=$(out)/include" + "PKGCONFIGDIR=$(out)/lib/pkgconfig" + ]; + + env.NIX_CFLAGS_COMPILE = toString [ + "-Wno-error=unused-result" + "-Wno-error=deprecated-declarations" + ]; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "https://gitlab.alpinelinux.org/alpine/apk-tools"; + description = "Alpine Package Keeper"; + maintainers = with maintainers; [ qyliss ]; + license = licenses.gpl2Only; + platforms = platforms.linux; + mainProgram = "apk"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/apkg/default.nix b/nixpkgs/pkgs/tools/package-management/apkg/default.nix new file mode 100644 index 000000000000..18b52f0bcdb8 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/apkg/default.nix @@ -0,0 +1,52 @@ +{ lib, fetchFromGitLab, python3Packages +, gitMinimal, rpm, dpkg, fakeroot +}: + +python3Packages.buildPythonApplication rec { + pname = "apkg"; + version = "0.4.1"; + format = "pyproject"; + + src = fetchFromGitLab { + domain = "gitlab.nic.cz"; + owner = "packaging"; + repo = pname; + rev = "v${version}"; + sha256 = "x7UYkqkF1XJ3OMfQpIQ4+27KI0dLvL42Wms5xQTY/H4="; + }; + + propagatedBuildInputs = with python3Packages; [ + # copy&pasted requirements.txt (almost exactly) + beautifulsoup4 # upstream version detection + blessed # terminal colors + build # apkg distribution + cached-property # for python <= 3.7; but pip complains even with 3.8 + click # nice CLI framework + distro # current distro detection + jinja2 # templating + packaging # version parsing + requests # HTTP for humansâ„¢ + toml # config files + ]; + + nativeBuildInputs = with python3Packages; [ hatchling ]; + + makeWrapperArgs = [ # deps for `srcpkg` operation for other distros; could be optional + "--prefix" "PATH" ":" (lib.makeBinPath [ gitMinimal rpm dpkg fakeroot ]) + ]; + + nativeCheckInputs = with python3Packages; [ pytest dunamai ]; + checkPhase = '' + runHook preCheck + py.test # inspiration: .gitlab-ci.yml + runHook postCheck + ''; + + meta = with lib; { + description = "Upstream packaging automation tool"; + homepage = "https://pkg.labs.nic.cz/pages/apkg"; + license = licenses.gpl3Plus; + maintainers = [ maintainers.vcunat /* close to upstream */ ]; + mainProgram = "apkg"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/appimage-run/default.nix b/nixpkgs/pkgs/tools/package-management/appimage-run/default.nix new file mode 100644 index 000000000000..286fd9d7ff68 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/appimage-run/default.nix @@ -0,0 +1,29 @@ +{ appimageTools, buildFHSEnv, makeDesktopItem, extraPkgs ? pkgs: [], appimage-run-tests ? null }: + +let + name = "appimage-run"; + + fhsArgs = appimageTools.defaultFhsEnvArgs; + + desktopItem = makeDesktopItem { + inherit name; + exec = name; + desktopName = name; + genericName = "AppImage runner"; + noDisplay = true; + mimeTypes = ["application/vnd.appimage" "application/x-iso9660-appimage"]; + categories = ["PackageManager" "Utility"]; + }; +in buildFHSEnv (fhsArgs // { + inherit name; + + targetPkgs = pkgs: [ appimageTools.appimage-exec ] + ++ fhsArgs.targetPkgs pkgs ++ extraPkgs pkgs; + runScript = "appimage-exec.sh"; + + extraInstallCommands = '' + cp --recursive "${desktopItem}/share" "$out/" + ''; + + passthru.tests.appimage-run = appimage-run-tests; +}) diff --git a/nixpkgs/pkgs/tools/package-management/appimage-run/test.nix b/nixpkgs/pkgs/tools/package-management/appimage-run/test.nix new file mode 100644 index 000000000000..8a6e27095123 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/appimage-run/test.nix @@ -0,0 +1,37 @@ +{ runCommand, fetchurl, appimage-run, glibcLocales, file, xdg-utils }: +let + # any AppImage usable on cli, really + sample-appImage = fetchurl { + url = "https://github.com/AppImage/AppImageKit/releases/download/12/appimagetool-x86_64.AppImage"; + sha256 = "04ws94q71bwskmhizhwmaf41ma4wabvfgjgkagr8wf3vakgv866r"; + }; + owdtest = fetchurl { + url = "https://github.com/NixOS/nixpkgs/files/10099048/owdtest.AppImage.gz"; + sha256 = "sha256-EEp9dxz/+l5XkNaVBFgv5v64sizQILnljRAzwXv/yV8="; + }; +in + runCommand "appimage-run-tests" { + buildInputs = [ appimage-run glibcLocales file xdg-utils ]; + meta.platforms = [ "x86_64-linux" ]; + } + '' + export HOME=$(mktemp -d) + set -x + + # regression test for #101137, must come first + LANG=fr_FR appimage-run ${sample-appImage} --list ${sample-appImage} + + # regression test for #108426 + cp ${sample-appImage} foo.appImage + LANG=fr_FR appimage-run ${sample-appImage} --list foo.appImage + cp ${owdtest} owdtest.AppImage.gz + gunzip owdtest.AppImage.gz + appimage-run owdtest.AppImage + + # Verify desktop entry + XDG_DATA_DIRS="${appimage-run}/share" + [[ "$(xdg-mime query default application/vnd.appimage)" == '${appimage-run.name}.desktop' ]] + + set +x + touch $out + '' diff --git a/nixpkgs/pkgs/tools/package-management/appimagekit/default.nix b/nixpkgs/pkgs/tools/package-management/appimagekit/default.nix new file mode 100644 index 000000000000..d11cd1612758 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/appimagekit/default.nix @@ -0,0 +1,131 @@ +{ lib, stdenv, fetchFromGitHub +, pkg-config, cmake, autoconf, automake, libtool, makeWrapper +, wget, xxd, desktop-file-utils, file +, gnupg, glib, zlib, cairo, openssl, fuse, xz, squashfuse, inotify-tools, libarchive +, squashfsTools +, gtest +}: + +let + + appimagekit_src = fetchFromGitHub { + owner = "AppImage"; + repo = "AppImageKit"; + rev = "8bbf694455d00f48d835f56afaa1dabcd9178ba6"; + sha256 = "sha256-pqg+joomC5CI9WdKP/h/XKPsruMgZEaIOjPLOqnNPZw="; + fetchSubmodules = true; + }; + + # squashfuse adapted to nix from cmake experession in "${appimagekit_src}/lib/libappimage/cmake/dependencies.cmake" + appimagekit_squashfuse = squashfuse.overrideAttrs rec { + pname = "squashfuse"; + version = "unstable-2016-10-09"; + + src = fetchFromGitHub { + owner = "vasi"; + repo = pname; + rev = "1f980303b89c779eabfd0a0fdd36d6a7a311bf92"; + sha256 = "sha256-BZd1+7sRYZHthULKk3RlgMIy4uCUei45GbSEiZxLPFM="; + }; + + patches = [ + "${appimagekit_src}/lib/libappimage/src/patches/squashfuse.patch" + "${appimagekit_src}/lib/libappimage/src/patches/squashfuse_dlopen.patch" + ]; + + postPatch = '' + cp -v ${appimagekit_src}/lib/libappimage/src/patches/squashfuse_dlopen.[hc] . + ''; + + # Workaround build failure on -fno-common toolchains: + # ld: libsquashfuse_ll.a(libfuseprivate_la-fuseprivate.o):(.bss+0x8): + # multiple definition of `have_libloaded'; runtime.4.o:(.bss.have_libloaded+0x0): first defined here + env.NIX_CFLAGS_COMPILE = "-fcommon"; + + preConfigure = '' + sed -i "/PKG_CHECK_MODULES.*/,/,:./d" configure + sed -i "s/typedef off_t sqfs_off_t/typedef int64_t sqfs_off_t/g" common.h + ''; + + configureFlags = [ + "--disable-demo" "--disable-high-level" "--without-lzo" "--without-lz4" + ]; + + postConfigure = '' + sed -i "s|XZ_LIBS = -llzma |XZ_LIBS = -Bstatic -llzma/|g" Makefile + ''; + + # only static libs and header files + installPhase = '' + mkdir -p $out/lib $out/include + cp -v ./.libs/*.a $out/lib + cp -v ./*.h $out/include + ''; + }; + +in stdenv.mkDerivation rec { + pname = "appimagekit"; + version = "unstable-2020-12-31"; + + src = appimagekit_src; + + patches = [ ./nix.patch ]; + + postPatch = '' + patchShebangs src/embed-magic-bytes-in-file.sh + ''; + + nativeBuildInputs = [ + pkg-config cmake autoconf automake libtool wget xxd + desktop-file-utils makeWrapper + ]; + + buildInputs = [ + glib zlib cairo openssl fuse xz inotify-tools + libarchive squashfsTools appimagekit_squashfuse + ]; + + preConfigure = '' + export HOME=$(pwd) + ''; + + cmakeFlags = [ + "-DUSE_SYSTEM_XZ=ON" + "-DUSE_SYSTEM_SQUASHFUSE=ON" + "-DSQUASHFUSE=${appimagekit_squashfuse}" + "-DUSE_SYSTEM_LIBARCHIVE=ON" + "-DUSE_SYSTEM_GTEST=ON" + "-DUSE_SYSTEM_MKSQUASHFS=ON" + "-DTOOLS_PREFIX=${stdenv.cc.targetPrefix}" + ]; + + postInstall = '' + mkdir -p $out/lib/appimagekit + cp "${squashfsTools}/bin/mksquashfs" "$out/lib/appimagekit/" + cp "${desktop-file-utils}/bin/desktop-file-validate" "$out/bin" + + wrapProgram "$out/bin/appimagetool" \ + --prefix PATH : "${lib.makeBinPath [ file gnupg ]}" \ + --unset SOURCE_DATE_EPOCH + ''; + + nativeCheckInputs = [ gtest ]; + + # for debugging + passthru = { + squashfuse = appimagekit_squashfuse; + }; + + meta = with lib; { + description = "A tool to package desktop applications as AppImages"; + longDescription = '' + AppImageKit is an implementation of the AppImage format that + provides tools such as appimagetool and appimaged for handling + AppImages. + ''; + license = licenses.mit; + maintainers = with maintainers; [ taeer ]; + homepage = src.meta.homepage; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/appimagekit/nix.patch b/nixpkgs/pkgs/tools/package-management/appimagekit/nix.patch new file mode 100644 index 000000000000..f03922cb5ca4 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/appimagekit/nix.patch @@ -0,0 +1,82 @@ +Submodule lib/libappimage contains modified content +diff --git a/lib/libappimage/cmake/dependencies.cmake b/lib/libappimage/cmake/dependencies.cmake +index 8d96484..c7b17a1 100644 +--- a/lib/libappimage/cmake/dependencies.cmake ++++ b/lib/libappimage/cmake/dependencies.cmake +@@ -91,9 +91,18 @@ if(NOT USE_SYSTEM_SQUASHFUSE) + INCLUDE_DIRS "<SOURCE_DIR>" + ) + else() +- message(STATUS "Using system squashfuse") ++ message(STATUS "Using system squashfsfuse from ${SQUASHFUSE}") + +- import_pkgconfig_target(TARGET_NAME libsquashfuse PKGCONFIG_TARGET squashfuse) ++ add_library(libsquashfuse INTERFACE IMPORTED GLOBAL) ++ ++ set(squashfuse_INCLUDE_DIRS "${SQUASHFUSE}/include") ++ set(squashfuse_LIBRARIES "${SQUASHFUSE}/lib/libsquashfuse.a;${SQUASHFUSE}/lib/libsquashfuse_ll.a;${SQUASHFUSE}/lib/libfuseprivate.a") ++ ++ set_property( ++ TARGET libsquashfuse ++ PROPERTY INTERFACE_LINK_LIBRARIES ${squashfuse_LIBRARIES} ++ ) ++ include_directories(${squashfuse_INCLUDE_DIRS}) + endif() + + +diff --git a/src/appimagetool.c b/src/appimagetool.c +index 6b37419..23425e7 100644 +--- a/src/appimagetool.c ++++ b/src/appimagetool.c +@@ -38,7 +38,7 @@ + #include <argp.h> + + #include <fcntl.h> +-#include "squashfuse.h" ++#include <squashfuse.h> + + #include <sys/types.h> + #include <sys/stat.h> +@@ -96,7 +96,7 @@ static void die(const char *msg) { + } + + /* Function that prints the contents of a squashfs file +-* using libsquashfuse (#include "squashfuse.h") */ ++* using libsquashfuse (#include <squashfuse.h>) */ + int sfs_ls(char* image) { + sqfs_err err = SQFS_OK; + sqfs_traverse trv; +diff --git a/src/appimagetoolnoglib.c b/src/appimagetoolnoglib.c +index f900e76..ffa87f8 100644 +--- a/src/appimagetoolnoglib.c ++++ b/src/appimagetoolnoglib.c +@@ -3,7 +3,7 @@ + + #include <stdlib.h> + #include <fcntl.h> +-#include "squashfuse.h" ++#include <squashfuse.h> + + #include <sys/types.h> + #include <sys/stat.h> +@@ -118,7 +118,7 @@ int is_regular_file(const char *path) + } + + /* Function that prints the contents of a squashfs file +- * using libsquashfuse (#include "squashfuse.h") */ ++ * using libsquashfuse (#include <squashfuse.h>) */ + int sfs_ls(char* image) { + sqfs_err err = SQFS_OK; + sqfs_traverse trv; +diff --git a/src/runtime.c b/src/runtime.c +index bada3af..70a642b 100644 +--- a/src/runtime.c ++++ b/src/runtime.c +@@ -29,7 +29,7 @@ + + #define _GNU_SOURCE + +-#include "squashfuse.h" ++#include <squashfuse.h> + #include <squashfs_fs.h> + #include <nonstd.h> diff --git a/nixpkgs/pkgs/tools/package-management/apt-dater/default.nix b/nixpkgs/pkgs/tools/package-management/apt-dater/default.nix new file mode 100644 index 000000000000..a15ec7e9c168 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/apt-dater/default.nix @@ -0,0 +1,50 @@ +{ lib, stdenv, fetchFromGitHub +, autoreconfHook, pkg-config, gettext +, vim, glib, libxml2, ncurses, popt, screen +}: + +stdenv.mkDerivation rec { + pname = "apt-dater"; + version = "1.0.4"; + + src = fetchFromGitHub { + owner = "DE-IBH"; + repo = "apt-dater"; + rev = "v${version}"; + sha256 = "1r6gz9jkh1wxi11mcq5p9mqg0szclsaq8ic79vnfnbjdrmmdfi4y"; + }; + + nativeBuildInputs = [ + pkg-config autoreconfHook gettext + ]; + + buildInputs = [ + libxml2 ncurses vim glib popt screen + ]; + + configureFlags = [ "--disable-history" ]; + + prePatch = '' + substituteInPlace etc/Makefile.am \ + --replace 02770 0770 + ''; + + postPatch = '' + substituteInPlace configure.ac \ + --replace "/usr/bin/screen" "${screen}/bin/screen" + ''; + + doCheck = true; + + meta = with lib; { + homepage = "https://github.com/DE-IBH/apt-dater"; + description = "Terminal-based remote package update manager"; + longDescription = '' + Provides an ncurses frontend for managing package updates on a large + number of remote hosts using SSH. It supports Debian-based managed hosts + as well as rug (e.g. openSUSE) and yum (e.g. CentOS) based systems. + ''; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ c0bw3b ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/apx/default.nix b/nixpkgs/pkgs/tools/package-management/apx/default.nix new file mode 100644 index 000000000000..eb7b0f3a8c71 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/apx/default.nix @@ -0,0 +1,43 @@ +{ lib +, buildGoModule +, fetchFromGitHub +, distrobox +}: + +buildGoModule rec { + pname = "apx"; + version = "2.1.2"; + + src = fetchFromGitHub { + owner = "Vanilla-OS"; + repo = "apx"; + rev = "v${version}"; + hash = "sha256-0xQfbnLvNB1X1B8440CYHZWFGSQV319IU5tgXS3lyUI="; + }; + + vendorHash = null; + + ldflags = [ "-s" "-w" ]; + + postPatch = '' + substituteInPlace config/apx.json \ + --replace "/usr/share/apx/distrobox/distrobox" "${distrobox}/bin/distrobox" \ + --replace "/usr/share/apx" "$out/bin/apx" + substituteInPlace settings/config.go \ + --replace "/usr/share/apx/" "$out/share/apx/" + ''; + + postInstall = '' + install -D config/apx.json -t $out/share/apx/ + install -D man/man1/apx.1 -t $out/man/man1/ + ''; + + meta = with lib; { + description = "The Vanilla OS package manager"; + homepage = "https://github.com/Vanilla-OS/apx"; + changelog = "https://github.com/Vanilla-OS/apx/releases/tag/v${version}"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ dit7ya chewblacka ]; + mainProgram = "apx"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/cde/default.nix b/nixpkgs/pkgs/tools/package-management/cde/default.nix new file mode 100644 index 000000000000..2e0ceb53e4f9 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/cde/default.nix @@ -0,0 +1,50 @@ +{ lib, stdenv, fetchFromGitHub, libxcrypt }: + +stdenv.mkDerivation rec { + pname = "cde"; + version = "0.1"; + + src = fetchFromGitHub { + owner = "usnistgov"; + repo = "corr-CDE"; + rev = "v${version}"; + sha256 = "sha256-s375gtqBWx0GGXALXR+fN4bb3tmpvPNu/3bNz+75UWU="; + }; + + # The build is small, so there should be no problem + # running this locally. There is also a use case for + # older systems, where modern binaries might not be + # useful. + preferLocalBuild = true; + + buildInputs = [ libxcrypt ]; + + patchBuild = '' + sed -i -e '/install/d' $src/Makefile + ''; + + preBuild = '' + patchShebangs . + ''; + + # Workaround build failure on -fno-common toolchains like upstream + # gcc-10. Otherwise build fails as: + # ld: ../readelf-mini/libreadelf-mini.a(dwarf.o):/build/source/readelf-mini/dwarf.c:64: + # multiple definition of `do_wide'; ../readelf-mini/libreadelf-mini.a(readelf-mini.o):/build/source/readelf-mini/readelf-mini.c:170: first defined here + env.NIX_CFLAGS_COMPILE = "-fcommon"; + + installPhase = '' + install -d $out/bin + install -t $out/bin cde cde-exec + ''; + + meta = with lib; { + homepage = "https://github.com/usnistgov/corr-CDE"; + description = "A packaging tool for building portable packages"; + license = licenses.gpl3Plus; + maintainers = [ maintainers.rlupton20 ]; + platforms = platforms.linux; + # error: architecture aarch64 is not supported by bundled strace + badPlatforms = [ "aarch64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/default.nix b/nixpkgs/pkgs/tools/package-management/checkinstall/default.nix new file mode 100644 index 000000000000..323464847b60 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/checkinstall/default.nix @@ -0,0 +1,81 @@ +{lib, stdenv, fetchurl, gettext }: + +stdenv.mkDerivation rec { + pname = "checkinstall"; + version = "1.6.2"; + + src = fetchurl { + url = "https://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-${version}.tar.gz"; + sha256 = "1x4kslyvfd6lm6zd1ylbq2pjxrafb77ydfjaqi16sa5qywn1jqfw"; + }; + + patches = [ + # Include empty directories created by the installation script in + # generated packages. (E.g., if a `make install' does `mkdir + # /var/lib/mystuff', then /var/lib/mystuff should be included in + # the package.) + ./empty-dirs.patch + + # Implement the getxattr(), lgetxattr(), __open_2() and + # __open64_2() functions. Needed for doing builds on Ubuntu 8.10. + ./missing-functions.patch + + # Don't include directories in the Debian `conffiles' file. + ./etc-dirs.patch + + # Support Glibc >= 2.8. + ./glibc-check.patch + + # Fix a `conflicting types for 'scandir'' error on Glibc 2.11. + ./scandir.patch + + # Fix a `conflicting types for 'readlink'' error since Glibc 2.19 + ./readlink-types.patch + + # Fix BuildRoot handling in RPM builds. + ./set-buildroot.patch + + (fetchurl { + url = "https://salsa.debian.org/debian/checkinstall/-/raw/7175ae9de0e45f42fdd7f185ab9a12043d5efeeb/debian/patches/0016-Define-_STAT_VER-_MKNOD_VER-locally-dropped-in-glibc.patch"; + hash = "sha256-InodEfvVMuN708yjXPrVXb+q8aUcyFhCLx35PHls0Eo="; + }) + ] + + ++ lib.optional (stdenv.hostPlatform.system == "x86_64-linux") + # Force use of old memcpy so that installwatch works on Glibc < + # 2.14. + ./use-old-memcpy.patch; + + buildInputs = [gettext]; + + hardeningDisable = [ "fortify" ]; + + preBuild = '' + makeFlagsArray=(PREFIX=$out) + + substituteInPlace checkinstall --replace /usr/local/lib/checkinstall $out/lib/checkinstall + substituteInPlace checkinstallrc-dist --replace /usr/local $out + + substituteInPlace installwatch/create-localdecls \ + --replace /usr/include/unistd.h ${stdenv.cc.libc.dev}/include/unistd.h + ''; + + postInstall = + # Clear the RPATH, otherwise installwatch.so won't work properly + # as an LD_PRELOADed library on applications that load against a + # different Glibc. + '' + patchelf --set-rpath "" $out/lib/installwatch.so + ''; + + meta = { + homepage = "http://checkinstall.izto.org/"; + description = "A tool for automatically generating Slackware, RPM or Debian packages when doing `make install'"; + maintainers = [ lib.maintainers.eelco ]; + platforms = lib.platforms.linux; + license = lib.licenses.gpl2; + knownVulnerabilities = [ + "CVE-2020-25031" + ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/empty-dirs.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/empty-dirs.patch new file mode 100644 index 000000000000..9a3e29c84c12 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/checkinstall/empty-dirs.patch @@ -0,0 +1,49 @@ +diff -rc checkinstall-orig/checkinstall checkinstall/checkinstall +*** checkinstall-orig/checkinstall 2009-03-12 13:40:24.000000000 +0100 +--- checkinstall/checkinstall 2009-03-27 14:51:55.000000000 +0100 +*************** +*** 1635,1644 **** + + # Find regular files first + [ $DEBUG -gt 0 ] && echo "debug: BASE_TMP_DIR: $BASE_TMP_DIR" +! cat /${TMP_DIR}/newfiles.tmp | egrep -v '^[-0-9][0-9]*[[:space:]]*(unlink|access)' | cut -f 3 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | sort -u > /${TMP_DIR}/newfiles + + # symlinks are next +! cat /${TMP_DIR}/newfiles.tmp | egrep -v '^[-0-9][0-9]*[[:space:]]*(unlink|access)' | cut -f 4 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | grep -v "#success" | sort -u >> /${TMP_DIR}/newfiles + # Create another list of modified files that exclude all files the + # install script wanted to create but did not, e.g because they already + # existed. +--- 1635,1648 ---- + + # Find regular files first + [ $DEBUG -gt 0 ] && echo "debug: BASE_TMP_DIR: $BASE_TMP_DIR" +! cat /${TMP_DIR}/newfiles.tmp | egrep -v '^[-0-9][0-9]*[[:space:]]*(unlink|access|mkdir)' | cut -f 3 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | sort -u > /${TMP_DIR}/newfiles + + # symlinks are next +! cat /${TMP_DIR}/newfiles.tmp | egrep -v '^[-0-9][0-9]*[[:space:]]*(unlink|access|mkdir)' | cut -f 4 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | grep -v "#success" | sort -u >> /${TMP_DIR}/newfiles +! +! # And finally newly created directories. +! cat /${TMP_DIR}/newfiles.tmp | egrep '^0[[:space:]]+mkdir[[:space:]]+' | cut -f 3 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | sort -u >> /${TMP_DIR}/newfiles +! + # Create another list of modified files that exclude all files the + # install script wanted to create but did not, e.g because they already + # existed. +*************** +*** 1738,1746 **** + cd / + + ( cat /${TMP_DIR}/newfiles | while read i; do +! if [ ! -d "${TRANSLROOT}${i}" -o -L "${TRANSLROOT}${i}" ]; then +! echo ".${i}" +! fi + done ) > /${TMP_DIR}/newfiles-tar + + # Here it gets tricky: we need to copy all new files to our build dir, +--- 1742,1748 ---- + cd / + + ( cat /${TMP_DIR}/newfiles | while read i; do +! echo ".${i}" + done ) > /${TMP_DIR}/newfiles-tar + + # Here it gets tricky: we need to copy all new files to our build dir, diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/etc-dirs.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/etc-dirs.patch new file mode 100644 index 000000000000..a811e4afbb97 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/checkinstall/etc-dirs.patch @@ -0,0 +1,25 @@ +diff -rc checkinstall-orig/checkinstall checkinstall/checkinstall +*** checkinstall-orig/checkinstall 2009-03-27 17:07:26.000000000 +0100 +--- checkinstall/checkinstall 2009-04-14 16:34:08.000000000 +0200 +*************** +*** 2607,2615 **** + chmod 755 $BUILD_DIR/DEBIAN/postrm + fi + +! # Tag files in /etc to be conffiles + find $BUILD_DIR/etc 2> /dev/null | sed -e "s,$BUILD_DIR,," | \ +! grep -v '^/etc$' > $BUILD_DIR/DEBIAN/conffiles + + # The package will be saved here (ignores <epoch>: prefix): + DEBPKG="${DIRECTORIO_FUENTE}/${NAME}_`echo ${VERSION} | sed -e 's/^[0123456789]*://'`-${RELEASE}_${ARCHITECTURE}.deb" +--- 2607,2616 ---- + chmod 755 $BUILD_DIR/DEBIAN/postrm + fi + +! # Tag non-directory files in /etc to be conffiles + find $BUILD_DIR/etc 2> /dev/null | sed -e "s,$BUILD_DIR,," | \ +! (while read fn; do test ! -d "$BUILD_DIR/$fn" && echo "$fn"; done) \ +! > $BUILD_DIR/DEBIAN/conffiles + + # The package will be saved here (ignores <epoch>: prefix): + DEBPKG="${DIRECTORIO_FUENTE}/${NAME}_`echo ${VERSION} | sed -e 's/^[0123456789]*://'`-${RELEASE}_${ARCHITECTURE}.deb" diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/glibc-check.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/glibc-check.patch new file mode 100644 index 000000000000..7f8cbccae8e5 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/checkinstall/glibc-check.patch @@ -0,0 +1,71 @@ +diff -x '*~' -rc checkinstall-1.6.2pre20081116-orig/installwatch/create-localdecls checkinstall-1.6.2pre20081116/installwatch/create-localdecls +*** checkinstall-1.6.2pre20081116-orig/installwatch/create-localdecls 2008-11-16 17:18:58.000000000 +0100 +--- checkinstall-1.6.2pre20081116/installwatch/create-localdecls 2009-09-18 17:01:13.000000000 +0200 +*************** +*** 46,52 **** + echo -n 'Checking libc version... ' + gcc -Wall -o libctest libctest.c + VERSION=`ldd libctest | grep libc\\.so | awk '{print $1}'` +- rm libctest + echo $VERSION + echo "#define LIBC_VERSION \"$VERSION\"" >> $OUTFILE + if test "$VERSION" = 'libc.so.5' ; then +--- 46,51 ---- +*************** +*** 56,62 **** + + if test "$VERSION" = 'libc.so.6' ; then + echo -n 'Checking glibc subversion... ' +! tmp="`ldd /bin/sh | grep libc.so 2> /dev/null`" + LibcPath=`expr "$tmp" : '[^/]*\(/[^ ]*\)'` + tmp="`strings $LibcPath | grep -i 'c library'`" + OsLibcMajor=`expr "$tmp" : '.* \([0-9][0-9]*\)'` +--- 55,61 ---- + + if test "$VERSION" = 'libc.so.6' ; then + echo -n 'Checking glibc subversion... ' +! tmp="`ldd libctest | grep libc.so 2> /dev/null`" + LibcPath=`expr "$tmp" : '[^/]*\(/[^ ]*\)'` + tmp="`strings $LibcPath | grep -i 'c library'`" + OsLibcMajor=`expr "$tmp" : '.* \([0-9][0-9]*\)'` +*************** +*** 86,103 **** + 6) + echo '#define GLIBC_MINOR 6' >> $OUTFILE + SUBVERSION='glibc-2.6' ;; +! 7) + echo '#define GLIBC_MINOR 7' >> $OUTFILE + SUBVERSION='glibc-2.7' ;; + *) +- echo 'Treated as glibc >= 2.1 (finger crossed)' + echo '#define GLIBC_MINOR 1' >> $OUTFILE + SUBVERSION='glibc-2.1' ;; + esac + ;; + esac + fi + + echo >> $OUTFILE + echo '#endif' >> $OUTFILE + +--- 85,104 ---- + 6) + echo '#define GLIBC_MINOR 6' >> $OUTFILE + SUBVERSION='glibc-2.6' ;; +! 7|8|9|10|11|12|13|14|15|16|17|18) + echo '#define GLIBC_MINOR 7' >> $OUTFILE + SUBVERSION='glibc-2.7' ;; + *) + echo '#define GLIBC_MINOR 1' >> $OUTFILE + SUBVERSION='glibc-2.1' ;; + esac + ;; + esac ++ echo $SUBVERSION + fi + ++ rm libctest ++ + echo >> $OUTFILE + echo '#endif' >> $OUTFILE + diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/missing-functions.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/missing-functions.patch new file mode 100644 index 000000000000..02066134b2ed --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/checkinstall/missing-functions.patch @@ -0,0 +1,162 @@ +diff -rc checkinstall-orig/installwatch/installwatch.c checkinstall/installwatch/installwatch.c +*** checkinstall-orig/installwatch/installwatch.c 2009-03-12 13:40:24.000000000 +0100 +--- checkinstall/installwatch/installwatch.c 2009-03-27 22:42:19.000000000 +0100 +*************** +*** 110,115 **** +--- 110,117 ---- + static int (*true_setxattr)(const char *,const char *,const void *, + size_t, int); + static int (*true_removexattr)(const char *,const char *); ++ static ssize_t (*true_getxattr)(const char *,const char *,const void *,size_t); ++ static ssize_t (*true_lgetxattr)(const char *,const char *,const void *,size_t); + + #if(GLIBC_MINOR >= 1) + +*************** +*** 369,374 **** +--- 371,378 ---- + true_unlink = dlsym(libc_handle, "unlink"); + true_utime = dlsym(libc_handle, "utime"); + true_setxattr = dlsym(libc_handle, "setxattr"); ++ true_getxattr = dlsym(libc_handle, "getxattr"); ++ true_lgetxattr = dlsym(libc_handle, "lgetxattr"); + true_utimes = dlsym(libc_handle, "utimes"); + true_access = dlsym(libc_handle, "access"); + +*************** +*** 3494,3499 **** +--- 3498,3587 ---- + return result; + } + ++ int getxattr (const char *pathname, const char *name, ++ const void *value, size_t size) ++ { ++ int result; ++ instw_t instw; ++ int status; ++ ++ REFCOUNT; ++ ++ if (!libc_handle) ++ initialize(); ++ ++ #if DEBUG ++ debug(2,"getxattr(%s,%s)\n",pathname,name); ++ #endif ++ ++ /* We were asked to work in "real" mode */ ++ if( !(__instw.gstatus & INSTW_INITIALIZED) || ++ !(__instw.gstatus & INSTW_OKWRAP) ) { ++ result=true_getxattr(pathname,name,value,size); ++ return result; ++ } ++ ++ instw_new(&instw); ++ instw_setpath(&instw,pathname); ++ instw_getstatus(&instw,&status); ++ ++ #if DEBUG ++ instw_print(&instw); ++ #endif ++ ++ if(status&INSTW_TRANSLATED) { ++ result=true_getxattr(instw.translpath,name,value,size); ++ } else { ++ result=true_getxattr(instw.path,name,value,size); ++ } ++ ++ instw_delete(&instw); ++ ++ return result; ++ } ++ ++ int lgetxattr (const char *pathname, const char *name, ++ const void *value, size_t size) ++ { ++ int result; ++ instw_t instw; ++ int status; ++ ++ REFCOUNT; ++ ++ if (!libc_handle) ++ initialize(); ++ ++ #if DEBUG ++ debug(2,"lgetxattr(%s,%s)\n",pathname,name); ++ #endif ++ ++ /* We were asked to work in "real" mode */ ++ if( !(__instw.gstatus & INSTW_INITIALIZED) || ++ !(__instw.gstatus & INSTW_OKWRAP) ) { ++ result=true_lgetxattr(pathname,name,value,size); ++ return result; ++ } ++ ++ instw_new(&instw); ++ instw_setpath(&instw,pathname); ++ instw_getstatus(&instw,&status); ++ ++ #if DEBUG ++ instw_print(&instw); ++ #endif ++ ++ if(status&INSTW_TRANSLATED) { ++ result=true_lgetxattr(instw.translpath,name,value,size); ++ } else { ++ result=true_lgetxattr(instw.path,name,value,size); ++ } ++ ++ instw_delete(&instw); ++ ++ return result; ++ } ++ + #if(GLIBC_MINOR >= 1) + + int creat64(const char *pathname, __mode_t mode) { +*************** +*** 3663,3668 **** +--- 3751,3791 ---- + return result; + } + ++ int __open_2(const char *pathname, int flags, ...) { ++ va_list ap; ++ mode_t mode; ++ ++ #if DEBUG ++ debug(2,"__open_2(%s,%d,mode)\n",pathname,flags); ++ #endif ++ ++ va_start(ap, flags); ++ mode = va_arg(ap, mode_t); ++ va_end(ap); ++ ++ /* The open() function in Glibc 2.9 is an always-inline ++ function that may call __open_2(), so it's important that ++ we handle it. I don't know what __open_2() is supposed to ++ do, but redirecting it to open() seems to work fine. */ ++ ++ return open(pathname,flags,mode); ++ } ++ ++ int __open64_2(const char *pathname, int flags, ...) { ++ va_list ap; ++ mode_t mode; ++ ++ #if DEBUG ++ debug(2,"__open64_2(%s,%d,mode)\n",pathname,flags); ++ #endif ++ ++ va_start(ap, flags); ++ mode = va_arg(ap, mode_t); ++ va_end(ap); ++ ++ return open64(pathname,flags,mode); ++ } ++ + struct dirent64 *readdir64(DIR *dir) { + struct dirent64 *result; + diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/readlink-types.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/readlink-types.patch new file mode 100644 index 000000000000..a860607fcf66 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/checkinstall/readlink-types.patch @@ -0,0 +1,19 @@ +Extracted from Arch's patch +https://projects.archlinux.org/svntogit/community.git/tree/trunk/build-fix.patch?h=packages/checkinstall +diff -wbBur checkinstall-1.6.2/installwatch/installwatch.c checkinstall-1.6.2.my/installwatch/installwatch.c +--- checkinstall-1.6.2/installwatch/installwatch.c 2008-11-16 19:20:53.000000000 +0300 ++++ checkinstall-1.6.2.my/installwatch/installwatch.c 2010-01-15 18:55:50.112716628 +0300 +@@ -2938,13 +2938,8 @@ + return result; + } + +-#if (GLIBC_MINOR <= 4) +-int readlink(const char *path,char *buf,size_t bufsiz) { +- int result; +-#else + ssize_t readlink(const char *path,char *buf,size_t bufsiz) { + ssize_t result; +-#endif + instw_t instw; + int status; + diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/scandir.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/scandir.patch new file mode 100644 index 000000000000..ae40100a9804 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/checkinstall/scandir.patch @@ -0,0 +1,75 @@ +diff -rc -x '*~' checkinstall-1.6.2-orig/installwatch/installwatch.c checkinstall-1.6.2/installwatch/installwatch.c +*** checkinstall-1.6.2-orig/installwatch/installwatch.c 2008-11-16 17:20:53.000000000 +0100 +--- checkinstall-1.6.2/installwatch/installwatch.c 2010-02-08 16:35:17.000000000 +0100 +*************** +*** 100,106 **** + static int (*true_lxstat)(int,const char *,struct stat *); + static int (*true_scandir)( const char *,struct dirent ***, + int (*)(const struct dirent *), +! int (*)(const void *,const void *)); + static int (*true_symlink)(const char *, const char *); + static int (*true_truncate)(const char *, TRUNCATE_T); + static int (*true_unlink)(const char *); +--- 100,106 ---- + static int (*true_lxstat)(int,const char *,struct stat *); + static int (*true_scandir)( const char *,struct dirent ***, + int (*)(const struct dirent *), +! int (*)(const struct dirent **,const struct dirent **)); + static int (*true_symlink)(const char *, const char *); + static int (*true_truncate)(const char *, TRUNCATE_T); + static int (*true_unlink)(const char *); +*************** +*** 120,126 **** + static struct dirent64 *(*true_readdir64)(DIR *dir); + static int (*true_scandir64)( const char *,struct dirent64 ***, + int (*)(const struct dirent64 *), +! int (*)(const void *,const void *)); + static int (*true_xstat64)(int,const char *, struct stat64 *); + static int (*true_lxstat64)(int,const char *, struct stat64 *); + static int (*true_truncate64)(const char *, __off64_t); +--- 120,126 ---- + static struct dirent64 *(*true_readdir64)(DIR *dir); + static int (*true_scandir64)( const char *,struct dirent64 ***, + int (*)(const struct dirent64 *), +! int (*)(const struct dirent64 **,const struct dirent64 **)); + static int (*true_xstat64)(int,const char *, struct stat64 *); + static int (*true_lxstat64)(int,const char *, struct stat64 *); + static int (*true_truncate64)(const char *, __off64_t); +*************** +*** 3077,3085 **** + return result; + } + +! int scandir( const char *dir,struct dirent ***namelist, + int (*select)(const struct dirent *), +! int (*compar)(const void *,const void *) ) { + int result; + + if (!libc_handle) +--- 3077,3085 ---- + return result; + } + +! int scandir( const char * dir,struct dirent ***namelist, + int (*select)(const struct dirent *), +! int (*compar)(const struct dirent **,const struct dirent **) ) { + int result; + + if (!libc_handle) +*************** +*** 3691,3697 **** + + int scandir64( const char *dir,struct dirent64 ***namelist, + int (*select)(const struct dirent64 *), +! int (*compar)(const void *,const void *) ) { + int result; + + if (!libc_handle) +--- 3691,3697 ---- + + int scandir64( const char *dir,struct dirent64 ***namelist, + int (*select)(const struct dirent64 *), +! int (*compar)(const struct dirent64 **,const struct dirent64 **) ) { + int result; + + if (!libc_handle) diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/set-buildroot.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/set-buildroot.patch new file mode 100644 index 000000000000..58840f491ecf --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/checkinstall/set-buildroot.patch @@ -0,0 +1,15 @@ +https://build.opensuse.org/package/view_file/openSUSE:13.1/checkinstall/checkinstall-set_buildroot.patch + +Index: checkinstall +=================================================================== +--- a/checkinstall 2009-12-26 20:17:24.000000000 +0100 ++++ b/checkinstall 2011-01-31 18:17:56.171593541 +0100 +@@ -2463,7 +2463,7 @@ cd "$DIRECTORIO_FUENTE" + + echo + echogn "Building RPM package..." +-$RPMBUILD -bb ${RPM_TARGET_FLAG}${ARCHITECTURE} "$SPEC_PATH" &> ${TMP_DIR}/rpmbuild.log ++$RPMBUILD --buildroot ${BUILDROOT} -bb ${RPM_TARGET_FLAG}${ARCHITECTURE} "$SPEC_PATH" &> ${TMP_DIR}/rpmbuild.log + okfail + + if [ $? -gt 0 ]; then diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch new file mode 100644 index 000000000000..c8be7f0b5e26 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch @@ -0,0 +1,12 @@ +diff -ru -x '*~' checkinstall-1.6.2-orig/installwatch/installwatch.c checkinstall-1.6.2/installwatch/installwatch.c +--- checkinstall-1.6.2-orig/installwatch/installwatch.c 2008-11-16 17:20:53.000000000 +0100 ++++ checkinstall-1.6.2/installwatch/installwatch.c 2013-03-15 13:50:12.717646381 +0100 +@@ -28,6 +28,8 @@ + * <mail@fredemmott.co.uk> + */ + ++asm (".symver memcpy, memcpy@GLIBC_2.2.5"); ++ + #include <sys/param.h> + #include <sys/types.h> + #include <sys/stat.h> diff --git a/nixpkgs/pkgs/tools/package-management/ciel/Cargo.lock b/nixpkgs/pkgs/tools/package-management/ciel/Cargo.lock new file mode 100644 index 000000000000..3fce9253591d --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/ciel/Cargo.lock @@ -0,0 +1,2342 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" + +[[package]] +name = "ar" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d67af77d68a931ecd5cbd8a3b5987d63a1d1d1278f7f6a60ae33db485cdebb69" + +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" +dependencies = [ + "async-lock", + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock", + "autocfg", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794" +dependencies = [ + "async-lock", + "autocfg", + "concurrent-queue", + "futures-lite", + "libc", + "log", + "parking", + "polling", + "slab", + "socket2", + "waker-fn", + "windows-sys 0.42.0", +] + +[[package]] +name = "async-lock" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-recursion" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.2", +] + +[[package]] +name = "async-task" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + +[[package]] +name = "async-trait" +version = "0.1.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ea188f25f0255d8f92797797c97ebf5631fa88178beb1a46fdf5622c9a00e4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.2", +] + +[[package]] +name = "atomic-waker" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5dd14596c0e5b954530d0e6f1fd99b89c03e313aa2086e8da4303701a09e1cf" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8" +dependencies = [ + "async-channel", + "async-lock", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", +] + +[[package]] +name = "build-env" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1522ac6ee801a11bf9ef3f80403f4ede6eb41291fac3dde3de09989679305f25" + +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "ciel-rs" +version = "3.1.4" +dependencies = [ + "adler32", + "anyhow", + "ar", + "bincode", + "clap", + "clap_complete", + "console", + "dialoguer", + "dotenv", + "faster-hex", + "flate2", + "fs3", + "git2", + "indicatif", + "lazy_static", + "libc", + "libmount", + "libsystemd-sys", + "nix", + "rand", + "rayon", + "reqwest", + "serde", + "sha2", + "tabwriter", + "tar", + "tempfile", + "time", + "toml", + "walkdir", + "which", + "xattr 1.0.0", + "xz2", + "zbus", +] + +[[package]] +name = "clap" +version = "4.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42dfd32784433290c51d92c438bb72ea5063797fc3cc9a21a8c4346bebbb2098" +dependencies = [ + "bitflags 2.0.1", + "clap_lex", + "is-terminal", + "strsim", + "termcolor", + "terminal_size", +] + +[[package]] +name = "clap_complete" +version = "4.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37686beaba5ac9f3ab01ee3172f792fc6ffdd685bfb9e63cfef02c0571a4e8e1" +dependencies = [ + "clap", +] + +[[package]] +name = "clap_lex" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "033f6b7a4acb1f358c742aaca805c939ee73b4c6209ae4318ec7aca81c42e646" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "concurrent-queue" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.42.0", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cpufeatures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset 0.8.0", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dialoguer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af3c796f3b0b408d9fd581611b47fa850821fcb84aa640b83a3c1a5be2d691f2" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enumflags2" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "faster-hex" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51e2ce894d53b295cf97b05685aa077950ff3e8541af83217fc720a6437169f8" + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "filetime" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "windows-sys 0.45.0", +] + +[[package]] +name = "flate2" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb17cf6ed704f72485332f6ab65257460c4f9f3083934cf402bf9f5b3b600a90" +dependencies = [ + "libc", + "rustc_version", + "winapi", +] + +[[package]] +name = "futures-channel" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd" + +[[package]] +name = "futures-io" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-sink" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2" + +[[package]] +name = "futures-task" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879" + +[[package]] +name = "futures-util" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "git2" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf7f68c2995f392c49fffb4f95ae2c873297830eb25c6bc4c114ce8f4562acc" +dependencies = [ + "bitflags 1.3.2", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", +] + +[[package]] +name = "h2" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "indicatif" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef509aa9bc73864d6756f0d34d35504af3cf0844373afe9b8669a5b8005a729" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd6da19f25979c7270e70fa95ab371ec3b701cd0eefc47667a09785b3c59155" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.45.0", +] + +[[package]] +name = "ipnet" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" + +[[package]] +name = "is-terminal" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8687c819457e979cc940d09cb16e42a1bf70aa6b60a549de6d3a62a0ee90c69e" +dependencies = [ + "hermit-abi 0.3.1", + "io-lifetimes", + "rustix", + "windows-sys 0.45.0", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" + +[[package]] +name = "jobserver" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" + +[[package]] +name = "libgit2-sys" +version = "0.14.2+1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f3d95f6b51075fe9810a7ae22c7095f12b98005ab364d8544797a825ce946a4" +dependencies = [ + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] + +[[package]] +name = "libmount" +version = "0.1.15" +source = "git+https://github.com/liushuyu/libmount?rev=163b2a70d10a4b38c1653c7283c8de28aad6bd54#163b2a70d10a4b38c1653c7283c8de28aad6bd54" +dependencies = [ + "libc", + "nix", + "quick-error", +] + +[[package]] +name = "libssh2-sys" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libsystemd-sys" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed080163caa59cc29b34bce2209b737149a4bac148cd9a8b04e4c12822798119" +dependencies = [ + "build-env", + "libc", + "pkg-config", +] + +[[package]] +name = "libz-sys" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.45.0", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nix" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", + "pin-utils", + "static_assertions", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", + "libc", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "once_cell" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" + +[[package]] +name = "openssl" +version = "0.10.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd2523381e46256e40930512c7fd25562b9eae4812cb52078f155e87217c9d1e" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "176be2629957c157240f68f61f2d0053ad3a4ecfdd9ebf1e6521d18d9635cf67" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "os_str_bytes" +version = "6.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "polling" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e1f879b2998099c2d69ab9605d145d5b661195627eccc680002c4918a7fb6fa" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.45.0", +] + +[[package]] +name = "portable-atomic" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26f6a7b87c2e435a3241addceeeff740ff8b7e76b74c13bf9acb17fa454ea00b" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quote" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" + +[[package]] +name = "reqwest" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.36.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fe885c3a125aa45213b68cc1472a49880cb5923dc23f522ad2791b882228778" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.45.0", +] + +[[package]] +name = "ryu" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +dependencies = [ + "windows-sys 0.42.0", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "security-framework" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.157" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707de5fcf5df2b5788fca98dd7eab490bc2fd9b7ef1404defc462833b83f25ca" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.157" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78997f4555c22a7971214540c4a661291970619afd56de19f77e0de86296e1e5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.2", +] + +[[package]] +name = "serde_json" +version = "1.0.94" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.2", +] + +[[package]] +name = "serde_spanned" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59d3276aee1fa0c33612917969b5172b5be2db051232a6e4826f1a1a9191b045" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tabwriter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36205cfc997faadcc4b0b87aaef3fbedafe20d38d4959a7ca6ff803564051111" +dependencies = [ + "lazy_static", + "regex", + "unicode-width", +] + +[[package]] +name = "tar" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +dependencies = [ + "filetime", + "libc", + "xattr 0.2.3", +] + +[[package]] +name = "tempfile" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" +dependencies = [ + "cfg-if", + "fastrand", + "redox_syscall", + "rustix", + "windows-sys 0.42.0", +] + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal_size" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c9afddd2cec1c0909f06b00ef33f94ab2cc0578c4a610aa208ddfec8aa2b43a" +dependencies = [ + "rustix", + "windows-sys 0.45.0", +] + +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.2", +] + +[[package]] +name = "time" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +dependencies = [ + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + +[[package]] +name = "time-macros" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "pin-project-lite", + "socket2", + "windows-sys 0.45.0", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc18466501acd8ac6a3f615dd29a3438f8ca6bb3b19537138b3106e575621274" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "uds_windows" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce65604324d3cce9b966701489fbd0cf318cb1f7bd9dd07ac9a4ee6fb791930d" +dependencies = [ + "tempfile", + "winapi", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d502c968c6a838ead8e69b2ee18ec708802f99db92a0d156705ec9ef801993b" + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" + +[[package]] +name = "web-sys" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "which" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +dependencies = [ + "either", + "libc", + "once_cell", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "winnow" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d020b441f92996c80d94ae9166e8501e59c7bb56121189dc9eab3bd8216966" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "xattr" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" +dependencies = [ + "libc", +] + +[[package]] +name = "xattr" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea263437ca03c1522846a4ddafbca2542d0ad5ed9b784909d4b27b76f62bc34a" +dependencies = [ + "libc", +] + +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + +[[package]] +name = "zbus" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dc29e76f558b2cb94190e8605ecfe77dd40f5df8c072951714b4b71a97f5848" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-recursion", + "async-task", + "async-trait", + "byteorder", + "derivative", + "dirs", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "once_cell", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "winapi", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62a80fd82c011cd08459eaaf1fd83d3090c1b61e6d5284360074a7475af3a85d" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f34f314916bd89bdb9934154627fab152f4f28acdda03e7c4c68181b214fe7e3" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zeroize" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" + +[[package]] +name = "zvariant" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46fe4914a985446d6fd287019b5fceccce38303d71407d9e6e711d44954a05d8" +dependencies = [ + "byteorder", + "enumflags2", + "libc", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/nixpkgs/pkgs/tools/package-management/ciel/default.nix b/nixpkgs/pkgs/tools/package-management/ciel/default.nix new file mode 100644 index 000000000000..87ea364aa4c4 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/ciel/default.nix @@ -0,0 +1,72 @@ +{ lib +, bash +, dbus +, fetchFromGitHub +, fetchpatch +, installShellFiles +, libgit2 +, libssh2 +, openssl +, pkg-config +, rustPlatform +, systemd +, xz +, zlib +}: + +rustPlatform.buildRustPackage rec { + pname = "ciel"; + version = "3.1.4"; + + src = fetchFromGitHub { + owner = "AOSC-Dev"; + repo = "ciel-rs"; + rev = "refs/tags/v${version}"; + hash = "sha256-b8oTVtDcxrV41OtfuthIxjbgZTANCfYHQLRJnnEc93c="; + }; + + cargoLock = { + lockFile = ./Cargo.lock; + outputHashes = { + "libmount-0.1.15" = "sha256-t7CGGqJC85od8lOng9+Cn0+WDef6aciLLgxnQn1MrBk="; + }; + }; + + nativeBuildInputs = [ pkg-config installShellFiles ]; + + # ciel has plugins which is actually bash scripts. + # Therefore, bash is required for plugins to work. + buildInputs = [ bash systemd dbus openssl libssh2 libgit2 xz zlib ]; + + patches = [ + # cli,completions: use canonicalize path to find libexec location + # FIXME: remove this patch after https://github.com/AOSC-Dev/ciel-rs/pull/16 is merged + (fetchpatch { + name = "use-canonicalize-path-to-find-libexec.patch"; + url = "https://github.com/AOSC-Dev/ciel-rs/commit/17f41538ed1057e855540f5abef7faf6ea4abf5c.patch"; + sha256 = "sha256-ELK2KpOuoBS774apomUIo8q1eXYs/FX895G7eBdgOQg="; + }) + ]; + + postInstall = '' + mv -v "$out/bin/ciel-rs" "$out/bin/ciel" + + # From install-assets.sh + install -Dm555 -t "$out/libexec/ciel-plugin" plugins/* + + # Install completions + installShellCompletion --cmd ciel \ + --bash completions/ciel.bash \ + --fish completions/ciel.fish \ + --zsh completions/_ciel + ''; + + meta = with lib; { + description = "A tool for controlling AOSC OS packaging environments using multi-layer filesystems and containers."; + homepage = "https://github.com/AOSC-Dev/ciel-rs"; + license = licenses.mit; + platforms = platforms.linux; + maintainers = with maintainers; [ yisuidenghua ]; + mainProgram = "ciel"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/clib/default.nix b/nixpkgs/pkgs/tools/package-management/clib/default.nix new file mode 100644 index 000000000000..4ecd812ddc2a --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/clib/default.nix @@ -0,0 +1,25 @@ +{ lib, stdenv, fetchFromGitHub, curl }: + +stdenv.mkDerivation rec { + version = "2.8.5"; + pname = "clib"; + + src = fetchFromGitHub { + rev = version; + owner = "clibs"; + repo = "clib"; + sha256 = "sha256-znvqxZWkQndxE6s36c77whUPc1UokrofTApFSIKFOtM="; + }; + + makeFlags = [ "PREFIX=$(out)" ]; + + buildInputs = [ curl ]; + + meta = with lib; { + description = "C micro-package manager"; + homepage = "https://github.com/clibs/clib"; + license = licenses.mit; + maintainers = with maintainers; [ jb55 ]; + platforms = platforms.all; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/comma/default.nix b/nixpkgs/pkgs/tools/package-management/comma/default.nix new file mode 100644 index 000000000000..b73e64924a6d --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/comma/default.nix @@ -0,0 +1,43 @@ +{ comma +, fetchFromGitHub +, fzy +, lib +, makeBinaryWrapper +, nix-index-unwrapped +, rustPlatform +, testers +}: + +rustPlatform.buildRustPackage rec { + pname = "comma"; + version = "1.7.1"; + + src = fetchFromGitHub { + owner = "nix-community"; + repo = "comma"; + rev = "v${version}"; + hash = "sha256-x2HVm2vcEFHDrCQLIp5QzNsDARcbBfPdaIMLWVNfi4c="; + }; + + cargoHash = "sha256-N6Bc0+m0Qz1c/80oLvQTj8gvMusPXIriegNlRYWWStU="; + + nativeBuildInputs = [ makeBinaryWrapper ]; + + postInstall = '' + wrapProgram $out/bin/comma \ + --prefix PATH : ${lib.makeBinPath [ fzy nix-index-unwrapped ]} + ln -s $out/bin/comma $out/bin/, + ''; + + passthru.tests = { + version = testers.testVersion { package = comma; }; + }; + + meta = with lib; { + homepage = "https://github.com/nix-community/comma"; + description = "Runs programs without installing them"; + license = licenses.mit; + mainProgram = "comma"; + maintainers = with maintainers; [ Enzime artturin marsam ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/conda/default.nix b/nixpkgs/pkgs/tools/package-management/conda/default.nix new file mode 100644 index 000000000000..5638676838f7 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/conda/default.nix @@ -0,0 +1,96 @@ +{ lib +, stdenv +, fetchurl +, runCommand +, makeWrapper +, buildFHSEnv +, libselinux +, libarchive +, libGL +, xorg +, zlib +# Conda installs its packages and environments under this directory +, installationPath ? "~/.conda" +# Conda manages most pkgs itself, but expects a few to be on the system. +, condaDeps ? [ stdenv.cc xorg.libSM xorg.libICE xorg.libX11 xorg.libXau xorg.libXi xorg.libXrender libselinux libGL zlib] +# Any extra nixpkgs you'd like available in the FHS env for Conda to use +, extraPkgs ? [ ] +}: + +# How to use this package? +# +# First-time setup: this nixpkg downloads the conda installer and provides a FHS +# env in which it can run. On first use, the user will need to install conda to +# the installPath using the installer: +# $ nix-env -iA conda +# $ conda-shell +# $ conda-install +# +# Under normal usage, simply call `conda-shell` to activate the FHS env, +# and then use conda commands as normal: +# $ conda-shell +# $ conda install spyder +let + version = "4.11.0"; + src = fetchurl { + url = "https://repo.continuum.io/miniconda/Miniconda3-py39_${version}-Linux-x86_64.sh"; + sha256 = "sha256-TunDqlMynNemO0mHfAurtJsZt+WvKYB7eTp2vbHTYrQ="; + }; + conda = ( + let + libPath = lib.makeLibraryPath [ + zlib # libz.so.1 + ]; + in + runCommand "conda-install" { nativeBuildInputs = [ makeWrapper ]; buildInputs = [ zlib]; } + # on line 10, we have 'unset LD_LIBRARY_PATH' + # we have to comment it out however in a way that the number of bytes in the + # file does not change. So we replace the 'u' in the line with a '#' + # The reason is that the binary payload is encoded as number + # of bytes from the top of the installer script + # and unsetting the library path prevents the zlib library from being discovered + '' + mkdir -p $out/bin + + sed 's/unset LD_LIBRARY_PATH/#nset LD_LIBRARY_PATH/' ${src} > $out/bin/miniconda-installer.sh + chmod +x $out/bin/miniconda-installer.sh + + makeWrapper \ + $out/bin/miniconda-installer.sh \ + $out/bin/conda-install \ + --add-flags "-p ${installationPath}" \ + --add-flags "-b" \ + --prefix "LD_LIBRARY_PATH" : "${libPath}" + ''); +in + buildFHSEnv { + name = "conda-shell"; + targetPkgs = pkgs: (builtins.concatLists [ [ conda ] condaDeps extraPkgs]); + profile = '' + # Add conda to PATH + export PATH=${installationPath}/bin:$PATH + # Paths for gcc if compiling some C sources with pip + export NIX_CFLAGS_COMPILE="-I${installationPath}/include" + export NIX_CFLAGS_LINK="-L${installationPath}lib" + # Some other required environment variables + export FONTCONFIG_FILE=/etc/fonts/fonts.conf + export QTCOMPOSE=${xorg.libX11}/share/X11/locale + export LIBARCHIVE=${libarchive.lib}/lib/libarchive.so + # Allows `conda activate` to work properly + condaSh=${installationPath}/etc/profile.d/conda.sh + if [ ! -f $condaSh ]; then + conda-install + fi + source $condaSh + ''; + + runScript = "bash -l"; + + meta = { + description = "Conda is a package manager for Python"; + homepage = "https://conda.io/"; + platforms = lib.platforms.linux; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ jluttine bhipple ]; + }; + } diff --git a/nixpkgs/pkgs/tools/package-management/createrepo_c/default.nix b/nixpkgs/pkgs/tools/package-management/createrepo_c/default.nix new file mode 100644 index 000000000000..fc0628e09088 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/createrepo_c/default.nix @@ -0,0 +1,42 @@ +{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, bzip2, expat, glib, curl, libxml2, python3, rpm +, openssl, sqlite, file, xz, pcre, bash-completion, zstd, zchunk, libmodulemd +}: + +stdenv.mkDerivation rec { + pname = "createrepo_c"; + version = "0.17.2"; + + src = fetchFromGitHub { + owner = "rpm-software-management"; + repo = "createrepo_c"; + rev = version; + sha256 = "sha256-rcrJjcWj+cTAE3k11Ynr7CQCOWD+rb60lcar0G2w06A="; + }; + + patches = [ + # Use the output directory to install the bash completions. + ./fix-bash-completion-path.patch + # Use the output directory to install the python modules. + ./fix-python-install-path.patch + ]; + + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace '@BASHCOMP_DIR@' "$out/share/bash-completion/completions" + substituteInPlace src/python/CMakeLists.txt \ + --replace "@PYTHON_INSTALL_DIR@" "$out/${python3.sitePackages}" + ''; + + nativeBuildInputs = [ cmake pkg-config rpm ]; + + buildInputs = [ bzip2 expat glib curl libxml2 python3 openssl sqlite file xz pcre bash-completion zstd zchunk libmodulemd ]; + + meta = with lib; { + description = "C implementation of createrepo"; + homepage = "https://rpm-software-management.github.io/createrepo_c/"; + license = licenses.gpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ copumpkin ]; + }; +} + diff --git a/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-bash-completion-path.patch b/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-bash-completion-path.patch new file mode 100644 index 000000000000..2539ec5d338d --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-bash-completion-path.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -117,7 +117,7 @@ OPTION(ENABLE_BASHCOMP "Install Bash autocompletions?" ON) + IF (ENABLE_BASHCOMP) + pkg_check_modules(BASHCOMP bash-completion) + IF (BASHCOMP_FOUND) +- execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=completionsdir bash-completion OUTPUT_VARIABLE BASHCOMP_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) ++ SET(BASHCOMP_DIR "@BASHCOMP_DIR@") + message("Bash completion directory: ${BASHCOMP_DIR}") + INSTALL(FILES createrepo_c.bash DESTINATION ${BASHCOMP_DIR} RENAME createrepo_c) + INSTALL(CODE " diff --git a/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-python-install-path.patch b/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-python-install-path.patch new file mode 100644 index 000000000000..b8739622e3c0 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-python-install-path.patch @@ -0,0 +1,11 @@ +--- a/src/python/CMakeLists.txt ++++ b/src/python/CMakeLists.txt +@@ -14,7 +14,7 @@ if (NOT SKBUILD) + FIND_PACKAGE(PythonLibs 3 REQUIRED) + endif (NOT SKBUILD) + +-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) ++SET(PYTHON_INSTALL_DIR "@PYTHON_INSTALL_DIR@") + INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH}) + + MESSAGE(STATUS "Python install dir is ${PYTHON_INSTALL_DIR}") diff --git a/nixpkgs/pkgs/tools/package-management/deploy-rs/default.nix b/nixpkgs/pkgs/tools/package-management/deploy-rs/default.nix new file mode 100644 index 000000000000..72eacb558bb8 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/deploy-rs/default.nix @@ -0,0 +1,34 @@ +{ lib +, stdenv +, fetchFromGitHub +, rustPlatform +, CoreServices +, SystemConfiguration +}: + +rustPlatform.buildRustPackage { + pname = "deploy-rs"; + version = "unstable-2023-12-20"; + + src = fetchFromGitHub { + owner = "serokell"; + repo = "deploy-rs"; + rev = "b709d63debafce9f5645a5ba550c9e0983b3d1f7"; + hash = "sha256-0VUbWBW8VyiDRuimMuLsEO4elGuUw/nc2WDeuO1eN1M="; + }; + + cargoHash = "sha256-PVeCB1g3JSYE6PKWHyE3hfN/CKlb9XErt8uaD/ZyxIs="; + + buildInputs = lib.optionals stdenv.isDarwin [ + CoreServices + SystemConfiguration + ]; + + meta = with lib; { + description = "Multi-profile Nix-flake deploy tool"; + homepage = "https://github.com/serokell/deploy-rs"; + license = licenses.mpl20; + maintainers = with maintainers; [ teutat3s ]; + mainProgram = "deploy"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix new file mode 100644 index 000000000000..461c0cacc06a --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix @@ -0,0 +1,44 @@ +{lib, stdenv, fetchFromGitHub, fetchpatch, apacheAnt, jdk, axis2, dbus_java }: + +stdenv.mkDerivation rec { + pname = "DisnixWebService"; + version = "0.10.1"; + + src = fetchFromGitHub { + owner = "svanderburg"; + repo = "DisnixWebService"; + rev = "refs/tags/DisnixWebService-${version}"; + hash = "sha256-zcYr2Ytx4pevSthTQLpnQ330wDxN9dWsZA20jbO6PxQ="; + }; + + patches = [ + # Correct the DisnixWebService build for compatibility with Axis2 1.8.1 + # See https://github.com/svanderburg/DisnixWebService/pull/2 + (fetchpatch { + url = "https://github.com/svanderburg/DisnixWebService/commit/cee99c6af744b5dda16728a70ebd2800f61871a0.patch"; + hash = "sha256-4rSEN8AwivUXUCIUYFBRIoE19jVDv+Vpgakmy8fR06A="; + }) + ]; + + buildInputs = [ apacheAnt jdk ]; + PREFIX = "\${env.out}"; + AXIS2_LIB = "${axis2}/lib"; + AXIS2_WEBAPP = "${axis2}/webapps/axis2"; + DBUS_JAVA_LIB = "${dbus_java}/share/java"; + prePatch = '' + sed -i -e "s|#JAVA_HOME=|JAVA_HOME=${jdk}|" \ + -e "s|#AXIS2_LIB=|AXIS2_LIB=${axis2}/lib|" \ + scripts/disnix-soap-client + ''; + buildPhase = "ant"; + installPhase = "ant install"; + + meta = { + description = "A SOAP interface and client for Disnix"; + homepage = "https://github.com/svanderburg/DisnixWebService"; + changelog = "https://github.com/svanderburg/DisnixWebService/blob/DisnixWebService-${version}/NEWS.txt"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.sander ]; + platforms = lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/disnix/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/default.nix new file mode 100644 index 000000000000..27f055c089cb --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/disnix/default.nix @@ -0,0 +1,21 @@ +{ lib, stdenv, fetchurl, pkg-config, glib, libxml2, libxslt, getopt, dysnomia, libintl, libiconv }: + +stdenv.mkDerivation rec { + pname = "disnix"; + version = "0.10.2"; + + src = fetchurl { + url = "https://github.com/svanderburg/disnix/releases/download/${pname}-${version}/${pname}-${version}.tar.gz"; + sha256 = "0mc0wy8fca60w0d56cljq2cw1xigbp2dklb43fxa5xph94j3i49a"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ glib libxml2 libxslt getopt libintl libiconv dysnomia ]; + + meta = { + description = "A Nix-based distributed service deployment tool"; + license = lib.licenses.lgpl21Plus; + maintainers = with lib.maintainers; [ sander tomberek ]; + platforms = lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/disnix/disnixos/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/disnixos/default.nix new file mode 100644 index 000000000000..15e5f3e0e947 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/disnix/disnixos/default.nix @@ -0,0 +1,21 @@ +{ lib, stdenv, fetchurl, dysnomia, disnix, socat, pkg-config, getopt }: + +stdenv.mkDerivation rec { + pname = "disnixos"; + version = "0.9.4"; + + src = fetchurl { + url = "https://github.com/svanderburg/disnixos/releases/download/${pname}-${version}/${pname}-${version}.tar.gz"; + sha256 = "0adv6dm6hszjhzkfkw48pmi37zj32plcibk80r6bm907mm7n50lj"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ socat dysnomia disnix getopt ]; + + meta = { + description = "Provides complementary NixOS infrastructure deployment to Disnix"; + license = lib.licenses.lgpl21Plus; + maintainers = [ lib.maintainers.sander ]; + platforms = lib.platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/disnix/dydisnix/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/dydisnix/default.nix new file mode 100644 index 000000000000..0c95e41f8c9a --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/disnix/dydisnix/default.nix @@ -0,0 +1,32 @@ +{ lib, stdenv, fetchFromGitHub, autoconf, automake, libtool, pkg-config, glib +, libxml2, libxslt, getopt, libiconv, gettext, nix, disnix +}: + +stdenv.mkDerivation rec { + version = "unstable-2020-11-02"; + pname = "dydisnix"; + + src = fetchFromGitHub { + owner = "svanderburg"; + repo = "dydisnix"; + rev = "12ca1516bc1e5d161ac68f5d8252a0a2f353c8cf"; + sha256 = "00f341274hwwil8mlgcgq331vfca9sscvpdbgkxsjvbhcqd8qa52"; + }; + + nativeBuildInputs = [ pkg-config autoconf automake libtool ]; + buildInputs = [ glib libxml2 libxslt getopt nix disnix libiconv gettext ]; + + preConfigure = '' + ./bootstrap + ''; + + meta = { + description = "A toolset enabling self-adaptive redeployment on top of Disnix"; + longDescription = '' + Dynamic Disnix is a (very experimental!) prototype extension framework for Disnix supporting dynamic (re)deployment of service-oriented systems. + ''; + license = lib.licenses.lgpl21Plus; + maintainers = [ lib.maintainers.tomberek ]; + platforms = lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/disnix/dysnomia/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/dysnomia/default.nix new file mode 100644 index 000000000000..48d1b7965112 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/disnix/dysnomia/default.nix @@ -0,0 +1,88 @@ +{ lib, stdenv, fetchurl, netcat + +# Optional packages +, systemd ? null, ejabberd ? null, mariadb ? null, postgresql ? null, subversion ? null +, mongodb ? null, mongodb-tools ? null, influxdb ? null, supervisor ? null, docker ? null +, nginx ? null, s6-rc ? null, xinetd ? null + +# Configuration flags +, enableApacheWebApplication ? false +, enableAxis2WebService ? false +, enableEjabberdDump ? false +, enableMySQLDatabase ? false +, enablePostgreSQLDatabase ? false +, enableSubversionRepository ? false +, enableTomcatWebApplication ? false +, enableMongoDatabase ? false +, enableInfluxDatabase ? false +, enableSupervisordProgram ? false +, enableDockerContainer ? false +, enableNginxWebApplication ? false +, enableXinetdService ? false +, enableS6RCService ? false +, enableLegacy ? false +, catalinaBaseDir ? "/var/tomcat" +, jobTemplate ? "systemd" +, getopt +}: + +assert enableMySQLDatabase -> mariadb != null; +assert enablePostgreSQLDatabase -> postgresql != null; +assert enableSubversionRepository -> subversion != null; +assert enableEjabberdDump -> ejabberd != null; +assert enableMongoDatabase -> (mongodb != null && mongodb-tools != null); +assert enableInfluxDatabase -> influxdb != null; +assert enableSupervisordProgram -> supervisor != null; +assert enableDockerContainer -> docker != null; +assert enableNginxWebApplication -> nginx != null; +assert enableS6RCService -> s6-rc != null; +assert enableXinetdService -> xinetd != null; + +stdenv.mkDerivation rec { + pname = "dysnomia"; + version = "0.10.2"; + src = fetchurl { + url = "https://github.com/svanderburg/dysnomia/releases/download/dysnomia-${version}/dysnomia-${version}.tar.gz"; + sha256 = "08ijqbijs2h584dvsb3z858ha385fqd5jfxc51lks9lxxv0sfkr4"; + }; + + configureFlags = [ + (if enableApacheWebApplication then "--with-apache" else "--without-apache") + (if enableAxis2WebService then "--with-axis2" else "--without-axis2") + (if enableEjabberdDump then "--with-ejabberd" else "--without-ejabberd") + (if enableMySQLDatabase then "--with-mysql" else "--without-mysql") + (if enablePostgreSQLDatabase then "--with-postgresql" else "--without-postgresql") + (if enableSubversionRepository then "--with-subversion" else "--without-subversion") + (if enableTomcatWebApplication then "--with-tomcat=${catalinaBaseDir}" else "--without-tomcat") + (if enableMongoDatabase then "--with-mongodb" else "--without-mongodb") + (if enableInfluxDatabase then "--with-influxdb" else "--without-influxdb") + (if enableSupervisordProgram then "--with-supervisord" else "--without-supervisord") + (if enableDockerContainer then "--with-docker" else "--without-docker") + (if enableNginxWebApplication then "--with-nginx" else "--without-nginx") + (if enableXinetdService then "--with-xinetd" else "--without-xinetd") + (if enableS6RCService then "--with-s6-rc" else "--without-s6-rc") + (if stdenv.isDarwin then "--with-launchd" else "--without-launchd") + "--with-job-template=${jobTemplate}" + ] ++ lib.optional enableLegacy "--enable-legacy"; + + buildInputs = [ getopt netcat ] + ++ lib.optional stdenv.isLinux systemd + ++ lib.optional enableEjabberdDump ejabberd + ++ lib.optional enableMySQLDatabase mariadb.out + ++ lib.optional enablePostgreSQLDatabase postgresql + ++ lib.optional enableSubversionRepository subversion + ++ lib.optionals enableMongoDatabase [ mongodb mongodb-tools ] + ++ lib.optional enableInfluxDatabase influxdb + ++ lib.optional enableSupervisordProgram supervisor + ++ lib.optional enableDockerContainer docker + ++ lib.optional enableNginxWebApplication nginx + ++ lib.optional enableS6RCService s6-rc + ++ lib.optional enableXinetdService xinetd; + + meta = { + description = "Automated deployment of mutable components and services for Disnix"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.sander ]; + platforms = lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/dnf5/default.nix b/nixpkgs/pkgs/tools/package-management/dnf5/default.nix new file mode 100644 index 000000000000..31a19b542e70 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/dnf5/default.nix @@ -0,0 +1,121 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, createrepo_c +, doxygen +, gettext +, help2man +, pkg-config +, python3Packages +, cppunit +, fmt +, json_c +, libmodulemd +, librepo +, libsmartcols +, libsolv +, libxml2 +, libyaml +, pcre2 +, rpm +, sdbus-cpp +, sphinx +, sqlite +, systemd +, testers +, toml11 +, zchunk +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "dnf5"; + version = "5.1.10"; + + outputs = [ "out" "man" ]; + + src = fetchFromGitHub { + owner = "rpm-software-management"; + repo = "dnf5"; + rev = finalAttrs.version; + hash = "sha256-u+UiiCl67VtIedW4kn3fycafkgBVsFFkWQcN3NXQKl4="; + }; + + nativeBuildInputs = [ + cmake + createrepo_c + doxygen + gettext + help2man + pkg-config + sphinx + ] ++ (with python3Packages; [ + breathe + sphinx-autoapi + sphinx-rtd-theme + ]); + + buildInputs = [ + cppunit + fmt + json_c + libmodulemd + librepo + libsmartcols + libsolv + libxml2 + libyaml + pcre2.dev + rpm + sdbus-cpp + sqlite + systemd + toml11 + zchunk + ]; + + # workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105329 + NIX_CFLAGS_COMPILE = "-Wno-restrict -Wno-maybe-uninitialized"; + + cmakeFlags = [ + "-DWITH_PERL5=OFF" + "-DWITH_PYTHON3=OFF" + "-DWITH_RUBY=OFF" + "-DWITH_PLUGIN_RHSM=OFF" # Red Hat Subscription Manager plugin + # the cmake package does not handle absolute CMAKE_INSTALL_INCLUDEDIR correctly + # (setting it to an absolute path causes include files to go to $out/$out/include, + # because the absolute path is interpreted with root at $out). + "-DCMAKE_INSTALL_INCLUDEDIR=include" + "-DCMAKE_INSTALL_LIBDIR=lib" + ]; + + postBuild = '' + make doc + ''; + + prePatch = '' + substituteInPlace dnf5daemon-server/dbus/CMakeLists.txt \ + --replace '/etc' "$out/etc" \ + --replace '/usr' "$out" + substituteInPlace dnf5daemon-server/polkit/CMakeLists.txt \ + --replace '/usr' "$out" + substituteInPlace dnf5/CMakeLists.txt \ + --replace '/etc/bash_completion.d' "$out/etc/bash_completion.d" + ''; + + dontFixCmake = true; + + passthru.tests = { + version = testers.testVersion { package = finalAttrs.finalPackage; }; + }; + + meta = with lib; { + description = "Next-generation RPM package management system"; + homepage = "https://github.com/rpm-software-management/dnf5"; + changelog = "https://github.com/rpm-software-management/dnf5/releases/tag/${version}"; + license = licenses.gpl2Plus; + maintainers = with lib.maintainers; [ malt3 katexochen ]; + mainProgram = "dnf5"; + platforms = platforms.linux ++ platforms.darwin; + }; +}) diff --git a/nixpkgs/pkgs/tools/package-management/dpkg/default.nix b/nixpkgs/pkgs/tools/package-management/dpkg/default.nix new file mode 100644 index 000000000000..59e259541992 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/dpkg/default.nix @@ -0,0 +1,99 @@ +{ lib +, stdenv +, fetchgit +, perl +, gnutar +, zlib +, bzip2 +, xz +, zstd +, libmd +, makeWrapper +, coreutils +, autoreconfHook +, pkg-config +, diffutils +, glibc ? !stdenv.isDarwin +}: + +stdenv.mkDerivation rec { + pname = "dpkg"; + version = "1.22.1"; + + src = fetchgit { + url = "https://git.launchpad.net/ubuntu/+source/dpkg"; + rev = "applied/${version}"; + hash = "sha256-63XRO3Img+XS2F5Krb5DAw0LMhtxB+eJi754O03Lx8Q="; + }; + + configureFlags = [ + "--disable-dselect" + "--disable-start-stop-daemon" + "--with-admindir=/var/lib/dpkg" + "PERL_LIBDIR=$(out)/${perl.libPrefix}" + "TAR=${gnutar}/bin/tar" + ] ++ lib.optional stdenv.isDarwin "--disable-linker-optimisations"; + + enableParallelBuilding = true; + + preConfigure = '' + # Nice: dpkg has a circular dependency on itself. Its configure + # script calls scripts/dpkg-architecture, which calls "dpkg" in + # $PATH. It doesn't actually use its result, but fails if it + # isn't present, so make a dummy available. + touch $TMPDIR/dpkg + chmod +x $TMPDIR/dpkg + PATH=$TMPDIR:$PATH + + for i in $(find . -name Makefile.in); do + substituteInPlace $i --replace "install-data-local:" "disabled:" ; + done + ''; + + postPatch = '' + patchShebangs . + + # Dpkg commands sometimes calls out to shell commands + substituteInPlace lib/dpkg/dpkg.h \ + --replace '"dpkg-deb"' \"$out/bin/dpkg-deb\" \ + --replace '"dpkg-split"' \"$out/bin/dpkg-split\" \ + --replace '"dpkg-query"' \"$out/bin/dpkg-query\" \ + --replace '"dpkg-divert"' \"$out/bin/dpkg-divert\" \ + --replace '"dpkg-statoverride"' \"$out/bin/dpkg-statoverride\" \ + --replace '"dpkg-trigger"' \"$out/bin/dpkg-trigger\" \ + --replace '"dpkg"' \"$out/bin/dpkg\" \ + --replace '"debsig-verify"' \"$out/bin/debsig-verify\" \ + --replace '"rm"' \"${coreutils}/bin/rm\" \ + --replace '"cat"' \"${coreutils}/bin/cat\" \ + --replace '"diff"' \"${diffutils}/bin/diff\" + '' + lib.optionalString (!stdenv.isDarwin) '' + substituteInPlace src/main/help.c \ + --replace '"ldconfig"' \"${glibc.bin}/bin/ldconfig\" + ''; + + buildInputs = [ perl zlib bzip2 xz zstd libmd ]; + nativeBuildInputs = [ makeWrapper perl autoreconfHook pkg-config ]; + + postInstall = + '' + for i in $out/bin/*; do + if head -n 1 $i | grep -q perl; then + substituteInPlace $i --replace \ + "${perl}/bin/perl" "${perl}/bin/perl -I $out/${perl.libPrefix}" + fi + done + + mkdir -p $out/etc/dpkg + cp -r scripts/t/origins $out/etc/dpkg + ''; + + setupHook = ./setup-hook.sh; + + meta = with lib; { + description = "The Debian package manager"; + homepage = "https://wiki.debian.org/Teams/Dpkg"; + license = licenses.gpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ siriobalmelli ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/dpkg/setup-hook.sh b/nixpkgs/pkgs/tools/package-management/dpkg/setup-hook.sh new file mode 100644 index 000000000000..326f06eff318 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/dpkg/setup-hook.sh @@ -0,0 +1,12 @@ +unpackCmdHooks+=(_tryDpkgDeb) +_tryDpkgDeb() { + if ! [[ "$curSrc" =~ \.deb$ ]]; then return 1; fi + # Don't use dpkg-deb -x as that will error if the archive contains a file + # or directory with a setuid bit in its permissions. This is because dpkg + # calls tar internally with the -p flag, preserving file permissions. + # + # We instead only use dpkg-deb to extract the tarfile containing the files + # we want from the .deb, then finish extracting with tar directly. + mkdir root + dpkg-deb --fsys-tarfile "$curSrc" | tar --extract --directory=root +} diff --git a/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile b/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile new file mode 100644 index 000000000000..b97eab9777d7 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile @@ -0,0 +1,2 @@ +source 'https://rubygems.org' +gem 'elm_install' diff --git a/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile.lock b/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile.lock new file mode 100644 index 000000000000..5b586256278b --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile.lock @@ -0,0 +1,39 @@ +GEM + remote: https://rubygems.org/ + specs: + adts (0.1.2) + commander (4.4.3) + highline (~> 1.7.2) + contracts (0.16.0) + elm_install (1.0.1) + adts (~> 0.1.2) + commander (~> 4.4, >= 4.4.2) + contracts (~> 0.16.0) + git (~> 1.3) + git_clone_url (~> 2.0) + hashdiff (~> 0.3.1) + indentation (~> 0.1.1) + smart_colored (~> 1.1, >= 1.1.1) + solve (~> 3.1) + git (1.3.0) + git_clone_url (2.0.0) + uri-ssh_git (>= 2.0) + hashdiff (0.3.4) + highline (1.7.8) + indentation (0.1.1) + molinillo (0.5.7) + semverse (2.0.0) + smart_colored (1.1.1) + solve (3.1.0) + molinillo (>= 0.5) + semverse (>= 1.1, < 3.0) + uri-ssh_git (2.0.0) + +PLATFORMS + ruby + +DEPENDENCIES + elm_install + +BUNDLED WITH + 2.1.4 diff --git a/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix b/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix new file mode 100644 index 000000000000..3c77af2b82bf --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix @@ -0,0 +1,22 @@ +{ lib, bundlerEnv, ruby, bundlerUpdateScript }: + +bundlerEnv rec { + pname = "elm_install"; + name = "elm-github-install-${version}"; + + version = (import ./gemset.nix).elm_install.version; + + inherit ruby; + gemdir = ./.; + + passthru.updateScript = bundlerUpdateScript "elm-github-install"; + + meta = with lib; { + description = "Install Elm packages from git repositories"; + homepage = "https://github.com/gdotdesign/elm-github-install"; + license = licenses.unfree; + maintainers = with maintainers; [ roberth nicknovitski ]; + platforms = platforms.all; + mainProgram = "elm-install"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/elm-github-install/gemset.nix b/nixpkgs/pkgs/tools/package-management/elm-github-install/gemset.nix new file mode 100644 index 000000000000..de7f8e20b648 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/elm-github-install/gemset.nix @@ -0,0 +1,114 @@ +{ + adts = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1793bfsgg8ca58b70xas9rglnspig41ih0iwqcad62s0grxzrjwz"; + type = "gem"; + }; + version = "0.1.2"; + }; + commander = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01qx76y05v29kgyjsfkai73gwfnqhypp1k8v024m9w7qzpv4mpxf"; + type = "gem"; + }; + version = "4.4.3"; + }; + contracts = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a"; + type = "gem"; + }; + version = "0.16.0"; + }; + elm_install = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0d3fwhj54madabmzamss865kj8czicgaq5fbdll9kpapqvy6a2j5"; + type = "gem"; + }; + version = "1.0.1"; + }; + git = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3"; + type = "gem"; + }; + version = "1.3.0"; + }; + git_clone_url = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qgq7pjl461si3m2gr28vwbx47dcbpyy682mcwra5y1klpkbcvr5"; + type = "gem"; + }; + version = "2.0.0"; + }; + hashdiff = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1n6hj7k7b9hazac0j48ypbak2nqi5wy4nh5cjra6xl3a92r8db0a"; + type = "gem"; + }; + version = "0.3.4"; + }; + highline = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nf5lgdn6ni2lpfdn4gk3gi47fmnca2bdirabbjbz1fk9w4p8lkr"; + type = "gem"; + }; + version = "1.7.8"; + }; + indentation = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ix64qgmm91xm1yiqxdcn9bqb1l6gwvkv7322yni34b3bd16lgvc"; + type = "gem"; + }; + version = "0.1.1"; + }; + molinillo = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19h1nks0x2ljwyijs2rd1f9sh05j8xqvjaqk1rslp5nyy6h4a758"; + type = "gem"; + }; + version = "0.5.7"; + }; + semverse = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cf6iv5wgwb7b8jf7il751223k9yahz9aym06s9r0prda5mwddyy"; + type = "gem"; + }; + version = "2.0.0"; + }; + smart_colored = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hccah5iwsvn9rf7zdgl7mdbh0h63vfwy1c6d280cb9qkfj8rdny"; + type = "gem"; + }; + version = "1.1.1"; + }; + solve = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bbzny2bl94mv1xwcfrxbi3fjhxxawlz6la7mip2wwz9kkaf376h"; + type = "gem"; + }; + version = "3.1.0"; + }; + uri-ssh_git = { + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0klyyvivbjll2ry18d8fhm1rbxbzd4kqa9lskxyiha4ndlb22cqj"; + type = "gem"; + }; + version = "2.0.0"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/emplace/default.nix b/nixpkgs/pkgs/tools/package-management/emplace/default.nix new file mode 100644 index 000000000000..0a2656e12932 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/emplace/default.nix @@ -0,0 +1,23 @@ +{ lib, rustPlatform, fetchFromGitHub }: + +rustPlatform.buildRustPackage rec { + pname = "emplace"; + version = "1.4.2"; + + src = fetchFromGitHub { + owner = "tversteeg"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-5PuSIOXns0FVLgyIw1mk8hZ/tYhikMV860BHTDlji78="; + }; + + cargoSha256 = "sha256-UbbVjT5JQuVSCgbcelEVaAql4CUnCtO99zHp3Ei31Gs="; + + meta = with lib; { + description = "Mirror installed software on multiple machines"; + homepage = "https://github.com/tversteeg/emplace"; + license = licenses.agpl3Plus; + maintainers = with maintainers; [ Br1ght0ne ]; + mainProgram = "emplace"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/fortran-fpm/default.nix b/nixpkgs/pkgs/tools/package-management/fortran-fpm/default.nix new file mode 100644 index 000000000000..d8adb9249006 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/fortran-fpm/default.nix @@ -0,0 +1,49 @@ +{ lib +, fetchurl +, pkgs +, stdenv +}: + +stdenv.mkDerivation rec { + pname = "fortran-fpm"; + + version = "0.9.0"; + + src = fetchurl { + url = "https://github.com/fortran-lang/fpm/releases/download/v${version}/fpm-${version}.F90"; + sha256 = "sha256-VWs4g7odtv1iyZunFD8el+u0CXKcQgnwOqPG/JcMzj8="; + }; + + dontUnpack = true; + + nativeBuildInputs = with pkgs; [ gfortran ]; + + buildPath = "build/bootstrap"; + + buildPhase = '' + runHook preBuild + + mkdir -p ${buildPath} + gfortran -J ${buildPath} -o ${buildPath}/${pname} $src + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp ${buildPath}/${pname} $out/bin + + runHook postInstall + ''; + + meta = with lib; { + description = "Fortran Package Manager (fpm)"; + homepage = "https://fpm.fortran-lang.org"; + maintainers = [ maintainers.proofconstruction ]; + license = licenses.mit; + platforms = platforms.all; + mainProgram = "fortran-fpm"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/fpm/Gemfile b/nixpkgs/pkgs/tools/package-management/fpm/Gemfile new file mode 100644 index 000000000000..17ed0a0cb2af --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/fpm/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gem 'fpm' diff --git a/nixpkgs/pkgs/tools/package-management/fpm/Gemfile.lock b/nixpkgs/pkgs/tools/package-management/fpm/Gemfile.lock new file mode 100644 index 000000000000..b3e8b9d221a5 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/fpm/Gemfile.lock @@ -0,0 +1,43 @@ +GEM + remote: https://rubygems.org/ + specs: + arr-pm (0.0.11) + cabin (> 0) + backports (3.21.0) + cabin (0.9.0) + clamp (1.0.1) + dotenv (2.7.6) + fpm (1.13.0) + arr-pm (~> 0.0.11) + backports (>= 2.6.2) + cabin (>= 0.6.0) + clamp (~> 1.0.0) + git (>= 1.3.0, < 2.0) + json (>= 1.7.7, < 3.0) + pleaserun (~> 0.0.29) + rexml + stud + git (1.8.1) + rchardet (~> 1.8) + insist (1.0.0) + json (2.5.1) + mustache (0.99.8) + pleaserun (0.0.32) + cabin (> 0) + clamp + dotenv + insist + mustache (= 0.99.8) + stud + rchardet (1.8.0) + rexml (3.2.5) + stud (0.0.23) + +PLATFORMS + ruby + +DEPENDENCIES + fpm + +BUNDLED WITH + 2.1.4 diff --git a/nixpkgs/pkgs/tools/package-management/fpm/default.nix b/nixpkgs/pkgs/tools/package-management/fpm/default.nix new file mode 100644 index 000000000000..6be2687d67ad --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/fpm/default.nix @@ -0,0 +1,18 @@ +{ lib, bundlerApp, bundlerUpdateScript }: + +bundlerApp { + pname = "fpm"; + gemdir = ./.; + exes = [ "fpm" ]; + + passthru.updateScript = bundlerUpdateScript "fpm"; + + meta = with lib; { + description = "Tool to build packages for multiple platforms with ease"; + homepage = "https://github.com/jordansissel/fpm"; + license = licenses.mit; + maintainers = with maintainers; [ manveru nicknovitski ]; + platforms = platforms.unix; + mainProgram = "fpm"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/fpm/gemset.nix b/nixpkgs/pkgs/tools/package-management/fpm/gemset.nix new file mode 100644 index 000000000000..dca13598e8cc --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/fpm/gemset.nix @@ -0,0 +1,146 @@ +{ + arr-pm = { + dependencies = ["cabin"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17qssricshzs2ml1jvn4bs2h85gxvrqm074pl5nl8vr74620iazi"; + type = "gem"; + }; + version = "0.0.11"; + }; + backports = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xqvwj3mm28g1z4npya51zjcvxaniyyzn3fwgcdwmm8xrdbl8fgr"; + type = "gem"; + }; + version = "3.21.0"; + }; + cabin = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0b3b8j3iqnagjfn1261b9ncaac9g44zrx1kcg81yg4z9i513kici"; + type = "gem"; + }; + version = "0.9.0"; + }; + clamp = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jb6l4scp69xifhicb5sffdixqkw8wgkk9k2q57kh2y36x1px9az"; + type = "gem"; + }; + version = "1.0.1"; + }; + dotenv = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0iym172c5337sm1x2ykc2i3f961vj3wdclbyg1x6sxs3irgfsl94"; + type = "gem"; + }; + version = "2.7.6"; + }; + fpm = { + dependencies = ["arr-pm" "backports" "cabin" "clamp" "git" "json" "pleaserun" "rexml" "stud"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "03ss7yh628f0m6by23q3sniq660gm07mkz6wqjpvr118gc0h53sa"; + type = "gem"; + }; + version = "1.13.0"; + }; + git = { + dependencies = ["rchardet"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0vdcv93s33d9914a9nxrn2y2qv15xk7jx94007cmalp159l08cnl"; + type = "gem"; + }; + version = "1.8.1"; + }; + insist = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bw3bdwns14mapbgb8cbjmr0amvwz8y72gyclq04xp43wpp5jrvg"; + type = "gem"; + }; + version = "1.0.0"; + }; + json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lrirj0gw420kw71bjjlqkqhqbrplla61gbv1jzgsz6bv90qr3ci"; + type = "gem"; + }; + version = "2.5.1"; + }; + mustache = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g5hplm0k06vwxwqzwn1mq5bd02yp0h3rym4zwzw26aqi7drcsl2"; + type = "gem"; + }; + version = "0.99.8"; + }; + pleaserun = { + dependencies = ["cabin" "clamp" "dotenv" "insist" "mustache" "stud"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1aykf0l8327bqkkf5xd9jcglsib973zpy37cfnlf4j0vp0cdpn2d"; + type = "gem"; + }; + version = "0.0.32"; + }; + rchardet = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1isj1b3ywgg2m1vdlnr41lpvpm3dbyarf1lla4dfibfmad9csfk9"; + type = "gem"; + }; + version = "1.8.0"; + }; + rexml = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "08ximcyfjy94pm1rhcx04ny1vx2sk0x4y185gzn86yfsbzwkng53"; + type = "gem"; + }; + version = "3.2.5"; + }; + stud = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qpb57cbpm9rwgsygqxifca0zma87drnlacv49cqs2n5iyi6z8kb"; + type = "gem"; + }; + version = "0.0.23"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/fusesoc/default.nix b/nixpkgs/pkgs/tools/package-management/fusesoc/default.nix new file mode 100644 index 000000000000..680cbc020945 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/fusesoc/default.nix @@ -0,0 +1,39 @@ +{ buildPythonPackage +, fetchPypi +, lib +, verilog +, verilator +, gnumake +, edalize +, fastjsonschema +, pyparsing +, pyyaml +, simplesat +, ipyxact +, setuptools-scm +}: +buildPythonPackage rec { + pname = "fusesoc"; + version = "2.2.1"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-M36bXBgY8hR33AVDlHoH8PZJG2Bi0KOEI07IMns7R4w="; + }; + + nativeBuildInputs = [ setuptools-scm ]; + + propagatedBuildInputs = [ edalize fastjsonschema pyparsing pyyaml simplesat ipyxact ]; + + pythonImportsCheck = [ "fusesoc" ]; + + makeWrapperArgs = [ "--suffix PATH : ${lib.makeBinPath [ verilog verilator gnumake ]}"]; + + meta = with lib; { + homepage = "https://github.com/olofk/fusesoc"; + description = "A package manager and build tools for HDL code"; + maintainers = with maintainers; [ genericnerdyusername ]; + license = licenses.bsd3; + mainProgram = "fusesoc"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/gx/default.nix b/nixpkgs/pkgs/tools/package-management/gx/default.nix new file mode 100644 index 000000000000..3f757dde448c --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/gx/default.nix @@ -0,0 +1,25 @@ +{ lib, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "gx"; + version = "0.14.3"; + + src = fetchFromGitHub { + owner = "whyrusleeping"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-jGtUsb2gm8dN45wniD+PYoUlk8m1ssrfj1a7PPYEYuo="; + }; + + vendorHash = "sha256-6tdVpMztaBjoQRVG2vaUWuvnPq05zjbNAX9HBiC50t0="; + + ldflags = [ "-s" "-w" ]; + + meta = with lib; { + description = "A packaging tool built around IPFS"; + homepage = "https://github.com/whyrusleeping/gx"; + license = licenses.mit; + maintainers = with maintainers; [ zimbatm ]; + mainProgram = "gx"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/gx/go/default.nix b/nixpkgs/pkgs/tools/package-management/gx/go/default.nix new file mode 100644 index 000000000000..22f7d07537a5 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/gx/go/default.nix @@ -0,0 +1,24 @@ +{ lib, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "gx-go"; + version = "unstable-2020-03-03"; + + src = fetchFromGitHub { + owner = "whyrusleeping"; + repo = pname; + rev = "9c30fadeac4aee8346d28c36d6bd5063da3d189a"; + hash = "sha256-lrfAyqAyRnhyw9dPURM1NeFIJW/Zug53ThZiwa89z2M="; + }; + + vendorHash = "sha256-A3jZYu7+LGCukzlrxgIPmnkcxSoWm5YJZmFG3hliMm4="; + + ldflags = [ "-s" "-w" ]; + + meta = with lib; { + description = "A tool for importing go packages into gx"; + homepage = "https://github.com/whyrusleeping/gx-go"; + license = licenses.mit; + maintainers = with maintainers; [ zimbatm ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/harmonia/default.nix b/nixpkgs/pkgs/tools/package-management/harmonia/default.nix new file mode 100644 index 000000000000..9830570a07fd --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/harmonia/default.nix @@ -0,0 +1,55 @@ +{ lib +, boost +, fetchFromGitHub +, libsodium +, nixVersions +, pkg-config +, rustPlatform +, stdenv +, nix-update-script +, nixosTests +}: + +rustPlatform.buildRustPackage rec { + pname = "harmonia"; + version = "0.7.4"; + + src = fetchFromGitHub { + owner = "nix-community"; + repo = pname; + rev = "refs/tags/${pname}-v${version}"; + hash = "sha256-72JMrXmxw/FuGjqXXxMIGiAbUUOqXEERdQwch+s3iwU="; + }; + + cargoHash = "sha256-Q5Y5v7mmJpfZFGRgurTcRBRtbApFRrwqOBHdZTJbyzc="; + + nativeBuildInputs = [ + pkg-config nixVersions.nix_2_19 + ]; + + buildInputs = [ + boost + libsodium + nixVersions.nix_2_19 + ]; + + # Workaround for https://github.com/NixOS/nixpkgs/issues/166205 + env = lib.optionalAttrs stdenv.cc.isClang { + NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}"; + }; + + passthru = { + updateScript = nix-update-script { + extraArgs = [ "--version-regex" "harmonia-v(.*)" ]; + }; + tests = { inherit (nixosTests) harmonia; }; + }; + + meta = with lib; { + description = "Nix binary cache"; + homepage = "https://github.com/nix-community/harmonia"; + license = licenses.mit; + maintainers = with maintainers; [ mic92 ]; + mainProgram = "harmonia"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/holo-build/default.nix b/nixpkgs/pkgs/tools/package-management/holo-build/default.nix new file mode 100644 index 000000000000..41444e8533d5 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/holo-build/default.nix @@ -0,0 +1,60 @@ +{ lib, buildGoModule, fetchFromGitHub, installShellFiles, perl, file }: + +buildGoModule rec { + pname = "holo-build"; + version = "1.6.1"; + + src = fetchFromGitHub { + owner = "holocm"; + repo = pname; + rev = "v${version}"; + sha256 = "0lypbgf96bcc4m3968xa4il1zwprsdyc0pw6pl9mqq7djxabikd0"; + }; + + postPatch = '' + substituteInPlace Makefile \ + --replace 'VERSION :=' 'VERSION ?=' + substituteInPlace src/holo-build.sh \ + --replace '/usr/lib/holo/holo-build' '${placeholder "out"}/lib/holo/holo-build' + ''; + + vendorHash = null; + + nativeBuildInputs = [ installShellFiles perl ]; + + subPackages = [ "src/holo-build" ]; + + ldflags = [ "-s" "-w" "-X github.com/holocm/holo-build/src/holo-build/common.version=${version}" ]; + + postBuild = '' + make build/man/holo-build.8 VERSION=${version} + ''; + + nativeCheckInputs = [ file ]; + + checkPhase = '' + ln -s ../../go/bin/holo-build build/holo-build + go build -ldflags "-s -w -X github.com/holocm/holo-build/src/holo-build/common.version=${version}" -o build/dump-package ./src/dump-package + bash test/compiler/run_tests.sh + bash test/interface/run_tests.sh + ''; + + postInstall = '' + installManPage build/man/* + installShellCompletion --bash --name holo-build util/autocomplete.bash + installShellCompletion --zsh --name _holo-build util/autocomplete.zsh + + # install wrapper script + mkdir -p $out/lib/holo + mv $out/bin/holo-build $out/lib/holo/holo-build + cp src/holo-build.sh $out/bin/holo-build + ''; + + meta = with lib; { + description = "Cross-distribution system package compiler"; + homepage = "https://holocm.org/"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ ]; + mainProgram = "holo-build"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/home-manager/default.nix b/nixpkgs/pkgs/tools/package-management/home-manager/default.nix new file mode 100644 index 000000000000..9a1b3ec59bed --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/home-manager/default.nix @@ -0,0 +1,93 @@ +{ lib +, stdenvNoCC +, fetchFromGitHub +, bash +, coreutils +, findutils +, gettext +, gnused +, less +, ncurses +, nixos-option +, unixtools +, installShellFiles +, unstableGitUpdater +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "home-manager"; + version = "unstable-2024-01-05"; + + src = fetchFromGitHub { + name = "home-manager-source"; + owner = "nix-community"; + repo = "home-manager"; + rev = "51e44a13acea71b36245e8bd8c7db53e0a3e61ee"; + hash = "sha256-yINKdShHrtjdiJhov+q0s3Y3B830ujRoSbHduUNyKag="; + }; + + nativeBuildInputs = [ + gettext + installShellFiles + ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + install -D -m755 home-manager/home-manager $out/bin/home-manager + install -D -m755 lib/bash/home-manager.sh $out/share/bash/home-manager.sh + + substituteInPlace $out/bin/home-manager \ + --subst-var-by bash "${bash}" \ + --subst-var-by DEP_PATH "${ + lib.makeBinPath [ + coreutils + findutils + gettext + gnused + less + ncurses + nixos-option + unixtools.hostname + ] + }" \ + --subst-var-by HOME_MANAGER_LIB '${placeholder "out"}/share/bash/home-manager.sh' \ + --subst-var-by HOME_MANAGER_PATH "${finalAttrs.src}" \ + --subst-var-by OUT '${placeholder "out"}' + + installShellCompletion --bash --name home-manager.bash home-manager/completion.bash + installShellCompletion --fish --name home-manager.fish home-manager/completion.fish + installShellCompletion --zsh --name _home-manager home-manager/completion.zsh + + for pofile in home-manager/po/*.po; do + lang="''${pofile##*/}" + lang="''${lang%%.*}" + mkdir -p "$out/share/locale/$lang/LC_MESSAGES" + msgfmt -o "$out/share/locale/$lang/LC_MESSAGES/home-manager.mo" "$pofile" + done + + runHook postInstall + ''; + + passthru.updateScript = unstableGitUpdater { + url = "https://github.com/nix-community/home-manager/"; + }; + + meta = { + homepage = "https://nix-community.github.io/home-manager/"; + description = "A Nix-based user environment configurator"; + longDescription = '' + The Home-Manager project provides a basic system for managing a user + environment using the Nix package manager together with the Nix libraries + found in Nixpkgs. It allows declarative configuration of user specific + (non global) packages and dotfiles. + ''; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ AndersonTorres ]; + platforms = lib.platforms.unix; + mainProgram = "home-manager"; + }; +}) diff --git a/nixpkgs/pkgs/tools/package-management/libcomps/default.nix b/nixpkgs/pkgs/tools/package-management/libcomps/default.nix new file mode 100644 index 000000000000..89c2982497df --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/libcomps/default.nix @@ -0,0 +1,65 @@ +{ lib +, check +, cmake +, doxygen +, expat +, fetchFromGitHub +, libxml2 +, python +, sphinx +, stdenv +, zlib +}: + +stdenv.mkDerivation rec { + pname = "libcomps"; + version = "0.1.20"; + + outputs = [ "out" "dev" "py" ]; + + src = fetchFromGitHub { + owner = "rpm-software-management"; + repo = "libcomps"; + rev = version; + hash = "sha256-IX4du1+G7lwWrGnllydnBDap2aqK5pzos1Mdyu4MzOU="; + }; + + patches = [ + ./fix-python-install-dir.patch + ]; + + postPatch = '' + substituteInPlace libcomps/src/python/src/CMakeLists.txt \ + --replace "@PYTHON_INSTALL_DIR@" "$out/${python.sitePackages}" + ''; + + nativeBuildInputs = [ + check + cmake + doxygen + python + sphinx + ]; + + buildInputs = [ + expat + libxml2 + zlib + ]; + + dontUseCmakeBuildDir = true; + cmakeDir = "libcomps"; + + postFixup = '' + ls $out/lib + moveToOutput "lib/${python.libPrefix}" "$py" + ''; + + meta = with lib; { + description = "Comps XML file manipulation library"; + homepage = "https://github.com/rpm-software-management/libcomps"; + license = licenses.gpl2Only; + maintainers = with maintainers; [ katexochen ]; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/libcomps/fix-python-install-dir.patch b/nixpkgs/pkgs/tools/package-management/libcomps/fix-python-install-dir.patch new file mode 100644 index 000000000000..958b4c80843c --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/libcomps/fix-python-install-dir.patch @@ -0,0 +1,13 @@ +diff --git a/libcomps/src/python/src/CMakeLists.txt b/libcomps/src/python/src/CMakeLists.txt +index d22b84e..57bd1c2 100644 +--- a/libcomps/src/python/src/CMakeLists.txt ++++ b/libcomps/src/python/src/CMakeLists.txt +@@ -85,7 +85,7 @@ IF (SKBUILD) + INSTALL(FILES libcomps/__init__.py DESTINATION libcomps/src/python/src/libcomps) + INSTALL(TARGETS pycomps LIBRARY DESTINATION libcomps/src/python/src/libcomps) + ELSE () +- EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('platlib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR) ++ SET(PYTHON_INSTALL_DIR "@PYTHON_INSTALL_DIR@") + + INSTALL(FILES ${pycomps_SRCDIR}/libcomps/__init__.py DESTINATION ${PYTHON_INSTALL_DIR}/libcomps) + #INSTALL(FILES ${pycomps_SRCDIR}/tests/__test.py DESTINATION diff --git a/nixpkgs/pkgs/tools/package-management/libdnf/default.nix b/nixpkgs/pkgs/tools/package-management/libdnf/default.nix new file mode 100644 index 000000000000..e7ecfc9c94db --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/libdnf/default.nix @@ -0,0 +1,104 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, gettext +, pkg-config +, libsolv +, openssl +, check +, json_c +, libmodulemd +, libsmartcols +, sqlite +, librepo +, libyaml +, rpm +, zchunk +, cppunit +, python +, swig +, glib +, sphinx +}: + +stdenv.mkDerivation rec { + pname = "libdnf"; + version = "0.72.0"; + + outputs = [ "out" "dev" "py" ]; + + src = fetchFromGitHub { + owner = "rpm-software-management"; + repo = pname; + rev = "refs/tags/${version}"; + hash = "sha256-Ou7cXJz4g8cx2KjeX+IFRA2m158PGKcb9jCXFuAOKqU="; + }; + + nativeBuildInputs = [ + cmake + gettext + pkg-config + ]; + + buildInputs = [ + check + cppunit + openssl + json_c + libsmartcols + libyaml + libmodulemd + zchunk + python + swig + sphinx + ]; + + propagatedBuildInputs = [ + sqlite + libsolv + librepo + rpm + ]; + + # See https://github.com/NixOS/nixpkgs/issues/107430 + prePatch = '' + cp ${libsolv}/share/cmake/Modules/FindLibSolv.cmake cmake/modules/ + ''; + + patches = [ + ./fix-python-install-dir.patch + ]; + + postPatch = '' + # https://github.com/rpm-software-management/libdnf/issues/1518 + substituteInPlace libdnf/libdnf.pc.in \ + --replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ + substituteInPlace cmake/modules/FindPythonInstDir.cmake \ + --replace "@PYTHON_INSTALL_DIR@" "$out/${python.sitePackages}" + ''; + + cmakeFlags = [ + "-DWITH_GTKDOC=OFF" + "-DWITH_HTML=OFF" + "-DPYTHON_DESIRED=${lib.head (lib.splitString ["."] python.version)}" + ]; + + postInstall = '' + rm -r $out/${python.sitePackages}/hawkey/test + ''; + + postFixup = '' + moveToOutput "lib/${python.libPrefix}" "$py" + ''; + + meta = with lib; { + description = "Package management library"; + homepage = "https://github.com/rpm-software-management/libdnf"; + changelog = "https://github.com/rpm-software-management/libdnf/releases/tag/${version}"; + license = licenses.gpl2Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ rb2k katexochen ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/libdnf/fix-python-install-dir.patch b/nixpkgs/pkgs/tools/package-management/libdnf/fix-python-install-dir.patch new file mode 100644 index 000000000000..d08ec9deec02 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/libdnf/fix-python-install-dir.patch @@ -0,0 +1,12 @@ +diff --git a/cmake/modules/FindPythonInstDir.cmake b/cmake/modules/FindPythonInstDir.cmake +index ed098ded..2a2e1543 100644 +--- a/cmake/modules/FindPythonInstDir.cmake ++++ b/cmake/modules/FindPythonInstDir.cmake +@@ -1,6 +1 @@ +-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c " +-from sys import stdout +-from sysconfig import get_path +-path=get_path(name='platlib', vars={'platbase':'${CMAKE_INSTALL_PREFIX}'}) +-stdout.write(path)" +-OUTPUT_VARIABLE PYTHON_INSTALL_DIR) ++SET(PYTHON_INSTALL_DIR "@PYTHON_INSTALL_DIR@") diff --git a/nixpkgs/pkgs/tools/package-management/librepo/default.nix b/nixpkgs/pkgs/tools/package-management/librepo/default.nix new file mode 100644 index 000000000000..1d43efe3f8af --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/librepo/default.nix @@ -0,0 +1,64 @@ +{ lib, stdenv +, fetchFromGitHub +, cmake +, python +, pkg-config +, libxml2 +, glib +, openssl +, zchunk +, curl +, check +, gpgme +}: + +stdenv.mkDerivation rec { + version = "1.15.1"; + pname = "librepo"; + + outputs = [ "out" "dev" "py" ]; + + src = fetchFromGitHub { + owner = "rpm-software-management"; + repo = "librepo"; + rev = version; + sha256 = "sha256-XVjVu+UTIDbrKHmfJ2zZBLp/h0cLCZFxv/XZ0Iy8VPI="; + }; + + nativeBuildInputs = [ + cmake + pkg-config + ]; + + buildInputs = [ + python + libxml2 + glib + openssl + curl + check + gpgme + zchunk + ]; + + # librepo/fastestmirror.h includes curl/curl.h, and pkg-config specfile refers to others in here + propagatedBuildInputs = [ + curl + gpgme + libxml2 + ]; + + cmakeFlags = [ "-DPYTHON_DESIRED=${lib.substring 0 1 python.pythonVersion}" ]; + + postFixup = '' + moveToOutput "lib/${python.libPrefix}" "$py" + ''; + + meta = with lib; { + description = "Library providing C and Python (libcURL like) API for downloading linux repository metadata and packages"; + homepage = "https://rpm-software-management.github.io/librepo/"; + license = licenses.lgpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ copumpkin ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/licensee/Gemfile b/nixpkgs/pkgs/tools/package-management/licensee/Gemfile new file mode 100644 index 000000000000..a5d0dacfcfae --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/licensee/Gemfile @@ -0,0 +1,2 @@ +source 'https://rubygems.org' +gem 'licensee' diff --git a/nixpkgs/pkgs/tools/package-management/licensee/Gemfile.lock b/nixpkgs/pkgs/tools/package-management/licensee/Gemfile.lock new file mode 100644 index 000000000000..487224bf5da2 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/licensee/Gemfile.lock @@ -0,0 +1,42 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) + dotenv (2.8.1) + faraday (2.7.2) + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + licensee (9.16.0) + dotenv (~> 2.0) + octokit (>= 4.20, < 7.0) + reverse_markdown (>= 1, < 3) + rugged (>= 0.24, < 2.0) + thor (>= 0.19, < 2.0) + mini_portile2 (2.8.1) + nokogiri (1.13.10) + mini_portile2 (~> 2.8.0) + racc (~> 1.4) + octokit (6.0.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + public_suffix (5.0.1) + racc (1.6.2) + reverse_markdown (2.1.1) + nokogiri + ruby2_keywords (0.0.5) + rugged (1.5.0.1) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + thor (1.2.1) + +PLATFORMS + ruby + +DEPENDENCIES + licensee + +BUNDLED WITH + 2.3.26 diff --git a/nixpkgs/pkgs/tools/package-management/licensee/default.nix b/nixpkgs/pkgs/tools/package-management/licensee/default.nix new file mode 100644 index 000000000000..b72c218cd16a --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/licensee/default.nix @@ -0,0 +1,18 @@ +{ lib, bundlerApp, bundlerUpdateScript }: + +bundlerApp { + pname = "licensee"; + gemdir = ./.; + exes = [ "licensee" ]; + + passthru.updateScript = bundlerUpdateScript "licensee"; + + meta = with lib; { + description = "A Ruby Gem to detect under what license a project is distributed"; + homepage = "https://licensee.github.io/licensee/"; + license = licenses.mit; + maintainers = [ maintainers.sternenseemann ]; + platforms = platforms.unix; + mainProgram = "licensee"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/licensee/gemset.nix b/nixpkgs/pkgs/tools/package-management/licensee/gemset.nix new file mode 100644 index 000000000000..25726d2ac5c2 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/licensee/gemset.nix @@ -0,0 +1,159 @@ +{ + addressable = { + dependencies = ["public_suffix"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ypdmpdn20hxp5vwxz3zc04r5xcwqc25qszdlg41h8ghdqbllwmw"; + type = "gem"; + }; + version = "2.8.1"; + }; + dotenv = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1n0pi8x8ql5h1mijvm8lgn6bhq4xjb5a500p5r1krq4s6j9lg565"; + type = "gem"; + }; + version = "2.8.1"; + }; + faraday = { + dependencies = ["faraday-net_http" "ruby2_keywords"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17lacy6n0hsayafvgxgzmngfq2x62b2arbn32bj2yyzmgxwyxhqn"; + type = "gem"; + }; + version = "2.7.2"; + }; + faraday-net_http = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8"; + type = "gem"; + }; + version = "3.0.2"; + }; + licensee = { + dependencies = ["dotenv" "octokit" "reverse_markdown" "rugged" "thor"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0i4hs0vbgp0w3pdddr37zhydm16af122rmr0w39v3nqrj1ir65kv"; + type = "gem"; + }; + version = "9.16.0"; + }; + mini_portile2 = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1af4yarhbbx62f7qsmgg5fynrik0s36wjy3difkawy536xg343mp"; + type = "gem"; + }; + version = "2.8.1"; + }; + nokogiri = { + dependencies = ["mini_portile2" "racc"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0n79k78c5vdcyl0m3y3l5x9kxl6xf5lgriwi2vd665qmdkr01vnk"; + type = "gem"; + }; + version = "1.13.10"; + }; + octokit = { + dependencies = ["faraday" "sawyer"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0a5iy1v1n8f5ggp6q601mn8dz1n08ffs4gv0zsh5ca68j8dfmpx5"; + type = "gem"; + }; + version = "6.0.1"; + }; + public_suffix = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hz0bx2qs2pwb0bwazzsah03ilpf3aai8b7lk7s35jsfzwbkjq35"; + type = "gem"; + }; + version = "5.0.1"; + }; + racc = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09jgz6r0f7v84a7jz9an85q8vvmp743dqcsdm3z9c8rqcqv6pljq"; + type = "gem"; + }; + version = "1.6.2"; + }; + reverse_markdown = { + dependencies = ["nokogiri"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0087vhw5ik50lxvddicns01clkx800fk5v5qnrvi3b42nrk6885j"; + type = "gem"; + }; + version = "2.1.1"; + }; + ruby2_keywords = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz"; + type = "gem"; + }; + version = "0.0.5"; + }; + rugged = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02h1cv73znwfgy61mqmfylcfvwyyp3lddiz3njgivfx234mpz50x"; + type = "gem"; + }; + version = "1.5.0.1"; + }; + sawyer = { + dependencies = ["addressable" "faraday"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jks1qjbmqm8f9kvwa81vqj39avaj9wdnzc531xm29a55bb74fps"; + type = "gem"; + }; + version = "0.9.2"; + }; + thor = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0inl77jh4ia03jw3iqm5ipr76ghal3hyjrd6r8zqsswwvi9j2xdi"; + type = "gem"; + }; + version = "1.2.1"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/microdnf/default.nix b/nixpkgs/pkgs/tools/package-management/microdnf/default.nix new file mode 100644 index 000000000000..79fcdf0300c2 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/microdnf/default.nix @@ -0,0 +1,25 @@ +{ lib, stdenv, fetchFromGitHub, cmake, gettext, libdnf, pkg-config, glib, libpeas, libsmartcols, help2man }: + +stdenv.mkDerivation rec { + pname = "microdnf"; + version = "3.10.0"; + + src = fetchFromGitHub { + owner = "rpm-software-management"; + repo = pname; + rev = version; + sha256 = "sha256-R7jOeH6pw/THLXxLezp2AmE8lUBagKMRJ0XfXgdLi2E="; + }; + + nativeBuildInputs = [ pkg-config cmake gettext help2man ]; + buildInputs = [ libdnf glib libpeas libsmartcols ]; + + meta = with lib; { + description = "Lightweight implementation of dnf in C"; + homepage = "https://github.com/rpm-software-management/microdnf"; + license = licenses.gpl2Plus; + maintainers = with lib.maintainers; [ rb2k ]; + platforms = platforms.linux ++ platforms.darwin; + mainProgram = "microdnf"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/micromamba/default.nix b/nixpkgs/pkgs/tools/package-management/micromamba/default.nix new file mode 100644 index 000000000000..5ff23ec7188d --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/micromamba/default.nix @@ -0,0 +1,79 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, bzip2 +, cli11 +, cmake +, curl +, ghc_filesystem +, libarchive +, libsolv +, yaml-cpp +, nlohmann_json +, python3 +, reproc +, spdlog +, tl-expected +}: + +let + libsolv' = libsolv.overrideAttrs (oldAttrs: { + cmakeFlags = oldAttrs.cmakeFlags ++ [ + "-DENABLE_CONDA=true" + ]; + + patches = [ + # Apply the same patch as in the "official" boa-forge build: + # https://github.com/mamba-org/boa-forge/tree/master/libsolv + (fetchpatch { + url = "https://raw.githubusercontent.com/mamba-org/boa-forge/20530f80e2e15012078d058803b6e2c75ed54224/libsolv/conda_variant_priorization.patch"; + sha256 = "1iic0yx7h8s662hi2jqx68w5kpyrab4fr017vxd4wyxb6wyk35dd"; + }) + ]; + }); +in +stdenv.mkDerivation rec { + pname = "micromamba"; + version = "1.5.4"; + + src = fetchFromGitHub { + owner = "mamba-org"; + repo = "mamba"; + rev = "micromamba-" + version; + hash = "sha256-29SuR4RDW0+yNR1RHlm3I4avy0CjBTGxv1FKxMDZxO0="; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + bzip2 + cli11 + nlohmann_json + curl + libarchive + yaml-cpp + libsolv' + reproc + spdlog + ghc_filesystem + python3 + tl-expected + ]; + + cmakeFlags = [ + "-DBUILD_LIBMAMBA=ON" + "-DBUILD_SHARED=ON" + "-DBUILD_MICROMAMBA=ON" + # "-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" + ]; + + meta = with lib; { + description = "Reimplementation of the conda package manager"; + homepage = "https://github.com/mamba-org/mamba"; + license = licenses.bsd3; + platforms = platforms.all; + maintainers = with maintainers; [ mausch ]; + mainProgram = "micromamba"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/morph/default.nix b/nixpkgs/pkgs/tools/package-management/morph/default.nix new file mode 100644 index 000000000000..71c9c285f308 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/morph/default.nix @@ -0,0 +1,38 @@ +{ buildGoModule, fetchFromGitHub, lib, makeWrapper, openssh }: + +buildGoModule rec { + pname = "morph"; + version = "1.7.0"; + + src = fetchFromGitHub { + owner = "dbcdk"; + repo = "morph"; + rev = "v${version}"; + hash = "sha256-0CHmjqPxBgALGZYjfJFLoLBnoI0U7oZ8WyCtu1bkzZg="; + }; + + vendorHash = "sha256-KV+djwUYNfD7NqmYkanRVeKj2lAGfMjJhCUSRiC4/yM="; + + nativeBuildInputs = [ makeWrapper ]; + + ldflags = [ + "-X main.version=${version}" + "-X main.assetRoot=${placeholder "lib"}" + ]; + + postInstall = '' + mkdir -p $lib + cp -v ./data/*.nix $lib + wrapProgram $out/bin/morph --prefix PATH : ${lib.makeBinPath [ openssh ]}; + ''; + + outputs = [ "out" "lib" ]; + + meta = with lib; { + description = "A NixOS host manager written in Golang"; + license = licenses.mit; + homepage = "https://github.com/dbcdk/morph"; + maintainers = with maintainers; [adamt johanot]; + mainProgram = "morph"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/mynewt-newt/default.nix b/nixpkgs/pkgs/tools/package-management/mynewt-newt/default.nix new file mode 100644 index 000000000000..789a48655436 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/mynewt-newt/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildGoModule +, fetchFromGitHub +, stdenv +}: + +buildGoModule rec { + pname = "mynewt-newt"; + version = "1.10.0"; + + src = fetchFromGitHub { + owner = "apache"; + repo = "mynewt-newt"; + rev = "mynewt_${builtins.replaceStrings ["."] ["_"] version}_tag"; + sha256 = "sha256-HWZDs4kYWveEqzPRNGNbghc1Yg6hy/Pq3eU5jW8WdHc="; + }; + + vendorHash = "sha256-/LK+NSs7YZkw6TRvBQcn6/SszIwAfXN0rt2AKSBV7CE="; + + doCheck = false; + + # CGO_ENABLED=0 required for mac - "error: 'TARGET_OS_MAC' is not defined, evaluates to 0" + # https://github.com/shirou/gopsutil/issues/976 + CGO_ENABLED = if stdenv.isLinux then 1 else 0; + + meta = with lib; { + homepage = "https://mynewt.apache.org/"; + description = "Build and package management tool for embedded development"; + longDescription = '' + Apache Newt is a smart build and package management tool, + designed for C and C++ applications in embedded contexts. Newt + was developed as a part of the Apache Mynewt Operating System. + ''; + license = licenses.asl20; + maintainers = with maintainers; [ pjones ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nfpm/default.nix b/nixpkgs/pkgs/tools/package-management/nfpm/default.nix new file mode 100644 index 000000000000..12facbb5fdba --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nfpm/default.nix @@ -0,0 +1,45 @@ +{ stdenv +, lib +, buildGoModule +, fetchFromGitHub +, installShellFiles +, buildPackages +}: + +buildGoModule rec { + pname = "nfpm"; + version = "2.35.2"; + + src = fetchFromGitHub { + owner = "goreleaser"; + repo = pname; + rev = "v${version}"; + hash = "sha256-ic6SOgIE+g7ccvg163xCwTmz960mWYcxN8ghEdB11To="; + }; + + vendorHash = "sha256-rIgEctBGff5/pzbPPaDgqZCwmIVDjF98wmLBD17KXTM="; + + ldflags = [ "-s" "-w" "-X main.version=${version}" ]; + + nativeBuildInputs = [ installShellFiles ]; + + postInstall = + let emulator = stdenv.hostPlatform.emulator buildPackages; + in '' + ${emulator} $out/bin/nfpm man > nfpm.1 + installManPage ./nfpm.1 + installShellCompletion --cmd nfpm \ + --bash <(${emulator} $out/bin/nfpm completion bash) \ + --fish <(${emulator} $out/bin/nfpm completion fish) \ + --zsh <(${emulator} $out/bin/nfpm completion zsh) + ''; + + meta = with lib; { + description = "A simple deb and rpm packager written in Go"; + homepage = "https://github.com/goreleaser/nfpm"; + changelog = "https://github.com/goreleaser/nfpm/releases/tag/v${version}"; + maintainers = with maintainers; [ marsam techknowlogick caarlos0 ]; + license = with licenses; [ mit ]; + mainProgram = "nfpm"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/niff/default.nix b/nixpkgs/pkgs/tools/package-management/niff/default.nix new file mode 100644 index 000000000000..827d4353f283 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/niff/default.nix @@ -0,0 +1,35 @@ +{ lib, stdenv +, python3 +, fetchFromGitHub +}: + +let + pname = "niff"; + version = "0.1"; +in stdenv.mkDerivation { + name = "${pname}-${version}"; + + src = fetchFromGitHub { + owner = "FRidh"; + repo = "niff"; + rev = "v${version}"; + sha256 = "1ziv5r57jzg2qg61izvkkyq1bz4p5nb6652dzwykfj3l2r3db4bi"; + }; + + buildInputs = [ python3 ]; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/bin + cp niff $out/bin/niff + ''; + + meta = { + description = "A program that compares two Nix expressions and determines which attributes changed"; + homepage = "https://github.com/FRidh/niff"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.fridh ]; + mainProgram = "niff"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-bundle/default.nix b/nixpkgs/pkgs/tools/package-management/nix-bundle/default.nix new file mode 100644 index 000000000000..a32f788bf4dc --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-bundle/default.nix @@ -0,0 +1,61 @@ +{ lib +, stdenv +, fetchFromGitHub +, bzip2 +, coreutils +, gnutar +, gzip +, makeWrapper +, nix +}: + +stdenv.mkDerivation rec { + pname = "nix-bundle"; + version = "0.4.1"; + + src = fetchFromGitHub { + owner = "matthewbauer"; + repo = pname; + rev = "v${version}"; + sha256 = "0js8spwjvw6kjxz1i072scd035fhiyazixvn84ibdnw8dx087gjv"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + # coreutils, gnutar are needed by nix for bootstrap + buildInputs = [ + bzip2 + coreutils + gnutar + gzip + nix + ]; + + makeFlags = [ "PREFIX=$(out)" ]; + + postInstall = '' + mkdir -p $out/bin + makeWrapper $out/share/nix-bundle/nix-bundle.sh $out/bin/nix-bundle \ + --prefix PATH : ${lib.makeBinPath buildInputs} + ln -s $out/share/nix-bundle/nix-run.sh $out/bin/nix-run + ''; + + meta = with lib; { + homepage = "https://github.com/matthewbauer/nix-bundle"; + description = "Create bundles from Nixpkgs attributes"; + longDescription = '' + nix-bundle is a way to package Nix attributes into single-file + executables. + + Benefits: + - Single-file output + - Can be run by non-root users + - No runtime + - Distro agnostic + - No installation + ''; + license = licenses.mit; + maintainers = [ maintainers.matthewbauer ]; + platforms = platforms.all; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-doc/default.nix b/nixpkgs/pkgs/tools/package-management/nix-doc/default.nix new file mode 100644 index 000000000000..8a4e523e98b5 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-doc/default.nix @@ -0,0 +1,43 @@ +{ lib, stdenv, rustPlatform, fetchFromGitHub, boost, nix, pkg-config }: + +rustPlatform.buildRustPackage rec { + pname = "nix-doc"; + version = "0.6.4"; + + src = fetchFromGitHub { + rev = "v${version}"; + owner = "lf-"; + repo = "nix-doc"; + sha256 = "sha256-yL0oG0NiQ7OdGQ/kZxQbSbNphKapu5HBFNP5E2fVe+Y="; + }; + + doCheck = true; + buildInputs = [ boost nix ]; + + nativeBuildInputs = [ pkg-config nix ]; + + # Packaging support for making the nix-doc plugin load cleanly as a no-op on + # the wrong Nix version (disabling bindnow permits loading libraries + # requiring unavailable symbols if they are unreached) + hardeningDisable = [ "bindnow" ]; + # Due to a Rust bug, setting -Z relro-level to anything including "off" on + # macOS will cause link errors + env = lib.optionalAttrs stdenv.isLinux { + # nix-doc does not use nightly features, however, there is no other way to + # set relro-level + RUSTC_BOOTSTRAP = 1; + RUSTFLAGS = "-Z relro-level=partial"; + }; + + cargoSha256 = "sha256-4bzLZt45ZLTZyZPZ4Nkvz7mNe4oqOIoaZUbCbNWBKG0="; + + meta = with lib; { + description = "An interactive Nix documentation tool"; + longDescription = "An interactive Nix documentation tool providing a CLI for function search, a Nix plugin for docs in the REPL, and a ctags implementation for Nix script"; + homepage = "https://github.com/lf-/nix-doc"; + license = licenses.lgpl3Plus; + maintainers = [ maintainers.lf- ]; + platforms = platforms.unix; + mainProgram = "nix-doc"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-du/default.nix b/nixpkgs/pkgs/tools/package-management/nix-du/default.nix new file mode 100644 index 000000000000..a3a1f0d97108 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-du/default.nix @@ -0,0 +1,50 @@ +{ lib +, stdenv +, fetchFromGitHub +, rustPlatform +, nix +, nlohmann_json +, boost +, graphviz +, Security +, pkg-config +}: + +rustPlatform.buildRustPackage rec { + pname = "nix-du"; + version = "1.2.0"; + + src = fetchFromGitHub { + owner = "symphorien"; + repo = "nix-du"; + rev = "v${version}"; + sha256 = "sha256-HfmMZVlsdg9hTWGUihl6OlQAp/n1XRvPLfAKJ8as8Ew="; + }; + + cargoSha256 = "sha256-oUxxuBqec4aI2h8BAn1WSA44UU7f5APkv0DIwuSun0M="; + + doCheck = true; + nativeCheckInputs = [ nix graphviz ]; + + buildInputs = [ + boost + nix + nlohmann_json + ] ++ lib.optionals stdenv.isDarwin [ Security ]; + + nativeBuildInputs = [ pkg-config rustPlatform.bindgenHook ]; + + # Workaround for https://github.com/NixOS/nixpkgs/issues/166205 + env = lib.optionalAttrs stdenv.cc.isClang { + NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}"; + }; + + meta = with lib; { + description = "A tool to determine which gc-roots take space in your nix store"; + homepage = "https://github.com/symphorien/nix-du"; + license = licenses.lgpl3Only; + maintainers = [ maintainers.symphorien ]; + platforms = platforms.unix; + mainProgram = "nix-du"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-eval-jobs/default.nix b/nixpkgs/pkgs/tools/package-management/nix-eval-jobs/default.nix new file mode 100644 index 000000000000..bf2d48e4adfb --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-eval-jobs/default.nix @@ -0,0 +1,47 @@ +{ lib +, boost +, cmake +, fetchFromGitHub +, meson +, ninja +, nix +, nlohmann_json +, pkg-config +, stdenv +}: +stdenv.mkDerivation rec { + pname = "nix-eval-jobs"; + version = "2.19.4"; + src = fetchFromGitHub { + owner = "nix-community"; + repo = pname; + rev = "v${version}"; + hash = "sha256-97ZqhTMqnAr1rzEy96faceWzFyWexnYbH1aTfc1y0JE="; + }; + buildInputs = [ + boost + nix + nlohmann_json + ]; + nativeBuildInputs = [ + meson + ninja + pkg-config + # nlohmann_json can be only discovered via cmake files + cmake + ]; + + # Since this package is intimately tied to a specific Nix release, we + # propagate the Nix used for building it to make it easier for users + # downstream to reference it. + passthru = { inherit nix; }; + + meta = { + description = "Hydra's builtin hydra-eval-jobs as a standalone"; + homepage = "https://github.com/nix-community/nix-eval-jobs"; + license = lib.licenses.gpl3; + maintainers = with lib.maintainers; [ adisbladis mic92 ]; + platforms = lib.platforms.unix; + mainProgram = "nix-eval-jobs"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-index/default.nix b/nixpkgs/pkgs/tools/package-management/nix-index/default.nix new file mode 100644 index 000000000000..35df4f9674d6 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-index/default.nix @@ -0,0 +1,35 @@ +{ lib, stdenv, rustPlatform, fetchFromGitHub, pkg-config, openssl, curl, sqlite +, Security +}: + +rustPlatform.buildRustPackage rec { + pname = "nix-index"; + version = "0.1.7"; + + src = fetchFromGitHub { + owner = "nix-community"; + repo = "nix-index"; + rev = "v${version}"; + hash = "sha256-WPWd2aMuP4L17UDFz7SI6lqyrCzrPV8c88vGyO6r6jk="; + }; + + cargoHash = "sha256-zZhQ3pOid7BCGzcyCrl6sDm0q6IEVKF7K+d6nVs9flk="; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ openssl curl sqlite ] + ++ lib.optional stdenv.isDarwin Security; + + postInstall = '' + substituteInPlace command-not-found.sh \ + --subst-var out + install -Dm555 command-not-found.sh -t $out/etc/profile.d + ''; + + meta = with lib; { + description = "A files database for nixpkgs"; + homepage = "https://github.com/nix-community/nix-index"; + changelog = "https://github.com/nix-community/nix-index/blob/${src.rev}/CHANGELOG.md"; + license = with licenses; [ bsd3 ]; + maintainers = with maintainers; [ bennofs figsoda ncfavier ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-index/wrapper.nix b/nixpkgs/pkgs/tools/package-management/nix-index/wrapper.nix new file mode 100644 index 000000000000..94611e74c2a5 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-index/wrapper.nix @@ -0,0 +1,14 @@ +{ lib, symlinkJoin, nix-index-unwrapped, makeWrapper, nix }: + +symlinkJoin { + inherit (nix-index-unwrapped) name meta; + + paths = [ nix-index-unwrapped ]; + + nativeBuildInputs = [ makeWrapper ]; + + postBuild = '' + wrapProgram $out/bin/nix-index \ + --prefix PATH : ${lib.makeBinPath [ nix ]} + ''; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix b/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix new file mode 100644 index 000000000000..59422ff22cc2 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix @@ -0,0 +1,51 @@ +{ lib, pkgs, stdenv, fetchFromGitHub, python3, nix, git, makeWrapper +, runtimeShell }: +let self = stdenv.mkDerivation rec { + pname = "nix-pin"; + version = "0.4.0"; + src = fetchFromGitHub { + owner = "timbertson"; + repo = "nix-pin"; + rev = "version-${version}"; + sha256 = "1pccvc0iqapms7kidrh09g5fdx44x622r5l9k7bkmssp3v4c68vy"; + }; + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ python3 ]; + installPhase = '' + mkdir "$out" + cp -r bin share "$out" + wrapProgram $out/bin/nix-pin \ + --prefix PATH : "${lib.makeBinPath [ nix git ]}" + ''; + passthru = + let + defaults = import "${self}/share/nix/defaults.nix"; + in { + api = { pinConfig ? defaults.pinConfig }: + let impl = import "${self}/share/nix/api.nix" { inherit pkgs pinConfig; }; in + { inherit (impl) augmentedPkgs pins callPackage; }; + updateScript = '' + #!${runtimeShell} + set -e + echo + cd ${toString ./.} + ${pkgs.nix-update-source}/bin/nix-update-source \ + --prompt version \ + --replace-attr version \ + --set owner timbertson \ + --set repo nix-pin \ + --set type fetchFromGitHub \ + --set rev 'version-{version}' \ + --substitute rev 'version-''${{version}}' \ + --modify-nix default.nix + ''; + }; + meta = with lib; { + homepage = "https://github.com/timbertson/nix-pin"; + description = "nixpkgs development utility"; + license = licenses.mit; + maintainers = [ maintainers.timbertson ]; + platforms = platforms.all; + mainProgram = "nix-pin"; + }; +}; in self diff --git a/nixpkgs/pkgs/tools/package-management/nix-prefetch-scripts/default.nix b/nixpkgs/pkgs/tools/package-management/nix-prefetch-scripts/default.nix new file mode 100644 index 000000000000..aca8c2fbb4de --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-prefetch-scripts/default.nix @@ -0,0 +1,46 @@ +{ lib, stdenv, makeWrapper, buildEnv +, breezy, coreutils, cvs, findutils, gawk, git, git-lfs, gnused, mercurial, nix, subversion +}: + +let mkPrefetchScript = tool: src: deps: + stdenv.mkDerivation { + name = "nix-prefetch-${tool}"; + + nativeBuildInputs = [ makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + install -vD ${src} $out/bin/$name; + wrapProgram $out/bin/$name \ + --prefix PATH : ${lib.makeBinPath (deps ++ [ gnused nix ])} \ + --set HOME /homeless-shelter + ''; + + preferLocalBuild = true; + + meta = with lib; { + description = "Script used to obtain source hashes for fetch${tool}"; + maintainers = with maintainers; [ bennofs ]; + platforms = platforms.unix; + }; + }; +in rec { + nix-prefetch-bzr = mkPrefetchScript "bzr" ../../../build-support/fetchbzr/nix-prefetch-bzr [ breezy ]; + nix-prefetch-cvs = mkPrefetchScript "cvs" ../../../build-support/fetchcvs/nix-prefetch-cvs [ cvs ]; + nix-prefetch-git = mkPrefetchScript "git" ../../../build-support/fetchgit/nix-prefetch-git [ coreutils findutils gawk git git-lfs ]; + nix-prefetch-hg = mkPrefetchScript "hg" ../../../build-support/fetchhg/nix-prefetch-hg [ mercurial ]; + nix-prefetch-svn = mkPrefetchScript "svn" ../../../build-support/fetchsvn/nix-prefetch-svn [ subversion ]; + + nix-prefetch-scripts = buildEnv { + name = "nix-prefetch-scripts"; + + paths = [ nix-prefetch-bzr nix-prefetch-cvs nix-prefetch-git nix-prefetch-hg nix-prefetch-svn ]; + + meta = with lib; { + description = "Collection of all the nix-prefetch-* scripts which may be used to obtain source hashes"; + maintainers = with maintainers; [ bennofs ]; + platforms = platforms.unix; + }; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix b/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix new file mode 100644 index 000000000000..8ed71d078b78 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix @@ -0,0 +1,81 @@ +{ lib, stdenv, fetchFromGitHub, fetchpatch, installShellFiles, makeWrapper, asciidoc +, docbook_xml_dtd_45, git, docbook_xsl, libxml2, libxslt, coreutils, gawk +, gnugrep, gnused, jq, nix }: + +stdenv.mkDerivation rec { + pname = "nix-prefetch"; + version = "0.4.1"; + + src = fetchFromGitHub { + owner = "msteen"; + repo = "nix-prefetch"; + rev = version; + sha256 = "0bwv6x651gyq703pywrhb7lfby6xwnd1iwnrzzjihipn7x3v2hz9"; + # the stat call has to be in a subshell or we get the current date + postFetch = '' + echo $(stat -c %Y $out) > $out/.timestamp + ''; + }; + + patches = [ + (fetchpatch { + name = "fix-prefetching-hash-key.patch"; + url = "https://github.com/msteen/nix-prefetch/commit/508237f48f7e2d8496ce54f38abbe57f44d0cbca.patch"; + hash = "sha256-9SYPcRFZaVyNjMUVdXbef5eGvLp/kr379eU9lG5GgE0="; + }) + ]; + + postPatch = '' + lib=$out/lib/${pname} + + substituteInPlace doc/nix-prefetch.1.asciidoc \ + --subst-var-by version $version + + substituteInPlace src/main.sh \ + --subst-var-by lib $lib \ + --subst-var-by version $version + + substituteInPlace src/tests.sh \ + --subst-var-by bin $out/bin + ''; + + nativeBuildInputs = [ + asciidoc + docbook_xml_dtd_45 + docbook_xsl + installShellFiles + libxml2 + libxslt + makeWrapper + ]; + + dontConfigure = true; + + buildPhase = '' + a2x -a revdate=$(date --utc --date=@$(cat $src/.timestamp) +%d/%m/%Y) \ + -f manpage doc/nix-prefetch.1.asciidoc + ''; + + installPhase = '' + install -Dm555 -t $lib src/*.sh + install -Dm444 -t $lib lib/* + makeWrapper $lib/main.sh $out/bin/${pname} \ + --prefix PATH : ${lib.makeBinPath [ coreutils gawk git gnugrep gnused jq nix ]} + + installManPage doc/nix-prefetch.? + + installShellCompletion --name ${pname} contrib/nix-prefetch-completion.{bash,zsh} + + mkdir -p $out/share/doc/${pname}/contrib + cp -r contrib/hello_rs $out/share/doc/${pname}/contrib + ''; + + meta = with lib; { + description = "Prefetch any fetcher function call, e.g. package sources"; + license = licenses.mit; + maintainers = with maintainers; [ msteen ]; + homepage = "https://github.com/msteen/nix-prefetch"; + platforms = platforms.all; + mainProgram = "nix-prefetch"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix b/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix new file mode 100644 index 000000000000..a149b490f5aa --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix @@ -0,0 +1,51 @@ +{ lib +, stdenv +, fetchFromGitHub +, bzip2 +, nix +, perl +, makeWrapper +, nixosTests +}: + +let + rev = "e4675e38ab54942e351c7686e40fabec822120b9"; + sha256 = "1wm24p6pkxl1d7hrvf4ph6mwzawvqi22c60z9xzndn5xfyr4v0yr"; +in + +stdenv.mkDerivation { + pname = "nix-serve"; + version = "0.2-${lib.substring 0 7 rev}"; + + src = fetchFromGitHub { + owner = "edolstra"; + repo = "nix-serve"; + inherit rev sha256; + }; + + nativeBuildInputs = [ makeWrapper ]; + + dontBuild = true; + + installPhase = '' + install -Dm0755 nix-serve.psgi $out/libexec/nix-serve/nix-serve.psgi + + makeWrapper ${perl.withPackages(p: [ p.DBDSQLite p.Plack p.Starman nix.perl-bindings ])}/bin/starman $out/bin/nix-serve \ + --prefix PATH : "${lib.makeBinPath [ bzip2 nix ]}" \ + --add-flags $out/libexec/nix-serve/nix-serve.psgi + ''; + + passthru.tests = { + nix-serve = nixosTests.nix-serve; + nix-serve-ssh = nixosTests.nix-serve-ssh; + }; + + meta = with lib; { + homepage = "https://github.com/edolstra/nix-serve"; + description = "A utility for sharing a Nix store as a binary cache"; + maintainers = [ maintainers.eelco ]; + license = licenses.lgpl21; + platforms = nix.meta.platforms; + mainProgram = "nix-serve"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix b/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix new file mode 100644 index 000000000000..647a11b01fdc --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix @@ -0,0 +1,31 @@ +{ lib, fetchFromGitHub, rustPlatform, makeWrapper, openssh, nix-serve }: + +rustPlatform.buildRustPackage rec { + pname = "nix-simple-deploy"; + version = "0.2.2"; + + src = fetchFromGitHub { + owner = "misuzu"; + repo = pname; + rev = version; + sha256 = "1qq4fbsd2mvxblsggwbnh88mj18f3vrfzv1kgc7a92pfiwxznq8r"; + }; + + cargoSha256 = "1r6dl7qipbyyvjcd3l9ynawjln1g1qzvw5za6nyjcf41dzv48m8x"; + + nativeBuildInputs = [ makeWrapper ]; + + postInstall = '' + wrapProgram "$out/bin/nix-simple-deploy" \ + --prefix PATH : "${lib.makeBinPath [ openssh nix-serve ]}" + ''; + + meta = with lib; { + description = "Deploy software or an entire NixOS system configuration to another NixOS system"; + homepage = "https://github.com/misuzu/nix-simple-deploy"; + platforms = platforms.unix; + license = with licenses; [ asl20 /* OR */ mit ]; + maintainers = with maintainers; [ misuzu ]; + mainProgram = "nix-simple-deploy"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-template/default.nix b/nixpkgs/pkgs/tools/package-management/nix-template/default.nix new file mode 100644 index 000000000000..e1431532f857 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-template/default.nix @@ -0,0 +1,52 @@ +{ lib, stdenv, rustPlatform, fetchFromGitHub +, installShellFiles +, makeWrapper +, nix +, openssl +, pkg-config +, Security +}: + +rustPlatform.buildRustPackage rec { + pname = "nix-template"; + version = "0.4.1"; + + src = fetchFromGitHub { + name = "${pname}-${version}-src"; + owner = "jonringer"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-42u5FmTIKHpfQ2zZQXIrFkAN2/XvU0wWnCRrQkQzcNI="; + }; + + cargoSha256 = "sha256-f8Th6SbV66Uukqh1Cb5uQVa844qw1PmBB9W7EMXMU4E="; + + nativeBuildInputs = [ + installShellFiles + makeWrapper + pkg-config + ]; + + buildInputs = [ openssl ] + ++ lib.optional stdenv.isDarwin Security; + + # needed for nix-prefetch-url + postInstall = '' + wrapProgram $out/bin/nix-template \ + --prefix PATH : ${lib.makeBinPath [ nix ]} + + installShellCompletion --cmd nix-template \ + --bash <($out/bin/nix-template completions bash) \ + --fish <($out/bin/nix-template completions fish) \ + --zsh <($out/bin/nix-template completions zsh) + ''; + + meta = with lib; { + description = "Make creating nix expressions easy"; + homepage = "https://github.com/jonringer/nix-template/"; + changelog = "https://github.com/jonringer/nix-template/releases/tag/v${version}"; + license = licenses.cc0; + maintainers = with maintainers; [ jonringer ]; + mainProgram = "nix-template"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-top/default.nix b/nixpkgs/pkgs/tools/package-management/nix-top/default.nix new file mode 100644 index 000000000000..dc49f2a739e9 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-top/default.nix @@ -0,0 +1,53 @@ +{ stdenv +, lib +, fetchFromGitHub +, ruby +, makeWrapper +, getent # /etc/passwd +, ncurses # tput +, binutils-unwrapped # strings +, coreutils +, findutils +}: + +# No gems used, so mkDerivation is fine. +let + additionalPath = lib.makeBinPath [ getent ncurses binutils-unwrapped coreutils findutils ]; +in +stdenv.mkDerivation rec { + pname = "nix-top"; + version = "0.3.0"; + + src = fetchFromGitHub { + owner = "samueldr"; + repo = "nix-top"; + rev = "v${version}"; + sha256 = "sha256-w/TKzbZmMt4CX2KnLwPvR1ydp5NNlp9nNx78jJvhp54="; + }; + + nativeBuildInputs = [ + makeWrapper + ]; + + buildInputs = [ + ruby + ]; + + installPhase = '' + mkdir -p $out/libexec/nix-top + install -D -m755 ./nix-top $out/bin/nix-top + wrapProgram $out/bin/nix-top \ + --prefix PATH : "$out/libexec/nix-top:${additionalPath}" + '' + lib.optionalString stdenv.isDarwin '' + ln -s /bin/stty $out/libexec/nix-top + ''; + + meta = with lib; { + description = "Tracks what nix is building"; + homepage = "https://github.com/samueldr/nix-top"; + license = licenses.mit; + maintainers = with maintainers; [ samueldr ]; + platforms = platforms.linux ++ platforms.darwin; + mainProgram = "nix-top"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix b/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix new file mode 100644 index 000000000000..be31ca34ad60 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix @@ -0,0 +1,33 @@ +{ lib, stdenv +, fetchFromGitHub +, ruby +}: + +# No gems used, so mkDerivation is fine. +stdenv.mkDerivation rec { + pname = "nix-universal-prefetch"; + version = "0.4.0"; + + src = fetchFromGitHub { + owner = "samueldr"; + repo = "nix-universal-prefetch"; + rev = "v${version}"; + sha256 = "sha256-HGn4qHWqpUwlS3yQrD3j5oH0yOlphsoSPD2vkyyRv+0="; + }; + + installPhase = '' + mkdir -pv $out/bin + cp nix-universal-prefetch $out/bin/nix-universal-prefetch + substituteInPlace "$out/bin/nix-universal-prefetch" \ + --replace "/usr/bin/env nix-shell" "${ruby}/bin/ruby" + ''; + + meta = with lib; { + description = "Uses nixpkgs fetchers to figure out hashes"; + homepage = "https://github.com/samueldr/nix-universal-prefetch"; + license = licenses.mit; + maintainers = with maintainers; [ samueldr ]; + platforms = platforms.linux ++ platforms.darwin; + mainProgram = "nix-universal-prefetch"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix b/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix new file mode 100644 index 000000000000..533f487e3974 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix @@ -0,0 +1,59 @@ +{ lib, pkgs, fetchFromGitHub, python3Packages, nix-prefetch-scripts, runtimeShell }: + +python3Packages.buildPythonApplication rec { + pname = "nix-update-source"; + version = "0.6.3"; + + src = fetchFromGitHub { + owner = "timbertson"; + repo = "nix-update-source"; + rev = "version-${version}"; + sha256 = "157wvv9vnaszzwbj68jpdc0imcm1hdab3z760bx2axbsgfpqqilz"; + }; + + propagatedBuildInputs = [ nix-prefetch-scripts ]; + + doCheck = false; + + passthru = { + # NOTE: `fetch` should not be used within nixpkgs because it + # uses a non-idiomatic structure. It is provided for use by + # out-of-tree nix derivations. + fetch = path: + let + fetchers = { + # whitelist of allowed fetchers + inherit (pkgs) fetchgit fetchurl fetchFromGitHub; + }; + json = lib.importJSON path; + fetchFn = builtins.getAttr json.fetch.fn fetchers; + src = fetchFn json.fetch.args; + in + json // json.fetch // { + inherit src; + overrideSrc = drv: lib.overrideDerivation drv (orig: { inherit src; }); + }; + + updateScript = '' + #!${runtimeShell} + set -e + echo + cd ${toString ./.} + ${pkgs.nix-update-source}/bin/nix-update-source \ + --prompt version \ + --replace-attr version \ + --set owner timbertson \ + --set repo nix-update-source \ + --set type fetchFromGitHub \ + --set rev 'version-{version}' \ + --modify-nix default.nix + ''; + }; + + meta = { + description = "Utility to automate updating of nix derivation sources"; + maintainers = with lib.maintainers; [ timbertson ]; + license = lib.licenses.mit; + mainProgram = "nix-update-source"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix-update/default.nix b/nixpkgs/pkgs/tools/package-management/nix-update/default.nix new file mode 100644 index 000000000000..20d5c3105e97 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix-update/default.nix @@ -0,0 +1,43 @@ +{ lib +, python3 +, fetchFromGitHub +, nix +, nix-prefetch-git +, nixpkgs-fmt +, nixpkgs-review +}: + +python3.pkgs.buildPythonApplication rec { + pname = "nix-update"; + version = "1.0.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "Mic92"; + repo = pname; + rev = version; + hash = "sha256-C7ke51QlBcTR98ovQi5NcxToEPP6s9gqnxWO1eBw/sI="; + }; + + nativeBuildInputs = [ + python3.pkgs.setuptools + ]; + + makeWrapperArgs = [ + "--prefix" "PATH" ":" (lib.makeBinPath [ nix nix-prefetch-git nixpkgs-fmt nixpkgs-review ]) + ]; + + checkPhase = '' + $out/bin/nix-update --help >/dev/null + ''; + + meta = with lib; { + description = "Swiss-knife for updating nix packages"; + inherit (src.meta) homepage; + changelog = "https://github.com/Mic92/nix-update/releases/tag/${version}"; + license = licenses.mit; + maintainers = with maintainers; [ figsoda mic92 zowoq ]; + mainProgram = "nix-update"; + platforms = platforms.all; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix/common.nix b/nixpkgs/pkgs/tools/package-management/nix/common.nix new file mode 100644 index 000000000000..0ea47dd7e17c --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix/common.nix @@ -0,0 +1,252 @@ +{ lib +, fetchFromGitHub +, version +, suffix ? "" +, hash ? null +, src ? fetchFromGitHub { owner = "NixOS"; repo = "nix"; rev = version; inherit hash; } +, patches ? [ ] +, maintainers ? with lib.maintainers; [ eelco lovesegfault artturin ] +}: +assert (hash == null) -> (src != null); +let + atLeast24 = lib.versionAtLeast version "2.4pre"; + atLeast25 = lib.versionAtLeast version "2.5pre"; + atLeast27 = lib.versionAtLeast version "2.7pre"; + atLeast210 = lib.versionAtLeast version "2.10pre"; + atLeast213 = lib.versionAtLeast version "2.13pre"; + atLeast214 = lib.versionAtLeast version "2.14pre"; +in +{ stdenv +, autoconf-archive +, autoreconfHook +, bash +, bison +, boehmgc +, boost +, brotli +, busybox-sandbox-shell +, bzip2 +, callPackage +, coreutils +, curl +, docbook_xsl_ns +, docbook5 +, editline +, flex +, gnutar +, gtest +, gzip +, jq +, lib +, libarchive +, libcpuid +, libsodium +, libxml2 +, libxslt +, lowdown +, mdbook +, mdbook-linkcheck +, nlohmann_json +, openssl +, perl +, pkg-config +, rapidcheck +, Security +, sqlite +, util-linuxMinimal +, xz + +, enableDocumentation ? !atLeast24 || ( + (stdenv.hostPlatform == stdenv.buildPlatform) && + # mdbook errors out on risc-v due to a rustc bug + # https://github.com/NixOS/nixpkgs/pull/242019 + # https://github.com/rust-lang/rust/issues/114473 + !stdenv.buildPlatform.isRiscV + ) +, enableStatic ? stdenv.hostPlatform.isStatic +, withAWS ? !enableStatic && (stdenv.isLinux || stdenv.isDarwin), aws-sdk-cpp +, withLibseccomp ? lib.meta.availableOn stdenv.hostPlatform libseccomp, libseccomp + +, confDir +, stateDir +, storeDir + + # passthru tests +, pkgsi686Linux +}: let +self = stdenv.mkDerivation { + pname = "nix"; + + version = "${version}${suffix}"; + VERSION_SUFFIX = suffix; + + inherit src patches; + + outputs = + [ "out" "dev" ] + ++ lib.optionals enableDocumentation [ "man" "doc" ]; + + hardeningEnable = lib.optionals (!stdenv.isDarwin) [ "pie" ]; + + hardeningDisable = lib.optional stdenv.hostPlatform.isMusl "fortify"; + + nativeBuildInputs = [ + pkg-config + autoconf-archive + autoreconfHook + bison + flex + jq + ] ++ lib.optionals (enableDocumentation && !atLeast24) [ + libxslt + libxml2 + docbook_xsl_ns + docbook5 + ] ++ lib.optionals (enableDocumentation && atLeast24) [ + (lib.getBin lowdown) + mdbook + ] ++ lib.optionals (atLeast213 && enableDocumentation) [ + mdbook-linkcheck + ] ++ lib.optionals stdenv.isLinux [ + util-linuxMinimal + ]; + + buildInputs = [ + boost + brotli + bzip2 + curl + editline + libsodium + openssl + sqlite + xz + gtest + libarchive + lowdown + ] ++ lib.optionals stdenv.isDarwin [ + Security + ] ++ lib.optionals (stdenv.isx86_64) [ + libcpuid + ] ++ lib.optionals atLeast214 [ + rapidcheck + ] ++ lib.optionals withLibseccomp [ + libseccomp + ] ++ lib.optionals withAWS [ + aws-sdk-cpp + ]; + + propagatedBuildInputs = [ + boehmgc + ] ++ lib.optionals (atLeast27) [ + nlohmann_json + ]; + + postPatch = '' + patchShebangs --build tests + ''; + + preConfigure = + # Copy libboost_context so we don't get all of Boost in our closure. + # https://github.com/NixOS/nixpkgs/issues/45462 + lib.optionalString (!enableStatic) '' + mkdir -p $out/lib + cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib + rm -f $out/lib/*.a + ${lib.optionalString stdenv.isLinux '' + chmod u+w $out/lib/*.so.* + patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.* + ''} + '' + + # On all versions before c9f51e87057652db0013289a95deffba495b35e7, which + # removes config.nix entirely and is not present in 2.3.x, we need to + # patch around an issue where the Nix configure step pulls in the build + # system's bash and other utilities when cross-compiling. + lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform && !atLeast24) '' + mkdir tmp/ + substitute corepkgs/config.nix.in tmp/config.nix.in \ + --subst-var-by bash ${bash}/bin/bash \ + --subst-var-by coreutils ${coreutils}/bin \ + --subst-var-by bzip2 ${bzip2}/bin/bzip2 \ + --subst-var-by gzip ${gzip}/bin/gzip \ + --subst-var-by xz ${xz}/bin/xz \ + --subst-var-by tar ${gnutar}/bin/tar \ + --subst-var-by tr ${coreutils}/bin/tr + mv tmp/config.nix.in corepkgs/config.nix.in + ''; + + configureFlags = [ + "--with-store-dir=${storeDir}" + "--localstatedir=${stateDir}" + "--sysconfdir=${confDir}" + "--enable-gc" + ] ++ lib.optionals (!enableDocumentation) [ + "--disable-doc-gen" + ] ++ lib.optionals stdenv.isLinux [ + "--with-sandbox-shell=${busybox-sandbox-shell}/bin/busybox" + ] ++ lib.optionals (atLeast210 && stdenv.isLinux && stdenv.hostPlatform.isStatic) [ + "--enable-embedded-sandbox-shell" + ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform && stdenv.hostPlatform ? nix && stdenv.hostPlatform.nix ? system) [ + "--with-system=${stdenv.hostPlatform.nix.system}" + ] ++ lib.optionals (!withLibseccomp) [ + # RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50 + "--disable-seccomp-sandboxing" + ] ++ lib.optionals (atLeast210 && stdenv.cc.isGNU && !enableStatic) [ + "--enable-lto" + ]; + + makeFlags = [ + # gcc runs multi-threaded LTO using make and does not yet detect the new fifo:/path style + # of make jobserver. until gcc adds support for this we have to instruct make to use this + # old style or LTO builds will run their linking on only one thread, which takes forever. + "--jobserver-style=pipe" + "profiledir=$(out)/etc/profile.d" + ] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "PRECOMPILE_HEADERS=0" + ++ lib.optional (stdenv.hostPlatform.isDarwin) "PRECOMPILE_HEADERS=1"; + + installFlags = [ "sysconfdir=$(out)/etc" ]; + + doInstallCheck = true; + installCheckTarget = if atLeast210 then "installcheck" else null; + + # socket path becomes too long otherwise + preInstallCheck = lib.optionalString stdenv.isDarwin '' + export TMPDIR=$NIX_BUILD_TOP + '' + # See https://github.com/NixOS/nix/issues/5687 + + lib.optionalString (atLeast25 && stdenv.isDarwin) '' + echo "exit 99" > tests/gc-non-blocking.sh + ''; + + separateDebugInfo = stdenv.isLinux && (atLeast24 -> !enableStatic); + + enableParallelBuilding = true; + + passthru = { + inherit aws-sdk-cpp boehmgc; + + perl-bindings = perl.pkgs.toPerlModule (callPackage ./nix-perl.nix { nix = self; inherit Security; }); + + tests = { + nixi686 = pkgsi686Linux.nixVersions.${"nix_${lib.versions.major version}_${lib.versions.minor version}"}; + }; + }; + + meta = with lib; { + description = "Powerful package manager that makes package management reliable and reproducible"; + longDescription = '' + Nix is a powerful package manager for Linux and other Unix systems that + makes package management reliable and reproducible. It provides atomic + upgrades and rollbacks, side-by-side installation of multiple versions of + a package, multi-user package management and easy setup of build + environments. + ''; + homepage = "https://nixos.org/"; + license = licenses.lgpl2Plus; + inherit maintainers; + platforms = platforms.unix; + outputsToInstall = [ "out" ] ++ optional enableDocumentation "man"; + mainProgram = "nix"; + }; +}; +in self diff --git a/nixpkgs/pkgs/tools/package-management/nix/default.nix b/nixpkgs/pkgs/tools/package-management/nix/default.nix new file mode 100644 index 000000000000..4652ddb76a5b --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix/default.nix @@ -0,0 +1,277 @@ +{ lib +, config +, aws-sdk-cpp +, boehmgc +, callPackage +, fetchFromGitHub +, fetchpatch +, fetchpatch2 +, runCommand +, Security + +, storeDir ? "/nix/store" +, stateDir ? "/nix/var" +, confDir ? "/etc" +}: +let + boehmgc-nix_2_3 = boehmgc.override { enableLargeConfig = true; }; + + boehmgc-nix = boehmgc-nix_2_3.overrideAttrs (drv: { + # Part of the GC solution in https://github.com/NixOS/nix/pull/4944 + patches = (drv.patches or [ ]) ++ [ ./patches/boehmgc-coroutine-sp-fallback.patch ]; + }); + + # old nix fails to build with newer aws-sdk-cpp and the patch doesn't apply + aws-sdk-cpp-old-nix = (aws-sdk-cpp.override { + apis = [ "s3" "transfer" ]; + customMemoryManagement = false; + }).overrideAttrs (args: rec { + # intentionally overriding postPatch + version = "1.9.294"; + + src = fetchFromGitHub { + owner = "aws"; + repo = "aws-sdk-cpp"; + rev = version; + hash = "sha256-Z1eRKW+8nVD53GkNyYlZjCcT74MqFqqRMeMc33eIQ9g="; + }; + postPatch = '' + # Avoid blanket -Werror to evade build failures on less + # tested compilers. + substituteInPlace cmake/compiler_settings.cmake \ + --replace '"-Werror"' ' ' + + # Missing includes for GCC11 + sed '5i#include <thread>' -i \ + aws-cpp-sdk-cloudfront-integration-tests/CloudfrontOperationTest.cpp \ + aws-cpp-sdk-cognitoidentity-integration-tests/IdentityPoolOperationTest.cpp \ + aws-cpp-sdk-dynamodb-integration-tests/TableOperationTest.cpp \ + aws-cpp-sdk-elasticfilesystem-integration-tests/ElasticFileSystemTest.cpp \ + aws-cpp-sdk-lambda-integration-tests/FunctionTest.cpp \ + aws-cpp-sdk-mediastore-data-integration-tests/MediaStoreDataTest.cpp \ + aws-cpp-sdk-queues/source/sqs/SQSQueue.cpp \ + aws-cpp-sdk-redshift-integration-tests/RedshiftClientTest.cpp \ + aws-cpp-sdk-s3-crt-integration-tests/BucketAndObjectOperationTest.cpp \ + aws-cpp-sdk-s3-integration-tests/BucketAndObjectOperationTest.cpp \ + aws-cpp-sdk-s3control-integration-tests/S3ControlTest.cpp \ + aws-cpp-sdk-sqs-integration-tests/QueueOperationTest.cpp \ + aws-cpp-sdk-transfer-tests/TransferTests.cpp + # Flaky on Hydra + rm aws-cpp-sdk-core-tests/aws/auth/AWSCredentialsProviderTest.cpp + # Includes aws-c-auth private headers, so only works with submodule build + rm aws-cpp-sdk-core-tests/aws/auth/AWSAuthSignerTest.cpp + # TestRandomURLMultiThreaded fails + rm aws-cpp-sdk-core-tests/http/HttpClientTest.cpp + '' + lib.optionalString aws-sdk-cpp.stdenv.isi686 '' + # EPSILON is exceeded + rm aws-cpp-sdk-core-tests/aws/client/AdaptiveRetryStrategyTest.cpp + ''; + + patches = (args.patches or [ ]) ++ [ ./patches/aws-sdk-cpp-TransferManager-ContentEncoding.patch ]; + + # only a stripped down version is build which takes a lot less resources to build + requiredSystemFeatures = [ ]; + }); + + aws-sdk-cpp-nix = (aws-sdk-cpp.override { + apis = [ "s3" "transfer" ]; + customMemoryManagement = false; + }).overrideAttrs { + # only a stripped down version is build which takes a lot less resources to build + requiredSystemFeatures = [ ]; + }; + + + common = args: + callPackage + (import ./common.nix ({ inherit lib fetchFromGitHub; } // args)) + { + inherit Security storeDir stateDir confDir; + boehmgc = boehmgc-nix; + aws-sdk-cpp = if lib.versionAtLeast args.version "2.12pre" then aws-sdk-cpp-nix else aws-sdk-cpp-old-nix; + }; + + # https://github.com/NixOS/nix/pull/7585 + patch-monitorfdhup = fetchpatch2 { + name = "nix-7585-monitor-fd-hup.patch"; + url = "https://github.com/NixOS/nix/commit/1df3d62c769dc68c279e89f68fdd3723ed3bcb5a.patch"; + hash = "sha256-f+F0fUO+bqyPXjt+IXJtISVr589hdc3y+Cdrxznb+Nk="; + }; + + # https://github.com/NixOS/nix/pull/7473 + patch-sqlite-exception = fetchpatch2 { + name = "nix-7473-sqlite-exception-add-message.patch"; + url = "https://github.com/hercules-ci/nix/commit/c965f35de71cc9d88f912f6b90fd7213601e6eb8.patch"; + hash = "sha256-tI5nKU7SZgsJrxiskJ5nHZyfrWf5aZyKYExM0792N80="; + }; + + patch-non-existing-output = fetchpatch { + # https://github.com/NixOS/nix/pull/7283 + name = "fix-requires-non-existing-output.patch"; + url = "https://github.com/NixOS/nix/commit/3ade5f5d6026b825a80bdcc221058c4f14e10a27.patch"; + hash = "sha256-s1ybRFCjQaSGj7LKu0Z5g7UiHqdJGeD+iPoQL0vaiS0="; + }; + + patch-rapidcheck-shared = fetchpatch2 { + # https://github.com/NixOS/nix/pull/9431 + name = "fix-missing-librapidcheck.patch"; + url = "https://github.com/NixOS/nix/commit/46131567da96ffac298b9ec54016b37114b0dfd5.patch"; + hash = "sha256-lShYxYKRDWwBqCysAFmFBudhhAL1eendWcL8sEFLCGg="; + }; + + # Intentionally does not support overrideAttrs etc + # Use only for tests that are about the package relation to `pkgs` and/or NixOS. + addTestsShallowly = tests: pkg: pkg // { + tests = pkg.tests // tests; + # In case someone reads the wrong attribute + passthru.tests = pkg.tests // tests; + }; + + addFallbackPathsCheck = pkg: addTestsShallowly + { nix-fallback-paths = + runCommand "test-nix-fallback-paths-version-equals-nix-stable" { + paths = lib.concatStringsSep "\n" (builtins.attrValues (import ../../../../nixos/modules/installer/tools/nix-fallback-paths.nix)); + } '' + if [[ "" != $(grep -v 'nix-${pkg.version}$' <<< "$paths") ]]; then + echo "nix-fallback-paths not up to date with nixVersions.stable (nix-${pkg.version})" + echo "The following paths are not up to date:" + grep -v 'nix-${pkg.version}$' <<< "$paths" + echo + echo "Fix it by running in nixpkgs:" + echo + echo "curl https://releases.nixos.org/nix/nix-${pkg.version}/fallback-paths.nix >nixos/modules/installer/tools/nix-fallback-paths.nix" + echo + exit 1 + else + echo "nix-fallback-paths versions up to date" + touch $out + fi + ''; + } + pkg; + +in lib.makeExtensible (self: ({ + nix_2_3 = (common { + version = "2.3.17"; + hash = "sha256-EK0pgHDekJFqr0oMj+8ANIjq96WPjICe2s0m4xkUdH4="; + patches = [ + patch-monitorfdhup + ]; + maintainers = with lib.maintainers; [ flokli raitobezarius ]; + }).override { boehmgc = boehmgc-nix_2_3; }; + + nix_2_10 = common { + version = "2.10.3"; + hash = "sha256-B9EyDUz/9tlcWwf24lwxCFmkxuPTVW7HFYvp0C4xGbc="; + patches = [ + ./patches/flaky-tests.patch + patch-non-existing-output + patch-monitorfdhup + patch-sqlite-exception + ]; + }; + + nix_2_11 = common { + version = "2.11.1"; + hash = "sha256-qCV65kw09AG+EkdchDPq7RoeBznX0Q6Qa4yzPqobdOk="; + patches = [ + ./patches/flaky-tests.patch + patch-non-existing-output + patch-monitorfdhup + patch-sqlite-exception + ]; + }; + + nix_2_12 = common { + version = "2.12.1"; + hash = "sha256-GmHKhq0uFtdOiJnuBwj2YwlZjvh6YTkfQZgeu4e0dLU="; + patches = [ + ./patches/flaky-tests.patch + patch-monitorfdhup + patch-sqlite-exception + ]; + }; + + nix_2_13 = common { + version = "2.13.6"; + hash = "sha256-pd2yGmHWn4njfbrSP6cMJx8qL+yeGieqcbLNICzcRFs="; + }; + + nix_2_14 = common { + version = "2.14.1"; + hash = "sha256-5aCmGZbsFcLIckCDfvnPD4clGPQI7qYAqHYlttN/Wkg="; + patches = [ + patch-rapidcheck-shared + ]; + }; + + nix_2_15 = common { + version = "2.15.3"; + hash = "sha256-sfFXbjC5iIdSAbctZIuFozxX0uux/KFBNr9oh33xINs="; + patches = [ + patch-rapidcheck-shared + ]; + }; + + nix_2_16 = common { + version = "2.16.2"; + hash = "sha256-VXIYCDkvAWeMoU0W2ZI0TeOszCZA1o8trz6YCPFD5ac="; + patches = [ + patch-rapidcheck-shared + ]; + }; + + nix_2_17 = common { + version = "2.17.1"; + hash = "sha256-Q5L+rHzjp0bYuR2ogg+YPCn6isjmlQ4CJVT0zpn/hFc="; + patches = [ + patch-rapidcheck-shared + ]; + }; + + nix_2_18 = common { + version = "2.18.1"; + hash = "sha256-WNmifcTsN9aG1ONkv+l2BC4sHZZxtNKy0keqBHXXQ7w="; + patches = [ + patch-rapidcheck-shared + ]; + }; + + nix_2_19 = common { + version = "2.19.2"; + hash = "sha256-iA8DqS+W2fWTfR+nNJSvMHqQ+4NpYMRT3b+2zS6JTvE="; + }; + + # The minimum Nix version supported by Nixpkgs + # Note that some functionality *might* have been backported into this Nix version, + # making this package an inaccurate representation of what features are available + # in the actual lowest minver.nix *patch* version. + minimum = + let + minver = import ../../../../lib/minver.nix; + major = lib.versions.major minver; + minor = lib.versions.minor minver; + attribute = "nix_${major}_${minor}"; + nix = self.${attribute}; + in + if ! self ? ${attribute} then + throw "The minimum supported Nix version is ${minver} (declared in lib/minver.nix), but pkgs.nixVersions.${attribute} does not exist." + else + nix; + + stable = addFallbackPathsCheck self.nix_2_18; + + unstable = self.nix_2_19; +} // lib.optionalAttrs config.allowAliases { + nix_2_4 = throw "nixVersions.nix_2_4 has been removed"; + + nix_2_5 = throw "nixVersions.nix_2_5 has been removed"; + + nix_2_6 = throw "nixVersions.nix_2_6 has been removed"; + + nix_2_7 = throw "nixVersions.nix_2_7 has been removed"; + + nix_2_8 = throw "nixVersions.nix_2_8 has been removed"; + + nix_2_9 = throw "nixVersions.nix_2_9 has been removed"; +})) diff --git a/nixpkgs/pkgs/tools/package-management/nix/nix-perl.nix b/nixpkgs/pkgs/tools/package-management/nix/nix-perl.nix new file mode 100644 index 000000000000..0796a0914f1f --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix/nix-perl.nix @@ -0,0 +1,43 @@ +{ stdenv +, lib +, perl +, pkg-config +, curl +, nix +, libsodium +, boost +, autoreconfHook +, autoconf-archive +, nlohmann_json +, Security +}: + +stdenv.mkDerivation { + pname = "nix-perl"; + inherit (nix) version src; + + postUnpack = "sourceRoot=$sourceRoot/perl"; + + buildInputs = lib.optional (stdenv.isDarwin) Security; + + # This is not cross-compile safe, don't have time to fix right now + # but noting for future travellers. + nativeBuildInputs = [ + autoconf-archive + autoreconfHook + boost + curl + libsodium + nix + nlohmann_json + perl + pkg-config + ]; + + configureFlags = [ + "--with-dbi=${perl.pkgs.DBI}/${perl.libPrefix}" + "--with-dbd-sqlite=${perl.pkgs.DBDSQLite}/${perl.libPrefix}" + ]; + + preConfigure = "export NIX_STATE_DIR=$TMPDIR"; +} diff --git a/nixpkgs/pkgs/tools/package-management/nix/patches/aws-sdk-cpp-TransferManager-ContentEncoding.patch b/nixpkgs/pkgs/tools/package-management/nix/patches/aws-sdk-cpp-TransferManager-ContentEncoding.patch new file mode 100644 index 000000000000..59cc305a60bc --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix/patches/aws-sdk-cpp-TransferManager-ContentEncoding.patch @@ -0,0 +1,127 @@ +From 7d58e303159b2fb343af9a1ec4512238efa147c7 Mon Sep 17 00:00:00 2001 +From: Eelco Dolstra <edolstra@gmail.com> +Date: Mon, 6 Aug 2018 17:15:04 +0200 +Subject: [PATCH] TransferManager: Allow setting a content-encoding for S3 uploads + +--- a/aws-cpp-sdk-transfer/include/aws/transfer/TransferHandle.h ++++ b/aws-cpp-sdk-transfer/include/aws/transfer/TransferHandle.h +@@ -297,6 +297,14 @@ namespace Aws + * Content type of the object being transferred + */ + inline void SetContentType(const Aws::String& value) { std::lock_guard<std::mutex> locker(m_getterSetterLock); m_contentType = value; } ++ /** ++ * Content encoding of the object being transferred ++ */ ++ inline const Aws::String GetContentEncoding() const { std::lock_guard<std::mutex> locker(m_getterSetterLock); return m_contentEncoding; } ++ /** ++ * Content type of the object being transferred ++ */ ++ inline void SetContentEncoding(const Aws::String& value) { std::lock_guard<std::mutex> locker(m_getterSetterLock); m_contentEncoding = value; } + /** + * In case of an upload, this is the metadata that was placed on the object when it was uploaded. + * In the case of a download, this is the object metadata from the GetObject operation. +@@ -383,6 +391,7 @@ namespace Aws + Aws::String m_key; + Aws::String m_fileName; + Aws::String m_contentType; ++ Aws::String m_contentEncoding; + Aws::String m_versionId; + Aws::Map<Aws::String, Aws::String> m_metadata; + TransferStatus m_status; +--- a/aws-cpp-sdk-transfer/include/aws/transfer/TransferManager.h ++++ b/aws-cpp-sdk-transfer/include/aws/transfer/TransferManager.h +@@ -154,7 +154,8 @@ namespace Aws + const Aws::String& keyName, + const Aws::String& contentType, + const Aws::Map<Aws::String, Aws::String>& metadata, +- const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr); ++ const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr, ++ const Aws::String& contentEncoding = ""); + + /** + * Downloads the contents of bucketName/keyName in S3 to the file specified by writeToFile. This will perform a GetObject operation. +@@ -246,7 +247,8 @@ namespace Aws + const Aws::Map<Aws::String, + Aws::String>& metadata, + const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context, +- const Aws::String& fileName = ""); ++ const Aws::String& fileName = "", ++ const Aws::String& contentEncoding = ""); + + /** + * Submits the actual task to task schecduler +@@ -262,7 +264,8 @@ namespace Aws + const Aws::String& keyName, + const Aws::String& contentType, + const Aws::Map<Aws::String, Aws::String>& metadata, +- const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context); ++ const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context, ++ const Aws::String& contentEncoding); + + /** + * Uploads the contents of file, to bucketName/keyName in S3. contentType and metadata will be added to the object. If the object is larger than the configured bufferSize, +--- a/aws-cpp-sdk-transfer/source/transfer/TransferManager.cpp ++++ b/aws-cpp-sdk-transfer/source/transfer/TransferManager.cpp +@@ -87,9 +87,10 @@ namespace Aws + const Aws::String& bucketName, + const Aws::String& keyName, const Aws::String& contentType, + const Aws::Map<Aws::String, Aws::String>& metadata, +- const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) ++ const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context, ++ const Aws::String& contentEncoding) + { +- return this->DoUploadFile(fileStream, bucketName, keyName, contentType, metadata, context); ++ return this->DoUploadFile(fileStream, bucketName, keyName, contentType, metadata, context, contentEncoding); + } + + std::shared_ptr<TransferHandle> TransferManager::DownloadFile(const Aws::String& bucketName, +@@ -286,6 +287,9 @@ namespace Aws + createMultipartRequest.WithKey(handle->GetKey()); + createMultipartRequest.WithMetadata(handle->GetMetadata()); + ++ if (handle->GetContentEncoding() != "") ++ createMultipartRequest.WithContentEncoding(handle->GetContentEncoding()); ++ + auto createMultipartResponse = m_transferConfig.s3Client->CreateMultipartUpload(createMultipartRequest); + if (createMultipartResponse.IsSuccess()) + { +@@ -441,6 +445,9 @@ namespace Aws + + putObjectRequest.SetContentType(handle->GetContentType()); + ++ if (handle->GetContentEncoding() != "") ++ putObjectRequest.SetContentEncoding(handle->GetContentEncoding()); ++ + auto buffer = m_bufferManager.Acquire(); + + auto lengthToWrite = (std::min)(m_transferConfig.bufferSize, handle->GetBytesTotalSize()); +@@ -1140,12 +1147,15 @@ namespace Aws + const Aws::String& contentType, + const Aws::Map<Aws::String, Aws::String>& metadata, + const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context, +- const Aws::String& fileName) ++ const Aws::String& fileName, ++ const Aws::String& contentEncoding) + { + auto handle = Aws::MakeShared<TransferHandle>(CLASS_TAG, bucketName, keyName, 0, fileName); + handle->SetContentType(contentType); + handle->SetMetadata(metadata); + handle->SetContext(context); ++ if (contentEncoding != "") ++ handle->SetContentEncoding(contentEncoding); + + if (!fileStream->good()) + { +@@ -1213,9 +1223,10 @@ namespace Aws + const Aws::String& keyName, + const Aws::String& contentType, + const Aws::Map<Aws::String, Aws::String>& metadata, +- const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) ++ const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context, ++ const Aws::String& contentEncoding) + { +- auto handle = CreateUploadFileHandle(fileStream.get(), bucketName, keyName, contentType, metadata, context); ++ auto handle = CreateUploadFileHandle(fileStream.get(), bucketName, keyName, contentType, metadata, context, "", contentEncoding); + return SubmitUpload(handle, fileStream); + } + diff --git a/nixpkgs/pkgs/tools/package-management/nix/patches/boehmgc-coroutine-sp-fallback.patch b/nixpkgs/pkgs/tools/package-management/nix/patches/boehmgc-coroutine-sp-fallback.patch new file mode 100644 index 000000000000..e4e2b3858ad5 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix/patches/boehmgc-coroutine-sp-fallback.patch @@ -0,0 +1,45 @@ +diff --git a/pthread_stop_world.c b/pthread_stop_world.c +index b5d71e62..aed7b0bf 100644 +--- a/pthread_stop_world.c ++++ b/pthread_stop_world.c +@@ -768,6 +768,8 @@ STATIC void GC_restart_handler(int sig) + /* world is stopped. Should not fail if it isn't. */ + GC_INNER void GC_push_all_stacks(void) + { ++ size_t stack_limit; ++ pthread_attr_t pattr; + GC_bool found_me = FALSE; + size_t nthreads = 0; + int i; +@@ -851,6 +853,31 @@ GC_INNER void GC_push_all_stacks(void) + hi = p->altstack + p->altstack_size; + /* FIXME: Need to scan the normal stack too, but how ? */ + /* FIXME: Assume stack grows down */ ++ } else { ++ if (pthread_getattr_np(p->id, &pattr)) { ++ ABORT("GC_push_all_stacks: pthread_getattr_np failed!"); ++ } ++ if (pthread_attr_getstacksize(&pattr, &stack_limit)) { ++ ABORT("GC_push_all_stacks: pthread_attr_getstacksize failed!"); ++ } ++ if (pthread_attr_destroy(&pattr)) { ++ ABORT("GC_push_all_stacks: pthread_attr_destroy failed!"); ++ } ++ // When a thread goes into a coroutine, we lose its original sp until ++ // control flow returns to the thread. ++ // While in the coroutine, the sp points outside the thread stack, ++ // so we can detect this and push the entire thread stack instead, ++ // as an approximation. ++ // We assume that the coroutine has similarly added its entire stack. ++ // This could be made accurate by cooperating with the application ++ // via new functions and/or callbacks. ++ #ifndef STACK_GROWS_UP ++ if (lo >= hi || lo < hi - stack_limit) { // sp outside stack ++ lo = hi - stack_limit; ++ } ++ #else ++ #error "STACK_GROWS_UP not supported in boost_coroutine2 (as of june 2021), so we don't support it in Nix." ++ #endif + } + GC_push_all_stack_sections(lo, hi, traced_stack_sect); + # ifdef STACK_GROWS_UP diff --git a/nixpkgs/pkgs/tools/package-management/nix/patches/flaky-tests.patch b/nixpkgs/pkgs/tools/package-management/nix/patches/flaky-tests.patch new file mode 100644 index 000000000000..3684b09f6ffa --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nix/patches/flaky-tests.patch @@ -0,0 +1,12 @@ +diff --git a/mk/run_test.sh b/mk/run_test.sh +index 7e95df2ac..58420c317 100755 +--- a/mk/run_test.sh ++++ b/mk/run_test.sh +@@ -27,7 +27,6 @@ run_test "$1" + # appear randomly without anyone knowing why. + # See https://github.com/NixOS/nix/issues/3605 for more info + if [[ $status -ne 0 && $status -ne 99 && \ +- "$(uname)" == "Darwin" && \ + "$log" =~ "unexpected EOF reading a line" \ + ]]; then + echo "$post_run_msg [${yellow}FAIL$normal] (possibly flaky, so will be retried)" diff --git a/nixpkgs/pkgs/tools/package-management/nixpkgs-review/default.nix b/nixpkgs/pkgs/tools/package-management/nixpkgs-review/default.nix new file mode 100644 index 000000000000..5e57c6964238 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nixpkgs-review/default.nix @@ -0,0 +1,70 @@ +{ lib +, python3 +, fetchFromGitHub + +, installShellFiles +, bubblewrap +, nix-output-monitor +, cacert +, git +, nix + +, withAutocomplete ? true +, withSandboxSupport ? false +, withNom ? false +}: + +python3.pkgs.buildPythonApplication rec { + pname = "nixpkgs-review"; + version = "2.10.3"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "Mic92"; + repo = "nixpkgs-review"; + rev = version; + hash = "sha256-iO+B/4UsMi+vf85oyLwZTigZ+mmt7Sk3qGba20/0XBs="; + }; + + nativeBuildInputs = [ + installShellFiles + python3.pkgs.setuptools + ] ++ lib.optionals withAutocomplete [ + python3.pkgs.argcomplete + ]; + + propagatedBuildInputs = [ python3.pkgs.argcomplete ]; + + makeWrapperArgs = + let + binPath = [ nix git ] + ++ lib.optional withSandboxSupport bubblewrap + ++ lib.optional withNom nix-output-monitor; + in + [ + "--prefix PATH : ${lib.makeBinPath binPath}" + "--set-default NIX_SSL_CERT_FILE ${cacert}/etc/ssl/certs/ca-bundle.crt" + # we don't have any runtime deps but nix-review shells might inject unwanted dependencies + "--unset PYTHONPATH" + ]; + + doCheck = false; + + postInstall = lib.optionalString withAutocomplete '' + for cmd in nix-review nixpkgs-review; do + installShellCompletion --cmd $cmd \ + --bash <(register-python-argcomplete $out/bin/$cmd) \ + --fish <(register-python-argcomplete $out/bin/$cmd -s fish) \ + --zsh <(register-python-argcomplete $out/bin/$cmd -s zsh) + done + ''; + + meta = with lib; { + changelog = "https://github.com/Mic92/nixpkgs-review/releases/tag/${version}"; + description = "Review pull-requests on https://github.com/NixOS/nixpkgs"; + homepage = "https://github.com/Mic92/nixpkgs-review"; + license = licenses.mit; + mainProgram = "nixpkgs-review"; + maintainers = with maintainers; [ figsoda mic92 ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nox/default.nix b/nixpkgs/pkgs/tools/package-management/nox/default.nix new file mode 100644 index 000000000000..b215a8e1d285 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nox/default.nix @@ -0,0 +1,32 @@ +{ lib, python3Packages, fetchurl, git }: + +python3Packages.buildPythonApplication rec { + pname = "nox"; + version = "0.0.6"; + namePrefix = ""; + + src = fetchurl { + url = "mirror://pypi/n/nix-nox/nix-nox-${version}.tar.gz"; + sha256 = "1qcbhdnhdhhv7q6cqdgv0q55ic8fk18526zn2yb12x9r1s0lfp9z"; + }; + + patches = [ ./nox-review-wip.patch ]; + + buildInputs = [ python3Packages.pbr git ]; + + propagatedBuildInputs = with python3Packages; [ + dogpile-cache + click + requests + characteristic + setuptools + ]; + + meta = { + homepage = "https://github.com/madjar/nox"; + description = "Tools to make nix nicer to use"; + maintainers = [ lib.maintainers.madjar ]; + license = lib.licenses.mit; + platforms = lib.platforms.all; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nox/nox-review-wip.patch b/nixpkgs/pkgs/tools/package-management/nox/nox-review-wip.patch new file mode 100644 index 000000000000..e82dc7a2c266 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nox/nox-review-wip.patch @@ -0,0 +1,11 @@ +--- a/nox/review.py 2017-09-23 04:04:37.322484753 +0200 ++++ a/nox/review.py 2017-09-23 04:18:31.582692181 +0200 +@@ -84,7 +84,7 @@ + ctx.obj['dry_run'] = dry_run + + +-@cli.command(short_help='difference between working tree and a commit') ++@cli.command('wip', short_help='difference between working tree and a commit') + @click.option('--against', default='HEAD') + @click.pass_context + @setup_nixpkgs_config diff --git a/nixpkgs/pkgs/tools/package-management/npm-check-updates/default.nix b/nixpkgs/pkgs/tools/package-management/npm-check-updates/default.nix new file mode 100644 index 000000000000..6e01d4415efc --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/npm-check-updates/default.nix @@ -0,0 +1,27 @@ +{ lib +, buildNpmPackage +, fetchFromGitHub +}: + +buildNpmPackage rec { + pname = "npm-check-updates"; + version = "16.14.0"; + + src = fetchFromGitHub { + owner = "raineorshine"; + repo = "npm-check-updates"; + rev = "v${version}"; + hash = "sha256-X8Mu4Fd650H7eA2nfoefmr4jW974qLBLurmj2H4t7xY="; + }; + + npmDepsHash = "sha256-wm7/WlzqfE7DOT0jUTXBivlC9J8dyHa/OVSgi2SdO5w="; + + meta = { + changelog = "https://github.com/raineorshine/npm-check-updates/blob/${src.rev}/CHANGELOG.md"; + description = "Find newer versions of package dependencies than what your package.json allows"; + homepage = "https://github.com/raineorshine/npm-check-updates"; + license = lib.licenses.asl20; + mainProgram = "ncu"; + maintainers = with lib.maintainers; [ flosse ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/nvd/default.nix b/nixpkgs/pkgs/tools/package-management/nvd/default.nix new file mode 100644 index 000000000000..8f33b4a5fbfa --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/nvd/default.nix @@ -0,0 +1,42 @@ +{ fetchFromGitLab +, installShellFiles +, lib +, python3 +, stdenv +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "nvd"; + version = "0.2.3"; + + src = fetchFromGitLab { + owner = "khumba"; + repo = "nvd"; + rev = "refs/tags/v${finalAttrs.version}"; + hash = "sha256-TmaXsyJLRkmIN9D77jOXd8fLj7kYPCBLg0AHIImAtgA="; + }; + + buildInputs = [ + python3 + ]; + + nativeBuildInputs = [ + installShellFiles + ]; + + installPhase = '' + runHook preInstall + install -m555 -Dt $out/bin src/nvd + installManPage src/nvd.1 + runHook postInstall + ''; + + meta = { + description = "Nix/NixOS package version diff tool"; + homepage = "https://gitlab.com/khumba/nvd"; + license = lib.licenses.asl20; + mainProgram = "nvd"; + maintainers = with lib.maintainers; [ khumba ]; + platforms = lib.platforms.all; + }; +}) diff --git a/nixpkgs/pkgs/tools/package-management/opkg-utils/default.nix b/nixpkgs/pkgs/tools/package-management/opkg-utils/default.nix new file mode 100644 index 000000000000..922fa4c93e1e --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/opkg-utils/default.nix @@ -0,0 +1,25 @@ +{ lib, stdenv, fetchgit }: + +stdenv.mkDerivation { + pname = "opkg-utils"; + version = "unstable-2014-10-30"; + + # No releases, only a git tree + src = fetchgit { + url = "git://git.yoctoproject.org/opkg-utils"; + rev = "762d9dadce548108d4204c2113461a7dd6f57e60"; + sha256 = "09jfkq2p5wv0ifxkw62f4m7pkvpaalh74j2skymi8lh4268krfwz"; + }; + + preBuild = '' + makeFlagsArray+=(PREFIX="$out") + ''; + + meta = with lib; { + description = "Helper scripts for use with the opkg package manager"; + homepage = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/"; + license = licenses.gpl2; + platforms = platforms.all; + maintainers = [ maintainers.bjornfor ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/opkg/default.nix b/nixpkgs/pkgs/tools/package-management/opkg/default.nix new file mode 100644 index 000000000000..6a85e4bb9e88 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/opkg/default.nix @@ -0,0 +1,54 @@ +{ lib +, stdenv +, fetchurl +, pkg-config +, curl +, gpgme +, libarchive +, bzip2 +, xz +, attr +, acl +, libxml2 +, autoreconfHook +}: + +stdenv.mkDerivation rec { + pname = "opkg"; + version = "0.6.2"; + + src = fetchurl { + url = "https://downloads.yoctoproject.org/releases/opkg/opkg-${version}.tar.gz"; + hash = "sha256-rHOpCiVJzQSUjlY9kVkSx44bi6D0OvdcWlP8ykdK29U="; + }; + + nativeBuildInputs = [ + pkg-config + autoreconfHook + ]; + + buildInputs = [ + curl + gpgme + libarchive + bzip2 + xz + attr + acl + libxml2 + ]; + + configureFlags = [ + "--sysconfdir=/etc" + "--localstatedir=/var" + ]; + + meta = with lib; { + description = "A lightweight package management system based upon ipkg"; + homepage = "https://git.yoctoproject.org/cgit/cgit.cgi/opkg/"; + changelog = "https://git.yoctoproject.org/opkg/tree/NEWS?h=v${version}"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ pSub ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/packagekit/default.nix b/nixpkgs/pkgs/tools/package-management/packagekit/default.nix new file mode 100644 index 000000000000..b51a51da84f5 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/packagekit/default.nix @@ -0,0 +1,112 @@ +{ stdenv +, fetchFromGitHub +, lib +, gettext +, glib +, pkg-config +, polkit +, python3 +, sqlite +, gobject-introspection +, vala +, gtk-doc +, boost +, meson +, ninja +, libxslt +, docbook-xsl-nons +, docbook_xml_dtd_42 +, libxml2 +, gst_all_1 +, gtk3 +, enableCommandNotFound ? false +, enableBashCompletion ? false +, bash-completion ? null +, enableSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd +, systemd +}: + +stdenv.mkDerivation rec { + pname = "packagekit"; + version = "1.2.5.1pre"; + + outputs = [ "out" "dev" "devdoc" ]; + + src = fetchFromGitHub { + owner = "PackageKit"; + repo = "PackageKit"; + rev = "30bb82da8d4161330a6d7a20c9989149303421a1"; + sha256 = "k2osc2v0OuGrNjwxdqn785RsbHEJP3p79PG9YqnVE3U="; + }; + + buildInputs = [ + glib + polkit + python3 + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + gtk3 + sqlite + boost + ] ++ lib.optional enableSystemd systemd + ++ lib.optional enableBashCompletion bash-completion; + nativeBuildInputs = [ + gobject-introspection + glib + vala + gettext + pkg-config + gtk-doc + meson + libxslt + docbook-xsl-nons + docbook_xml_dtd_42 + libxml2 + ninja + ]; + + mesonFlags = [ + (if enableSystemd then "-Dsystemd=true" else "-Dsystem=false") + # often fails to build with nix updates + # and remounts /nix/store as rw + # https://github.com/NixOS/nixpkgs/issues/177946 + #"-Dpackaging_backend=nix" + "-Ddbus_sys=${placeholder "out"}/share/dbus-1/system.d" + "-Ddbus_services=${placeholder "out"}/share/dbus-1/system-services" + "-Dsystemdsystemunitdir=${placeholder "out"}/lib/systemd/system" + "-Dcron=false" + "-Dgtk_doc=true" + "--sysconfdir=/etc" + "--localstatedir=/var" + ] + ++ lib.optional (!enableBashCompletion) "-Dbash_completion=false" + ++ lib.optional (!enableCommandNotFound) "-Dbash_command_not_found=false"; + + postPatch = '' + # HACK: we want packagekit to look in /etc for configs but install + # those files in $out/etc ; we just override the runtime paths here + # same for /var & $out/var + substituteInPlace etc/meson.build \ + --replace "install_dir: join_paths(get_option('sysconfdir'), 'PackageKit')" "install_dir: join_paths('$out', 'etc', 'PackageKit')" + substituteInPlace data/meson.build \ + --replace "install_dir: join_paths(get_option('localstatedir'), 'lib', 'PackageKit')," "install_dir: join_paths('$out', 'var', 'lib', 'PackageKit')," + ''; + + meta = with lib; { + description = "System to facilitate installing and updating packages"; + longDescription = '' + PackageKit is a system designed to make installing and updating software + on your computer easier. The primary design goal is to unify all the + software graphical tools used in different distributions, and use some of + the latest technology like PolicyKit. The actual nuts-and-bolts distro + tool (dnf, apt, etc) is used by PackageKit using compiled and scripted + helpers. PackageKit isn't meant to replace these tools, instead providing + a common set of abstractions that can be used by standard GUI and text + mode package managers. + ''; + homepage = "https://github.com/PackageKit/PackageKit"; + license = licenses.gpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ matthewbauer ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/packagekit/qt.nix b/nixpkgs/pkgs/tools/package-management/packagekit/qt.nix new file mode 100644 index 000000000000..72045735cba3 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/packagekit/qt.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchFromGitHub, cmake, pkg-config +, qttools, packagekit }: + +stdenv.mkDerivation rec { + pname = "packagekit-qt"; + version = "1.1.1"; + + src = fetchFromGitHub { + owner = "hughsie"; + repo = "PackageKit-Qt"; + rev = "v${version}"; + sha256 = "sha256-pwDMLd+Gpl0P2ImPjGeZpKAOJ4dH5+P1se0l1qm5Ui0="; + }; + + buildInputs = [ packagekit ]; + + nativeBuildInputs = [ cmake pkg-config qttools ]; + + dontWrapQtApps = true; + + meta = packagekit.meta // { + description = "System to facilitate installing and updating packages - Qt"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/pacman/default.nix b/nixpkgs/pkgs/tools/package-management/pacman/default.nix new file mode 100644 index 000000000000..f9a7fcdcde59 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/pacman/default.nix @@ -0,0 +1,134 @@ +{ lib +, stdenv +, fetchpatch +, fetchurl +, asciidoc +, binutils +, coreutils +, curl +, gpgme +, installShellFiles +, libarchive +, makeWrapper +, meson +, ninja +, openssl +, perl +, pkg-config +, zlib + +# Compression tools in scripts/libmakepkg/util/compress.sh.in +, gzip +, bzip2 +, xz +, zstd +, lrzip +, lzop +, ncompress +, lz4 +, lzip + +# pacman-key runtime dependencies +, gawk +, gettext +, gnugrep +, gnupg + +# Tells pacman where to find ALPM hooks provided by packages. +# This path is very likely to be used in an Arch-like root. +, sysHookDir ? "/usr/share/libalpm/hooks/" +}: + +stdenv.mkDerivation rec { + pname = "pacman"; + version = "6.0.2"; + + src = fetchurl { + url = "https://sources.archlinux.org/other/${pname}/${pname}-${version}.tar.xz"; + hash = "sha256-fY4+jFEhrsCWXfcfWb7fRgUsbPFPljZcRBHsPeCkwaU="; + }; + + nativeBuildInputs = [ + asciidoc + installShellFiles + makeWrapper + meson + ninja + pkg-config + ]; + + buildInputs = [ + curl + gpgme + libarchive + openssl + perl + zlib + ]; + + patches = [ + ./dont-create-empty-dirs.patch + # Add keyringdir meson option to configure the keyring directory + (fetchpatch { + url = "https://gitlab.archlinux.org/pacman/pacman/-/commit/79bd512181af12ec80fd8f79486fc9508fa4a1b3.patch"; + hash = "sha256-ivTPwWe06Q5shn++R6EY0x3GC0P4X0SuC+F5sndfAtM="; + }) + ]; + + postPatch = let compressionTools = [ + gzip + bzip2 + xz + zstd + lrzip + lzop + ncompress + lz4 + lzip + ]; in '' + echo 'export PATH=${lib.makeBinPath compressionTools}:$PATH' >> scripts/libmakepkg/util/compress.sh.in + substituteInPlace meson.build \ + --replace "install_dir : SYSCONFDIR" "install_dir : '$out/etc'" \ + --replace "join_paths(DATAROOTDIR, 'libalpm/hooks/')" "'${sysHookDir}'" \ + --replace "join_paths(PREFIX, DATAROOTDIR, get_option('keyringdir'))" "'\$KEYRING_IMPORT_DIR'" + substituteInPlace doc/meson.build \ + --replace "/bin/true" "${coreutils}/bin/true" + substituteInPlace scripts/repo-add.sh.in \ + --replace bsdtar "${libarchive}/bin/bsdtar" + substituteInPlace scripts/pacman-key.sh.in \ + --replace "local KEYRING_IMPORT_DIR='@keyringdir@'" "" \ + --subst-var-by keyringdir '\$KEYRING_IMPORT_DIR' \ + --replace "--batch --check-trustdb" "--batch --check-trustdb --allow-weak-key-signatures" + ''; # the line above should be removed once Arch migrates to gnupg 2.3.x + + mesonFlags = [ + "--sysconfdir=/etc" + "--localstatedir=/var" + ]; + + hardeningDisable = [ "fortify3" ]; + + postInstall = '' + installShellCompletion --bash scripts/pacman --zsh scripts/_pacman + wrapProgram $out/bin/makepkg \ + --prefix PATH : ${lib.makeBinPath [ binutils ]} + wrapProgram $out/bin/pacman-key \ + --prefix PATH : ${lib.makeBinPath [ + "${placeholder "out"}" + coreutils + gawk + gettext + gnugrep + gnupg + ]} + ''; + + meta = with lib; { + description = "A simple library-based package manager"; + homepage = "https://archlinux.org/pacman/"; + changelog = "https://gitlab.archlinux.org/pacman/pacman/-/raw/v${version}/NEWS"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ samlukeyes123 ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/pacman/dont-create-empty-dirs.patch b/nixpkgs/pkgs/tools/package-management/pacman/dont-create-empty-dirs.patch new file mode 100644 index 000000000000..59deb947bb5d --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/pacman/dont-create-empty-dirs.patch @@ -0,0 +1,20 @@ +diff --git a/meson.build b/meson.build +index c8ee42fd..610401ca 100644 +--- a/meson.build ++++ b/meson.build +@@ -414,15 +414,6 @@ install_data( + 'proto/proto.install', + install_dir : join_paths(DATAROOTDIR, 'pacman')) + +-foreach path : [ +- join_paths(LOCALSTATEDIR, 'lib/pacman/'), +- join_paths(LOCALSTATEDIR, 'cache/pacman/pkg/'), +- join_paths(DATAROOTDIR, 'makepkg-template/'), +- join_paths(DATAROOTDIR, 'libalpm/hooks/'), +- ] +- meson.add_install_script('sh', '-c', 'mkdir -p "$DESTDIR/@0@"'.format(path)) +-endforeach +- + TEST_ENV = environment() + TEST_ENV.set('PMTEST_SCRIPTLIB_DIR', join_paths(meson.project_source_root(), 'scripts/library/')) + TEST_ENV.set('PMTEST_LIBMAKEPKG_DIR', join_paths(meson.project_build_root(), 'scripts/libmakepkg/')) diff --git a/nixpkgs/pkgs/tools/package-management/pacup/default.nix b/nixpkgs/pkgs/tools/package-management/pacup/default.nix new file mode 100644 index 000000000000..7afd4eb815d7 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/pacup/default.nix @@ -0,0 +1,46 @@ +{ lib +, fetchFromGitHub +, python3 +}: + +python3.pkgs.buildPythonApplication rec { + name = "pacup"; + version = "2.0.0"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "pacstall"; + repo = name; + rev = "refs/tags/${version}"; + hash = "sha256-ItO38QyxNHftKPQZAPO7596ddBfX0a1nfVVqgx7BfwI="; + }; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace 'httpx = ">=0.24,<0.25"' 'httpx = "*"' + ''; + + nativeBuildInputs = with python3.pkgs; [ + poetry-core + ]; + + propagatedBuildInputs = with python3.pkgs; [ + httpx + rich + typer + packaging + ]; + + meta = with lib; { + description = "Help maintainers update pacscripts"; + longDescription = '' + Pacup (Pacscript Updater) is a maintainer helper tool to help maintainers update their pacscripts. + It semi-automates the tedious task of updating pacscripts, and aims to make it a fun process for the maintainer! + ''; + homepage = "https://github.com/pacstall/pacup"; + changelog = "https://github.com/pacstall/pacup/releases/tag/${version}"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ zahrun ]; + mainProgram = "pacup"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/pdm/default.nix b/nixpkgs/pkgs/tools/package-management/pdm/default.nix new file mode 100644 index 000000000000..0bf1cb88be68 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/pdm/default.nix @@ -0,0 +1,112 @@ +{ lib +, stdenv +, python3 +, fetchFromGitHub +, fetchpatch +, fetchPypi +, nix-update-script +, runtimeShell +}: +let + python = python3.override { + # override resolvelib due to + # 1. pdm requiring a later version of resolvelib + # 2. Ansible being packaged as a library + # 3. Ansible being unable to upgrade to a later version of resolvelib + # see here for more details: https://github.com/NixOS/nixpkgs/pull/155380/files#r786255738 + packageOverrides = self: super: { + resolvelib = super.resolvelib.overridePythonAttrs rec { + version = "1.0.1"; + src = fetchFromGitHub { + owner = "sarugaku"; + repo = "resolvelib"; + rev = "/refs/tags/${version}"; + hash = "sha256-oxyPn3aFPOyx/2aP7Eg2ThtPbyzrFT1JzWqy6GqNbzM="; + }; + }; + }; + self = python; + }; +in + +with python.pkgs; +buildPythonApplication rec { + pname = "pdm"; + version = "2.10.4"; + format = "pyproject"; + disabled = pythonOlder "3.7"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-bf2dTLWQQ+3sstC0fSCOVdidMzunGX3rBcyi37x6S/s="; + }; + + nativeBuildInputs = [ + pdm-backend + ]; + + propagatedBuildInputs = [ + blinker + certifi + cachecontrol + findpython + installer + packaging + platformdirs + pyproject-hooks + python-dotenv + requests-toolbelt + resolvelib + rich + shellingham + tomlkit + unearth + virtualenv + ] + ++ cachecontrol.optional-dependencies.filecache + ++ lib.optionals (pythonOlder "3.11") [ + tomli + ] + ++ lib.optionals (pythonOlder "3.10") [ + importlib-metadata + ]; + + nativeCheckInputs = [ + pytestCheckHook + pytest-mock + pytest-rerunfailures + pytest-xdist + pytest-httpserver + ] ++ lib.optional stdenv.isLinux first; + + pytestFlagsArray = [ + "-m 'not network'" + ]; + + preCheck = '' + export HOME=$TMPDIR + substituteInPlace tests/cli/test_run.py \ + --replace "/bin/bash" "${runtimeShell}" + ''; + + disabledTests = [ + # fails to locate setuptools (maybe upstream bug) + "test_convert_setup_py_project" + # pythonfinder isn't aware of nix's python infrastructure + "test_use_wrapper_python" + "test_use_invalid_wrapper_python" + ]; + + __darwinAllowLocalNetworking = true; + + passthru.updateScript = nix-update-script { }; + + meta = with lib; { + homepage = "https://pdm-project.org"; + changelog = "https://github.com/pdm-project/pdm/releases/tag/${version}"; + description = "A modern Python package manager with PEP 582 support"; + license = licenses.mit; + maintainers = with maintainers; [ cpcloud ]; + mainProgram = "pdm"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/pkg/default.nix b/nixpkgs/pkgs/tools/package-management/pkg/default.nix new file mode 100644 index 000000000000..b100b9984915 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/pkg/default.nix @@ -0,0 +1,37 @@ +{ lib, stdenv, fetchFromGitHub, m4, pkg-config, tcl +, bzip2, elfutils, libarchive, libbsd, xz, openssl, zlib +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "pkg"; + version = "1.20.8"; + + src = fetchFromGitHub { + owner = "freebsd"; + repo = "pkg"; + rev = finalAttrs.version; + sha256 = "sha256-pQgZMCd4PEjNZKm9V35Rca7Miblv1EgkH+CxaiKvhpY="; + }; + + setOutputFlags = false; + separateDebugInfo = true; + + nativeBuildInputs = [ m4 pkg-config tcl ]; + buildInputs = [ bzip2 elfutils libarchive openssl xz zlib ] + ++ lib.optional stdenv.isLinux libbsd; + + enableParallelBuilding = true; + + preInstall = '' + mkdir -p $out/etc + ''; + + meta = with lib; { + homepage = "https://github.com/freebsd/pkg"; + description = "Package management tool for FreeBSD"; + maintainers = with maintainers; [ qyliss ]; + platforms = with platforms; darwin ++ freebsd ++ linux ++ netbsd ++ openbsd; + license = licenses.bsd2; + mainProgram = "pkg"; + }; +}) diff --git a/nixpkgs/pkgs/tools/package-management/poetry/default.nix b/nixpkgs/pkgs/tools/package-management/poetry/default.nix new file mode 100644 index 000000000000..6de9219529bd --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/poetry/default.nix @@ -0,0 +1,53 @@ +{ python3, fetchFromGitHub }: + +let + python = python3.override { + packageOverrides = self: super: rec { + poetry = self.callPackage ./unwrapped.nix { }; + + # The versions of Poetry and poetry-core need to match exactly, + # and poetry-core in nixpkgs requires a staging cycle to be updated, + # so apply an override here. + # + # We keep the override around even when the versions match, as + # it's likely to become relevant again after the next Poetry update. + poetry-core = super.poetry-core.overridePythonAttrs (old: rec { + version = "1.8.1"; + src = fetchFromGitHub { + owner = "python-poetry"; + repo = "poetry-core"; + rev = version; + hash = "sha256-RnCJ67jaL2knwv+Uo7p0zOejHAT73f40weaJnfqOYoM="; + }; + }); + } // (plugins self); + }; + + plugins = ps: with ps; { + poetry-audit-plugin = callPackage ./plugins/poetry-audit-plugin.nix { }; + poetry-plugin-export = callPackage ./plugins/poetry-plugin-export.nix { }; + poetry-plugin-up = callPackage ./plugins/poetry-plugin-up.nix { }; + }; + + # selector is a function mapping pythonPackages to a list of plugins + # e.g. poetry.withPlugins (ps: with ps; [ poetry-plugin-up ]) + withPlugins = selector: let + selected = selector (plugins python.pkgs); + in python.pkgs.toPythonApplication (python.pkgs.poetry.overridePythonAttrs (old: { + propagatedBuildInputs = old.propagatedBuildInputs ++ selected; + + # save some build time when adding plugins by disabling tests + doCheck = selected == [ ]; + + # Propagating dependencies leaks them through $PYTHONPATH which causes issues + # when used in nix-shell. + postFixup = '' + rm $out/nix-support/propagated-build-inputs + ''; + + passthru = { + plugins = plugins python.pkgs; + inherit withPlugins python; + }; + })); +in withPlugins (ps: [ ]) diff --git a/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-audit-plugin.nix b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-audit-plugin.nix new file mode 100644 index 000000000000..85eb0b5d19b1 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-audit-plugin.nix @@ -0,0 +1,54 @@ +{ lib +, buildPythonPackage +, pythonOlder +, fetchFromGitHub +, poetry-core +, poetry +, safety +, pytestCheckHook +}: + +buildPythonPackage rec { + pname = "poetry-audit-plugin"; + version = "0.3.0"; + + disabled = pythonOlder "3.7"; + + format = "pyproject"; + + src = fetchFromGitHub { + owner = "opeco17"; + repo = "poetry-audit-plugin"; + rev = "refs/tags/${version}"; + hash = "sha256-49OnYz3EFiqOe+cLgfynjy14Ve4Ga6OUrLdM8HhZuKQ="; + }; + + nativeBuildInputs = [ + poetry-core + ]; + + buildInputs = [ + poetry + ]; + + propagatedBuildInputs = [ + safety + ]; + + pythonImportsCheck = [ "poetry_audit_plugin" ]; + + nativeCheckInputs = [ + poetry # for the executable + pytestCheckHook + ]; + + # requires networking + doCheck = false; + + meta = { + description = "Poetry plugin for checking security vulnerabilities in dependencies"; + homepage = "https://github.com/opeco17/poetry-audit-plugin"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ dotlambda ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-export.nix b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-export.nix new file mode 100644 index 000000000000..b4ede0bdedaa --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-export.nix @@ -0,0 +1,38 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, poetry-core +}: + +buildPythonPackage rec { + pname = "poetry-plugin-export"; + version = "1.6.0"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "python-poetry"; + repo = pname; + rev = "refs/tags/${version}"; + hash = "sha256-6U96O0mCQpviBr4I67ZfHytsooXG4oCNTx8YqrrIzYo="; + }; + + postPatch = '' + sed -i '/poetry =/d' pyproject.toml + ''; + + nativeBuildInputs = [ + poetry-core + ]; + + # infinite recursion with poetry + doCheck = false; + pythonImportsCheck = []; + + meta = with lib; { + changelog = "https://github.com/python-poetry/poetry-plugin-export/blob/${src.rev}/CHANGELOG.md"; + description = "Poetry plugin to export the dependencies to various formats"; + license = licenses.mit; + homepage = "https://github.com/python-poetry/poetry-plugin-export"; + maintainers = with maintainers; [ ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix new file mode 100644 index 000000000000..77b6e44c9273 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix @@ -0,0 +1,43 @@ +{ lib +, fetchFromGitHub +, buildPythonPackage +, poetry-core +, pytestCheckHook +, pytest-mock +, poetry +}: + +buildPythonPackage rec { + pname = "poetry-plugin-up"; + version = "0.7.1"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "MousaZeidBaker"; + repo = pname; + rev = "refs/tags/${version}"; + hash = "sha256-ProwMnkg8LaPvb4aYyO1PR30iMSNE9oyKgCIX4O5j+E="; + }; + + nativeBuildInputs = [ + poetry-core + ]; + + nativeCheckInputs = [ + pytestCheckHook + pytest-mock + poetry + ]; + + preCheck = '' + export HOME=$TMPDIR + ''; + + meta = with lib; { + description = "Poetry plugin to simplify package updates"; + homepage = "https://github.com/MousaZeidBaker/poetry-plugin-up"; + changelog = "https://github.com/MousaZeidBaker/poetry-plugin-up/releases/tag/${version}"; + license = licenses.mit; + maintainers = [ maintainers.k900 ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix b/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix new file mode 100644 index 000000000000..33fcb8e6f46d --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix @@ -0,0 +1,171 @@ +{ lib +, stdenv +, buildPythonPackage +, pythonOlder +, fetchFromGitHub +, installShellFiles +, pythonRelaxDepsHook +, build +, cachecontrol +, cleo +, crashtest +, dulwich +, installer +, jsonschema +, keyring +, packaging +, pexpect +, pkginfo +, platformdirs +, poetry-core +, poetry-plugin-export +, pyproject-hooks +, requests +, requests-toolbelt +, shellingham +, tomlkit +, trove-classifiers +, virtualenv +, xattr +, tomli +, importlib-metadata +, cachy +, deepdiff +, flatdict +, pytestCheckHook +, httpretty +, pytest-mock +, pytest-xdist +, pythonAtLeast +}: + +buildPythonPackage rec { + pname = "poetry"; + version = "1.7.1"; + format = "pyproject"; + + disabled = pythonOlder "3.8"; + + src = fetchFromGitHub { + owner = "python-poetry"; + repo = pname; + rev = "refs/tags/${version}"; + hash = "sha256-PM3FIZYso7p0Oe0RpiPuxHrQrgnMlkT5SVeaJPK/J94="; + }; + + nativeBuildInputs = [ + installShellFiles + pythonRelaxDepsHook + ]; + + pythonRelaxDeps = [ + # only pinned to avoid dependency on Rust + "jsonschema" + ]; + + propagatedBuildInputs = [ + build + cachecontrol + cleo + crashtest + dulwich + installer + jsonschema + keyring + packaging + pexpect + pkginfo + platformdirs + poetry-core + poetry-plugin-export + pyproject-hooks + requests + requests-toolbelt + shellingham + tomlkit + trove-classifiers + virtualenv + ] ++ lib.optionals (stdenv.isDarwin) [ + xattr + ] ++ lib.optionals (pythonOlder "3.11") [ + tomli + ] ++ lib.optionals (pythonOlder "3.10") [ + importlib-metadata + ] ++ cachecontrol.optional-dependencies.filecache; + + postInstall = '' + installShellCompletion --cmd poetry \ + --bash <($out/bin/poetry completions bash) \ + --fish <($out/bin/poetry completions fish) \ + --zsh <($out/bin/poetry completions zsh) \ + ''; + + nativeCheckInputs = [ + cachy + deepdiff + flatdict + pytestCheckHook + httpretty + pytest-mock + pytest-xdist + ]; + + preCheck = ('' + export HOME=$TMPDIR + '' + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) '' + # https://github.com/python/cpython/issues/74570#issuecomment-1093748531 + export no_proxy='*'; + ''); + + postCheck = lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) '' + unset no_proxy + ''; + + disabledTests = [ + "test_env_system_packages_are_relative_to_lib" + "test_install_warning_corrupt_root" + "test_installer_with_pypi_repository" + # touches network + "git" + "solver" + "load" + "vcs" + "prereleases_if_they_are_compatible" + "test_builder_setup_generation_runs_with_pip_editable" + "test_executor" + # requires git history to work correctly + "default_with_excluded_data" + # toml ordering has changed + "lock" + # fs permission errors + "test_builder_should_execute_build_scripts" + # poetry.installation.chef.ChefBuildError: Backend 'poetry.core.masonry.api' is not available. + "test_isolated_env_install_success" + "test_prepare_sdist" + "test_prepare_directory" + "test_prepare_directory_with_extensions" + "test_prepare_directory_editable" + ] ++ lib.optionals (pythonAtLeast "3.10") [ + # RuntimeError: 'auto_spec' might be a typo; use unsafe=True if this is intended + "test_info_setup_complex_pep517_error" + ]; + + # Allow for package to use pep420's native namespaces + pythonNamespaces = [ + "poetry" + ]; + + # Unset ambient PYTHONPATH in the wrapper, so Poetry only ever runs with its own, + # isolated set of dependencies. This works because the correct PYTHONPATH is set + # in the Python script, which runs after the wrapper. + makeWrapperArgs = ["--unset PYTHONPATH"]; + + meta = with lib; { + changelog = "https://github.com/python-poetry/poetry/blob/${src.rev}/CHANGELOG.md"; + homepage = "https://python-poetry.org/"; + description = "Python dependency management and packaging made easy"; + license = licenses.mit; + maintainers = with maintainers; [ jakewaksbaum dotlambda ]; + mainProgram = "poetry"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/poetry2conda/default.nix b/nixpkgs/pkgs/tools/package-management/poetry2conda/default.nix new file mode 100644 index 000000000000..7aa821d678ac --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/poetry2conda/default.nix @@ -0,0 +1,48 @@ +{ lib +, fetchFromGitHub +, fetchpatch +, python3 +}: + +with python3.pkgs; buildPythonApplication rec { + pname = "poetry2conda"; + version = "0.3.0"; + + format = "pyproject"; + + src = fetchFromGitHub { + owner = "dojeda"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-UqNoEGgStvqtxhYwExk7wO4SvATaM2kGaFbB5ViJa7U="; + }; + + patches = [ + (fetchpatch { + name = "use-poetry-core.patch"; + url = "https://github.com/dojeda/poetry2conda/commit/b127090498c89fbd8bbcbac45d03178a1e1c4219.patch"; + hash = "sha256-J26NhVPG1vD/QNXi5irtGW05CYsIYvZNQIi8YvHwCLc="; + }) + ]; + + nativeBuildInputs = [ poetry-core ]; + + propagatedBuildInputs = [ + poetry-semver + toml + ]; + + nativeCheckInputs = [ + pytest-mock + pytestCheckHook + pyyaml + ]; + + meta = with lib; { + description = "A script to convert a Python project declared on a pyproject.toml to a conda environment"; + homepage = "https://github.com/dojeda/poetry2conda"; + license = licenses.mit; + maintainers = with maintainers; [ cpcloud ]; + mainProgram = "poetry2conda"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/protontricks/default.nix b/nixpkgs/pkgs/tools/package-management/protontricks/default.nix new file mode 100644 index 000000000000..b8689fdf9966 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/protontricks/default.nix @@ -0,0 +1,68 @@ +{ lib +, buildPythonApplication +, fetchFromGitHub +, setuptools-scm +, setuptools +, vdf +, bash +, steam-run +, winetricks +, yad +, pytestCheckHook +, nix-update-script +}: + +buildPythonApplication rec { + pname = "protontricks"; + version = "1.10.1"; + + src = fetchFromGitHub { + owner = "Matoking"; + repo = pname; + rev = version; + sha256 = "sha256-gKrdUwX5TzeHHXuwhUyI4REPE6TNiZ6lhonyMCHcBCA="; + }; + + patches = [ + # Use steam-run to run Proton binaries + ./steam-run.patch + ]; + + SETUPTOOLS_SCM_PRETEND_VERSION = version; + + nativeBuildInputs = [ setuptools-scm ]; + + propagatedBuildInputs = [ + setuptools # implicit dependency, used to find data/icon_placeholder.png + vdf + ]; + + makeWrapperArgs = [ + "--prefix PATH : ${lib.makeBinPath [ + bash + steam-run + winetricks + yad + ]}" + ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + # From 1.6.0 release notes (https://github.com/Matoking/protontricks/releases/tag/1.6.0): + # In most cases the script is unnecessary and should be removed as part of the packaging process. + postInstall = '' + rm "$out/bin/protontricks-desktop-install" + ''; + + pythonImportsCheck = [ "protontricks" ]; + + passthru.updateScript = nix-update-script { }; + + meta = with lib; { + description = "A simple wrapper for running Winetricks commands for Proton-enabled games"; + homepage = "https://github.com/Matoking/protontricks"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ kira-bruneau ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/protontricks/steam-run.patch b/nixpkgs/pkgs/tools/package-management/protontricks/steam-run.patch new file mode 100644 index 000000000000..bcc1fc989836 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/protontricks/steam-run.patch @@ -0,0 +1,470 @@ +diff --git a/src/protontricks/cli/main.py b/src/protontricks/cli/main.py +index c77d287..236c2a9 100755 +--- a/src/protontricks/cli/main.py ++++ b/src/protontricks/cli/main.py +@@ -17,8 +17,7 @@ from ..flatpak import (FLATPAK_BWRAP_COMPATIBLE_VERSION, + get_running_flatpak_version) + from ..gui import (prompt_filesystem_access, select_steam_app_with_gui, + select_steam_installation) +-from ..steam import (find_legacy_steam_runtime_path, find_proton_app, +- find_steam_installations, get_steam_apps, ++from ..steam import (find_proton_app, find_steam_installations, get_steam_apps, + get_steam_lib_paths) + from ..util import run_command + from ..winetricks import get_winetricks_path +@@ -67,8 +66,7 @@ def main(args=None, steam_path=None, steam_root=None): + "WINE: path to a custom 'wine' executable\n" + "WINESERVER: path to a custom 'wineserver' executable\n" + "STEAM_RUNTIME: 1 = enable Steam Runtime, 0 = disable Steam " +- "Runtime, valid path = custom Steam Runtime path, " +- "empty = enable automatically (default)\n" ++ "Runtime, empty = enable automatically (default)\n" + "PROTONTRICKS_GUI: GUI provider to use, accepts either 'yad' " + "or 'zenity'" + ), +@@ -204,17 +202,9 @@ def main(args=None, steam_path=None, steam_root=None): + if not steam_path: + exit_("No Steam installation was selected.") + +- # 2. Find the pre-installed legacy Steam Runtime if enabled +- legacy_steam_runtime_path = None +- use_steam_runtime = True +- ++ # 2. Use Steam Runtime if enabled + if os.environ.get("STEAM_RUNTIME", "") != "0" and not args.no_runtime: +- legacy_steam_runtime_path = find_legacy_steam_runtime_path( +- steam_root=steam_root +- ) +- +- if not legacy_steam_runtime_path: +- exit_("Steam Runtime was enabled but couldn't be found!") ++ use_steam_runtime = True + else: + use_steam_runtime = False + logger.info("Steam Runtime disabled.") +@@ -281,7 +271,6 @@ def main(args=None, steam_path=None, steam_root=None): + proton_app=proton_app, + steam_app=steam_app, + use_steam_runtime=use_steam_runtime, +- legacy_steam_runtime_path=legacy_steam_runtime_path, + command=[str(winetricks_path), "--gui"], + use_bwrap=use_bwrap, + start_wineserver=start_background_wineserver +@@ -361,7 +350,6 @@ def main(args=None, steam_path=None, steam_root=None): + proton_app=proton_app, + steam_app=steam_app, + use_steam_runtime=use_steam_runtime, +- legacy_steam_runtime_path=legacy_steam_runtime_path, + use_bwrap=use_bwrap, + start_wineserver=start_background_wineserver, + command=[str(winetricks_path)] + args.winetricks_command +@@ -373,7 +361,6 @@ def main(args=None, steam_path=None, steam_root=None): + steam_app=steam_app, + command=args.command, + use_steam_runtime=use_steam_runtime, +- legacy_steam_runtime_path=legacy_steam_runtime_path, + use_bwrap=use_bwrap, + start_wineserver=start_background_wineserver, + # Pass the command directly into the shell *without* +diff --git a/src/protontricks/data/scripts/bwrap_launcher.sh b/src/protontricks/data/scripts/bwrap_launcher.sh +index b5552e1..b11bc99 100644 +--- a/src/protontricks/data/scripts/bwrap_launcher.sh ++++ b/src/protontricks/data/scripts/bwrap_launcher.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/bin/env bash + # Helper script + set -o errexit + +@@ -80,6 +80,8 @@ done + log_info "Following directories will be mounted inside container: ${mount_dirs[*]}" + log_info "Using temporary directory: $PROTONTRICKS_TEMP_PATH" + +-exec "$STEAM_RUNTIME_PATH"/run --share-pid --launcher \ ++exec steam-run "$STEAM_RUNTIME_PATH"/pressure-vessel/bin/pressure-vessel-wrap \ ++--variable-dir="${PRESSURE_VESSEL_VARIABLE_DIR:-$STEAM_RUNTIME_PATH/var}" \ ++--share-pid --launcher \ + "${mount_params[@]}" -- \ + --bus-name="com.github.Matoking.protontricks.App${STEAM_APPID}_${PROTONTRICKS_SESSION_ID}" +diff --git a/src/protontricks/data/scripts/wine_launch.sh b/src/protontricks/data/scripts/wine_launch.sh +index 1f8a432..2d82f2b 100644 +--- a/src/protontricks/data/scripts/wine_launch.sh ++++ b/src/protontricks/data/scripts/wine_launch.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/bin/env -S steam-run bash + # Helper script created by Protontricks to run Wine binaries using Steam Runtime + set -o errexit + +@@ -158,8 +158,8 @@ if [[ -n "$PROTONTRICKS_INSIDE_STEAM_RUNTIME" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PROTON_LD_LIBRARY_PATH" + log_info "Appending to LD_LIBRARY_PATH: $PROTON_LD_LIBRARY_PATH" + elif [[ "$PROTONTRICKS_STEAM_RUNTIME" = "legacy" ]]; then +- export LD_LIBRARY_PATH="$PROTON_LD_LIBRARY_PATH" +- log_info "LD_LIBRARY_PATH set to $LD_LIBRARY_PATH" ++ export LD_LIBRARY_PATH="$PROTON_LD_LIBRARY_PATH":"$LD_LIBRARY_PATH" ++ log_info "Inserting to head of LD_LIBRARY_PATH: $PROTON_LD_LIBRARY_PATH" + fi + exec "$PROTON_DIST_PATH"/bin/@@name@@ "$@" || : + elif [[ "$PROTONTRICKS_STEAM_RUNTIME" = "bwrap" ]]; then +diff --git a/src/protontricks/data/scripts/wineserver_keepalive.sh b/src/protontricks/data/scripts/wineserver_keepalive.sh +index 8168dae..559de33 100644 +--- a/src/protontricks/data/scripts/wineserver_keepalive.sh ++++ b/src/protontricks/data/scripts/wineserver_keepalive.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/bin/env bash + # A simple keepalive script that will ensure a wineserver process is kept alive + # for the duration of the Protontricks session. + # This is accomplished by launching a simple Windows batch script that will +diff --git a/src/protontricks/steam.py b/src/protontricks/steam.py +index c39b51d..79de098 100644 +--- a/src/protontricks/steam.py ++++ b/src/protontricks/steam.py +@@ -14,9 +14,8 @@ from .util import lower_dict + + __all__ = ( + "COMMON_STEAM_DIRS", "SteamApp", "find_steam_installations", +- "find_steam_path", "find_legacy_steam_runtime_path", +- "iter_appinfo_sections", "get_appinfo_sections", "get_tool_appid", +- "find_steam_compat_tool_app", "find_appid_proton_prefix", ++ "find_steam_path", "iter_appinfo_sections", "get_appinfo_sections", ++ "get_tool_appid", "find_steam_compat_tool_app", "find_appid_proton_prefix", + "find_proton_app", "get_steam_lib_paths", "get_compat_tool_dirs", + "get_custom_compat_tool_installations_in_dir", + "get_custom_compat_tool_installations", "find_current_steamid3", +@@ -393,37 +392,6 @@ def find_steam_path(): + return None, None + + +-def find_legacy_steam_runtime_path(steam_root): +- """ +- Find the legacy Steam Runtime either using the STEAM_RUNTIME env or +- steam_root +- """ +- env_steam_runtime = os.environ.get("STEAM_RUNTIME", "") +- +- if env_steam_runtime == "0": +- # User has disabled Steam Runtime +- logger.info("STEAM_RUNTIME is 0. Disabling Steam Runtime.") +- return None +- elif env_steam_runtime and Path(env_steam_runtime).is_dir(): +- # User has a custom Steam Runtime +- logger.info( +- "Using custom Steam Runtime at %s", env_steam_runtime) +- return Path(env_steam_runtime) +- elif env_steam_runtime in ["1", ""]: +- # User has enabled Steam Runtime or doesn't have STEAM_RUNTIME set; +- # default to enabled Steam Runtime in either case +- steam_runtime_path = steam_root / "ubuntu12_32" / "steam-runtime" +- +- logger.info( +- "Using default Steam Runtime at %s", str(steam_runtime_path)) +- return steam_runtime_path +- +- logger.error( +- "Path in STEAM_RUNTIME doesn't point to a valid Steam Runtime!") +- +- return None +- +- + APPINFO_STRUCT_HEADER = "<4sL" + APPINFO_V27_STRUCT_SECTION = "<LLLLQ20sL" + APPINFO_V28_STRUCT_SECTION = "<LLLLQ20sL20s" +diff --git a/src/protontricks/util.py b/src/protontricks/util.py +index 7e95af5..7dc9a29 100644 +--- a/src/protontricks/util.py ++++ b/src/protontricks/util.py +@@ -8,14 +8,14 @@ import shutil + import tempfile + import re + from pathlib import Path +-from subprocess import PIPE, check_output, run, Popen, DEVNULL ++from subprocess import PIPE, run, Popen, DEVNULL + + import pkg_resources + + __all__ = ( + "SUPPORTED_STEAM_RUNTIMES", "lower_dict", +- "get_legacy_runtime_library_paths", "get_host_library_paths", +- "RUNTIME_ROOT_GLOB_PATTERNS", "get_runtime_library_paths", ++ "get_host_library_paths", "RUNTIME_ROOT_GLOB_PATTERNS", ++ "get_runtime_library_paths", + "WINE_SCRIPT_TEMPLATE", "create_wine_bin_dir", "run_command" + ) + +@@ -43,24 +43,6 @@ def lower_dict(d): + return {k.lower(): _lower_value(v) for k, v in d.items()} + + +-def get_legacy_runtime_library_paths(legacy_steam_runtime_path, proton_app): +- """ +- Get LD_LIBRARY_PATH value to use when running a command using Steam Runtime +- """ +- steam_runtime_paths = check_output([ +- str(legacy_steam_runtime_path / "run.sh"), +- "--print-steam-runtime-library-paths" +- ]) +- steam_runtime_paths = str(steam_runtime_paths, "utf-8") +- # Add Proton installation directory first into LD_LIBRARY_PATH +- # so that libwine.so.1 is picked up correctly (see issue #3) +- return "".join([ +- str(proton_app.proton_dist_path / "lib"), os.pathsep, +- str(proton_app.proton_dist_path / "lib64"), os.pathsep, +- steam_runtime_paths +- ]) +- +- + def get_host_library_paths(): + """ + Get host library paths to use when creating the LD_LIBRARY_PATH environment +@@ -72,7 +54,7 @@ def get_host_library_paths(): + # Since that command is unavailable with newer Steam Runtime releases, + # do it ourselves here. + result = run( +- ["/sbin/ldconfig", "-XNv"], ++ ["steam-run", "ldconfig", "-XNv"], + check=True, stdout=PIPE, stderr=PIPE + ) + lines = result.stdout.decode("utf-8").split("\n") +@@ -90,7 +72,7 @@ RUNTIME_ROOT_GLOB_PATTERNS = ( + ) + + +-def get_runtime_library_paths(proton_app, use_bwrap=True): ++def get_runtime_library_paths(proton_app, proton_app_only=True): + """ + Get LD_LIBRARY_PATH value to use when running a command using Steam Runtime + """ +@@ -111,7 +93,7 @@ def get_runtime_library_paths(proton_app, use_bwrap=True): + f"Could not find Steam Runtime runtime root for {runtime_app.name}" + ) + +- if use_bwrap: ++ if proton_app_only: + return "".join([ + str(proton_app.proton_dist_path / "lib"), os.pathsep, + str(proton_app.proton_dist_path / "lib64"), os.pathsep +@@ -313,7 +295,7 @@ def run_command( + wine_environ["STEAM_RUNTIME_PATH"] = \ + str(proton_app.required_tool_app.install_path) + wine_environ["PROTON_LD_LIBRARY_PATH"] = \ +- get_runtime_library_paths(proton_app, use_bwrap=use_bwrap) ++ get_runtime_library_paths(proton_app, proton_app_only=use_bwrap) + + runtime_name = proton_app.required_tool_app.name + logger.info( +@@ -337,13 +319,9 @@ def run_command( + "Current Steam Runtime not recognized by Protontricks." + ) + else: +- # Legacy Steam Runtime requires a different LD_LIBRARY_PATH +- # that is produced by a script. + wine_environ["PROTONTRICKS_STEAM_RUNTIME"] = "legacy" + wine_environ["PROTON_LD_LIBRARY_PATH"] = \ +- get_legacy_runtime_library_paths( +- legacy_steam_runtime_path, proton_app +- ) ++ get_runtime_library_paths(proton_app, proton_app_only=True) + + # bwrap is not available, so ensure it is not launched even if the + # user configured it so +@@ -353,7 +331,6 @@ def run_command( + # configuring the environment and Wine before launching the underlying + # Wine binaries. + wine_bin_dir = create_wine_bin_dir(proton_app) +- wine_environ["LEGACY_STEAM_RUNTIME_PATH"] = str(legacy_steam_runtime_path) + wine_environ["PATH"] = os.pathsep.join( + [str(wine_bin_dir), wine_environ["PATH"]] + ) +diff --git a/tests/cli/test_main.py b/tests/cli/test_main.py +index 0a35f8d..9b96629 100644 +--- a/tests/cli/test_main.py ++++ b/tests/cli/test_main.py +@@ -121,15 +121,10 @@ class TestCLIRun: + assert str(command.args[0]).endswith(".local/bin/winetricks") + assert command.args[1] == "winecfg" + assert command.env["PATH"].startswith(str(wine_bin_dir)) +- assert ( +- "fake_steam_runtime/lib64" in command.env["PROTON_LD_LIBRARY_PATH"] +- ) + assert command.env["WINE"] == str(wine_bin_dir / "wine") + assert command.env["WINELOADER"] == str(wine_bin_dir / "wine") + assert command.env["WINESERVER"] == str(wine_bin_dir / "wineserver") + +- assert command.env["LEGACY_STEAM_RUNTIME_PATH"] == \ +- str(steam_runtime_dir / "steam-runtime") + assert command.env["PROTONTRICKS_STEAM_RUNTIME"] == "legacy" + assert "STEAM_RUNTIME_PATH" not in command.env + +@@ -180,16 +175,14 @@ class TestCLIRun: + assert command.env["PATH"].startswith(str(wine_bin_dir)) + + # Compared to the traditional Steam Runtime, PROTON_LD_LIBRARY_PATH +- # will be different ++ # will be the same (it would be different without steam-run.patch) + proton_install_path = Path(proton_app.install_path) + assert command.env["PROTON_LD_LIBRARY_PATH"] == "".join([ + str(proton_install_path / "dist" / "lib"), os.pathsep, + str(proton_install_path / "dist" / "lib64"), os.pathsep + ]) + +- # Environment variables for both legacy and new Steam Runtime exist +- assert command.env["LEGACY_STEAM_RUNTIME_PATH"] == \ +- str(steam_runtime_dir / "steam-runtime") ++ # Environment variable for new Steam Runtime exists + assert command.env["STEAM_RUNTIME_PATH"] == \ + str(steam_runtime_soldier.install_path) + assert command.env["PROTONTRICKS_STEAM_RUNTIME"] == "bwrap" +@@ -254,9 +247,7 @@ class TestCLIRun: + str(runtime_root / "lib" / "x86_64-linux-gnu") + ])) + +- # Environment variables for both legacy and new Steam Runtime exist +- assert command.env["LEGACY_STEAM_RUNTIME_PATH"] == \ +- str(steam_runtime_dir / "steam-runtime") ++ # Environment variable for new Steam Runtime exists + assert command.env["STEAM_RUNTIME_PATH"] == \ + str(steam_runtime_soldier.install_path) + assert command.env["PROTONTRICKS_STEAM_RUNTIME"] == "legacy" +@@ -407,7 +398,6 @@ class TestCLIRun: + + # Also ensure log messages are included in the error message + assert b"Found Steam directory at" in message +- assert b"Using default Steam Runtime" in message + + def test_run_gui_provider_not_found(self, cli, home_dir, steam_app_factory): + """ +@@ -421,20 +411,6 @@ class TestCLIRun: + + assert "YAD or Zenity is not installed" in result + +- def test_run_steam_runtime_not_found( +- self, cli, steam_dir, steam_app_factory): +- """ +- Try performing a command with Steam Runtime enabled but no +- available Steam Runtime installation +- """ +- steam_app_factory(name="Fake game 1", appid=10) +- result = cli( +- ["10", "winecfg"], env={"STEAM_RUNTIME": "invalid/path"}, +- expect_returncode=1 +- ) +- +- assert "Steam Runtime was enabled but couldn't be found" in result +- + def test_run_proton_not_found(self, cli, steam_dir, steam_app_factory): + steam_app_factory(name="Fake game 1", appid=10) + result = cli(["10", "winecfg"], expect_returncode=1) +diff --git a/tests/conftest.py b/tests/conftest.py +index 106e0d9..8236f3a 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -169,7 +169,7 @@ def steam_runtime_dir(steam_dir): + """ + (steam_dir.parent / "root" / "ubuntu12_32" / "steam-runtime").mkdir(parents=True) + (steam_dir.parent / "root" / "ubuntu12_32" / "steam-runtime" / "run.sh").write_text( +- "#!/bin/bash\n" ++ "#!/usr/bin/env -S steam-run bash\n" + """if [ "$1" = "--print-steam-runtime-library-paths" ]; then\n""" + " echo 'fake_steam_runtime/lib:fake_steam_runtime/lib64'\n" + "fi" +@@ -735,7 +735,7 @@ def xdg_user_dir_bin(home_dir): + # Only mock PICTURES and DOWNLOAD; mocking everything isn't necessary + # for the tests. + (home_dir / ".local" / "bin" / "xdg-user-dir").write_text( +- '#!/bin/bash\n' ++ '#!/usr/bin/env -S steam-run bash\n' + 'if [[ "$1" == "PICTURES" ]]; then\n' + ' echo "$HOME/Pictures"\n' + 'elif [[ "$1" == "DOWNLOAD" ]]; then\n' +diff --git a/tests/test_flatpak.py b/tests/test_flatpak.py +index cb2b9bb..440b704 100644 +--- a/tests/test_flatpak.py ++++ b/tests/test_flatpak.py +@@ -159,36 +159,6 @@ class TestGetInaccessiblePaths: + + assert len(inaccessible_paths) == 0 + +- @pytest.mark.usefixtures("xdg_user_dir_bin") +- def test_flatpak_xdg_user_dir(self, monkeypatch, tmp_path, home_dir): +- """ +- Test that XDG filesystem permissions such as 'xdg-pictures' and +- 'xdg-download' are detected correctly +- """ +- flatpak_info_path = tmp_path / "flatpak-info" +- +- flatpak_info_path.write_text( +- "[Application]\n" +- "name=fake.flatpak.Protontricks\n" +- "\n" +- "[Instance]\n" +- "flatpak-version=1.12.1\n" +- "\n" +- "[Context]\n" +- "filesystems=xdg-pictures;" +- ) +- monkeypatch.setattr( +- "protontricks.flatpak.FLATPAK_INFO_PATH", str(flatpak_info_path) +- ) +- +- inaccessible_paths = get_inaccessible_paths([ +- str(home_dir / "Pictures"), +- str(home_dir / "Download") +- ]) +- +- assert len(inaccessible_paths) == 1 +- assert str(inaccessible_paths[0]) == str(home_dir / "Download") +- + def test_flatpak_unknown_permission(self, monkeypatch, tmp_path, caplog): + """ + Test that unknown filesystem permissions are ignored +diff --git a/tests/test_util.py b/tests/test_util.py +index ec5f4f3..0b0a66c 100644 +--- a/tests/test_util.py ++++ b/tests/test_util.py +@@ -98,44 +98,6 @@ class TestRunCommand: + assert command.env["WINELOADER"] == "/fake/wine" + assert command.env["WINESERVER"] == "/fake/wineserver" + +- def test_unknown_steam_runtime_detected( +- self, home_dir, proton_factory, runtime_app_factory, +- steam_app_factory, caplog): +- """ +- Test that Protontricks will log a warning if it encounters a Steam +- Runtime it does not recognize +- """ +- steam_runtime_medic = runtime_app_factory( +- name="Steam Linux Runtime - Medic", +- appid=14242420, +- runtime_dir_name="medic" +- ) +- proton_app = proton_factory( +- name="Proton 5.20", appid=100, compat_tool_name="proton_520", +- is_default_proton=True, required_tool_app=steam_runtime_medic +- ) +- steam_app = steam_app_factory(name="Fake game", appid=10) +- +- run_command( +- winetricks_path=Path("/usr/bin/winetricks"), +- proton_app=proton_app, +- steam_app=steam_app, +- command=["echo", "nothing"], +- shell=True, +- use_steam_runtime=True +- ) +- +- # Warning will be logged since Protontricks does not recognize +- # Steam Runtime Medic and can't ensure it's being configured correctly +- warning = next( +- record for record in caplog.records +- if record.levelname == "WARNING" +- and "not recognized" in record.getMessage() +- ) +- assert warning.getMessage() == \ +- "Current Steam Runtime not recognized by Protontricks." +- +- + class TestLowerDict: + def test_lower_nested_dict(self): + """ diff --git a/nixpkgs/pkgs/tools/package-management/repro-get/default.nix b/nixpkgs/pkgs/tools/package-management/repro-get/default.nix new file mode 100644 index 000000000000..95d5902be006 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/repro-get/default.nix @@ -0,0 +1,74 @@ +{ lib +, buildGoModule +, fetchFromGitHub +, installShellFiles +, testers +, repro-get +, cacert +}: + +buildGoModule rec { + pname = "repro-get"; + version = "0.4.1"; + + src = fetchFromGitHub { + owner = "reproducible-containers"; + repo = "repro-get"; + rev = "v${version}"; + sha256 = "sha256-qLu9SZuHCkKAOhzrBPEEev1iD5mcIBvrbXspHtifsq4="; + }; + + vendorHash = "sha256-clpQLRozXFeUGrItL2pfNft2hUNyuyeCP9oMQxagAWs="; + + nativeBuildInputs = [ installShellFiles ]; + + # The pkg/version test requires internet access, so disable it here and run it + # in passthru.pkg-version + preCheck = '' + rm -rf pkg/version + ''; + + ldflags = [ + "-s" + "-w" + "-X github.com/reproducible-containers/${pname}/pkg/version.Version=v${version}" + ]; + + postInstall = '' + installShellCompletion --cmd repro-get \ + --bash <($out/bin/repro-get completion bash) \ + --fish <($out/bin/repro-get completion fish) \ + --zsh <($out/bin/repro-get completion zsh) + ''; + + passthru.tests = { + "pkg-version" = repro-get.overrideAttrs (old: { + # see invalidateFetcherByDrvHash + name = "${repro-get.pname}-${builtins.unsafeDiscardStringContext (lib.substring 0 12 (baseNameOf repro-get.drvPath))}"; + subPackages = [ "pkg/version" ]; + installPhase = '' + rm -rf $out + touch $out + ''; + preCheck = ""; + outputHash = "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="; + outputHashAlgo = "sha256"; + outputHashMode = "flat"; + outputs = [ "out" ]; + nativeBuildInputs = old.nativeBuildInputs ++ [ cacert ]; + }); + version = testers.testVersion { + package = repro-get; + command = "HOME=$(mktemp -d) repro-get -v"; + inherit version; + }; + }; + + meta = with lib; { + description = "Reproducible apt/dnf/apk/pacman, with content-addressing"; + homepage = "https://github.com/reproducible-containers/repro-get"; + license = licenses.asl20; + maintainers = with maintainers; [ matthewcroughan ]; + mainProgram = "repro-get"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/rpm/default.nix b/nixpkgs/pkgs/tools/package-management/rpm/default.nix new file mode 100644 index 000000000000..541787942a0e --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/rpm/default.nix @@ -0,0 +1,100 @@ +{ stdenv +, lib +, pkg-config +, autoreconfHook +, pandoc +, fetchurl +, cpio +, zlib +, bzip2 +, file +, elfutils +, libbfd +, libgcrypt +, libarchive +, nspr +, nss +, popt +, db +, xz +, python +, lua +, llvmPackages +, sqlite +, zstd +, libcap +}: + +stdenv.mkDerivation rec { + pname = "rpm"; + version = "4.18.1"; + + src = fetchurl { + url = "https://ftp.osuosl.org/pub/rpm/releases/rpm-${lib.versions.majorMinor version}.x/rpm-${version}.tar.bz2"; + hash = "sha256-N/O0LAlmlB4q0/EP3jY5gkplkdBxl7qP0IacoHeeH1Y="; + }; + + outputs = [ "out" "dev" "man" ]; + separateDebugInfo = true; + + nativeBuildInputs = [ autoreconfHook pkg-config pandoc ]; + buildInputs = [ cpio zlib zstd bzip2 file libarchive libgcrypt nspr nss db xz python lua sqlite ] + ++ lib.optional stdenv.cc.isClang llvmPackages.openmp + ++ lib.optional stdenv.isLinux libcap; + + # rpm/rpmlib.h includes popt.h, and then the pkg-config file mentions these as linkage requirements + propagatedBuildInputs = [ popt nss db bzip2 libarchive libbfd ] + ++ lib.optional stdenv.isLinux elfutils; + + env.NIX_CFLAGS_COMPILE = "-I${nspr.dev}/include/nspr -I${nss.dev}/include/nss"; + + configureFlags = [ + "--with-external-db" + "--with-lua" + "--enable-python" + "--enable-ndb" + "--enable-sqlite" + "--enable-zstd" + "--localstatedir=/var" + "--sharedstatedir=/com" + ] ++ lib.optional stdenv.isLinux "--with-cap"; + + postPatch = '' + substituteInPlace Makefile.am --replace '@$(MKDIR_P) $(DESTDIR)$(localstatedir)/tmp' "" + ''; + + preFixup = '' + # Don't keep a reference to RPM headers or manpages + for f in $out/lib/rpm/platform/*/macros; do + substituteInPlace $f --replace "$dev" "/rpm-dev-path-was-here" + substituteInPlace $f --replace "$man" "/rpm-man-path-was-here" + done + + # Avoid macros like '%__ld' pointing to absolute paths + for tool in ld nm objcopy objdump strip; do + sed -i $out/lib/rpm/macros -e "s/^%__$tool.*/%__$tool $tool/" + done + + # Avoid helper scripts pointing to absolute paths + for tool in find-provides find-requires; do + sed -i $out/lib/rpm/$tool -e "s#/usr/lib/rpm/#$out/lib/rpm/#" + done + + # symlinks produced by build are incorrect + ln -sf $out/bin/{rpm,rpmquery} + ln -sf $out/bin/{rpm,rpmverify} + ''; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "https://www.rpm.org/"; + license = with licenses; [ gpl2Plus lgpl21Plus ]; + description = "The RPM Package Manager"; + maintainers = with maintainers; [ copumpkin ]; + platforms = platforms.linux; + # Support for darwin was removed in https://github.com/NixOS/nixpkgs/pull/196350. + # This can be re-enables for apple_sdk.version >= 13.0. + badPlatforms = platforms.darwin; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/smlpkg/default.nix b/nixpkgs/pkgs/tools/package-management/smlpkg/default.nix new file mode 100644 index 000000000000..be7592c1c6d8 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/smlpkg/default.nix @@ -0,0 +1,44 @@ +{ lib, stdenv, fetchFromGitHub, mlton, unzip }: + +stdenv.mkDerivation rec { + pname = "smlpkg"; + version = "0.1.5"; + + src = fetchFromGitHub { + owner = "diku-dk"; + repo = "smlpkg"; + rev = "v${version}"; + sha256 = "1xmbdnfc34ia0a78dhkfv5jyadxndinhw8c47l1mjd4l7n8vqnph"; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ mlton ]; + + # Set as an environment variable in all the phase scripts. + MLCOMP = "mlton"; + + buildFlags = ["all"]; + installFlags = ["prefix=$(out)"]; + + doCheck = true; + + nativeCheckInputs = [ unzip ]; + + # We cannot run the pkgtests, as Nix does not allow network + # connections. + checkPhase = '' + runHook preCheck + make -C src test + runHook postCheck + ''; + + meta = with lib; { + description = "Generic package manager for Standard ML libraries and programs"; + homepage = "https://github.com/diku-dk/smlpkg"; + license = licenses.mit; + platforms = mlton.meta.platforms; + maintainers = with maintainers; [ athas ]; + mainProgram = "smlpkg"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/wapm/cli/default.nix b/nixpkgs/pkgs/tools/package-management/wapm/cli/default.nix new file mode 100644 index 000000000000..f1feebdbb0c4 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/wapm/cli/default.nix @@ -0,0 +1,38 @@ +{ lib +, fetchFromGitHub +, perl +, libiconv +, openssl +, rustPlatform +, Security +, stdenv +, SystemConfiguration +}: + +rustPlatform.buildRustPackage rec { + pname = "wapm-cli"; + version = "0.5.9"; + + src = fetchFromGitHub { + owner = "wasmerio"; + repo = "wapm-cli"; + rev = "v${version}"; + sha256 = "sha256-T7YEe8xg5iwI/npisW0m+6FLi+eaAQVgYNe6TvMlhAs="; + }; + + cargoSha256 = "sha256-r4123NJ+nxNOVIg6svWr636xbxOJQ7tp76JoAi2m9p8="; + + nativeBuildInputs = [ perl ]; + + buildInputs = [ libiconv openssl ] + ++ lib.optionals stdenv.isDarwin [ Security SystemConfiguration ]; + + doCheck = false; + + meta = with lib; { + description = "A package manager for WebAssembly modules"; + homepage = "https://docs.wasmer.io/ecosystem/wapm"; + license = with licenses; [ mit ]; + maintainers = [ maintainers.lucperkins ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/xbps/cert-paths.patch b/nixpkgs/pkgs/tools/package-management/xbps/cert-paths.patch new file mode 100644 index 000000000000..569161d9f2e4 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/xbps/cert-paths.patch @@ -0,0 +1,25 @@ +From d13a550dbc8876c35b912fe3e0eadd45b278be27 Mon Sep 17 00:00:00 2001 +From: Will Dietz <w@wdtz.org> +Date: Fri, 18 May 2018 09:51:48 -0500 +Subject: [PATCH] add certificate path fallbacks + +--- + lib/fetch/common.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/lib/fetch/common.c b/lib/fetch/common.c +index 94fb2651..79b50115 100644 +--- a/lib/fetch/common.c ++++ b/lib/fetch/common.c +@@ -1012,6 +1012,8 @@ fetch_ssl_setup_peer_verification(SSL_CTX *ctx, int verbose) + + if (getenv("SSL_NO_VERIFY_PEER") == NULL) { + ca_cert_file = getenv("SSL_CA_CERT_FILE"); ++ ca_cert_file = ca_cert_file ? ca_cert_file : getenv("NIX_SSL_CERT_FILE"); ++ ca_cert_file = ca_cert_file ? ca_cert_file : "/etc/ssl/certs/ca-certificates.crt"; + ca_cert_path = getenv("SSL_CA_CERT_PATH") != NULL ? + getenv("SSL_CA_CERT_PATH") : X509_get_default_cert_dir(); + if (verbose) { +-- +2.17.0 + diff --git a/nixpkgs/pkgs/tools/package-management/xbps/default.nix b/nixpkgs/pkgs/tools/package-management/xbps/default.nix new file mode 100644 index 000000000000..07aa1a7accc1 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/xbps/default.nix @@ -0,0 +1,49 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, which, zlib, openssl, libarchive }: + +stdenv.mkDerivation rec { + pname = "xbps"; + version = "0.59.2"; + + src = fetchFromGitHub { + owner = "void-linux"; + repo = "xbps"; + rev = version; + hash = "sha256-3+LzFLDZ1zfRPBETMlpEn66zsfHRHQLlgeZPdMtmA14="; + }; + + nativeBuildInputs = [ pkg-config which ]; + + buildInputs = [ zlib openssl libarchive ]; + + patches = [ + ./cert-paths.patch + ]; + + env.NIX_CFLAGS_COMPILE = "-Wno-error=unused-result -Wno-error=deprecated-declarations"; + + postPatch = '' + # _BSD_SOURCE causes cpp warning + # https://github.com/void-linux/xbps/issues/576 + substituteInPlace bin/xbps-fbulk/main.c lib/util.c lib/external/dewey.c lib/external/fexec.c \ + --replace 'define _BSD_SOURCE' 'define _DEFAULT_SOURCE' \ + --replace '# define _BSD_SOURCE' '#define _DEFAULT_SOURCE' + + # fix unprefixed ranlib (needed on cross) + substituteInPlace lib/Makefile \ + --replace 'SILENT}ranlib ' 'SILENT}$(RANLIB) ' + + # Don't try to install keys to /var/db/xbps, put in $out/share for now + substituteInPlace data/Makefile \ + --replace '$(DESTDIR)/$(DBDIR)' '$(DESTDIR)/$(SHAREDIR)' + ''; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "https://github.com/void-linux/xbps"; + description = "The X Binary Package System"; + platforms = platforms.linux; # known to not work on Darwin, at least + license = licenses.bsd2; + maintainers = with maintainers; [ dtzWill ]; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/default.nix b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/default.nix new file mode 100644 index 000000000000..70f5b143ebe8 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/default.nix @@ -0,0 +1,50 @@ +{ lib +, buildNpmPackage +, fetchurl +, nodejs +, testers +, yarn-lock-converter +}: + +let + source = lib.importJSON ./source.json; +in +buildNpmPackage rec { + pname = "yarn-lock-converter"; + inherit (source) version; + + src = fetchurl { + url = "https://registry.npmjs.org/@vht/yarn-lock-converter/-/yarn-lock-converter-${version}.tgz"; + hash = "sha256-CP1wI33fgtp4GSjasktbfWuUjGzCuK3XR+p64aPAryQ="; + }; + + npmDepsHash = source.deps; + + dontBuild = true; + + nativeBuildInputs = [ nodejs ]; + + postPatch = '' + # Use generated package-lock.json as upstream does not provide one + ln -s ${./package-lock.json} package-lock.json + ''; + + postInstall = '' + mv $out/bin/@vht/yarn-lock-converter $out/bin/yarn-lock-converter + rmdir $out/bin/@vht + ''; + passthru = { + tests.version = testers.testVersion { + package = yarn-lock-converter; + }; + updateScript = ./update.sh; + }; + + meta = with lib; { + description = "Converts modern Yarn v2+ yarn.lock files into a Yarn v1 format"; + homepage = "https://github.com/VHT/yarn-lock-converter"; + license = licenses.mit; + maintainers = with maintainers; [ gador ]; + mainProgram = "yarn-lock-converter"; + }; +} diff --git a/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/package-lock.json b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/package-lock.json new file mode 100644 index 000000000000..aa50ffec8d5b --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/package-lock.json @@ -0,0 +1,592 @@ +{ + "name": "@vht/yarn-lock-converter", + "version": "0.0.2", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@vht/yarn-lock-converter", + "version": "0.0.2", + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "cacache": "^15.3.0", + "js-yaml": "^4.1.0", + "yargs": "^17.3.1" + }, + "bin": { + "yarn-lock-converter": "index.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "6.1.14", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.14.tgz", + "integrity": "sha512-piERznXu0U7/pW7cdSn7hjqySIVTYT6F76icmFk7ptU7dDYlXTm5r9A6K04R2vU3olYgoKeo1Cg3eeu5nhftAw==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/source.json b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/source.json new file mode 100644 index 000000000000..a897b7c9fb67 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/source.json @@ -0,0 +1,6 @@ +{ + "version": "0.0.2", + "integrity": "sha512-58Oy9qP081Jr+h9EOYB0ItCQ7IfU0RBbkHN4AQR3h6aPDjIOPYTiEyczmTfsLQcAyCFl0MV1kU8QL1xBALKkYw==", + "filename": "vht-yarn-lock-converter-0.0.2.tgz", + "deps": "sha256-GCTjZ3x+ZgE762yUWQZzEOOwfAr7W0z/cySlehRILf4=" +} diff --git a/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/update.sh b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/update.sh new file mode 100755 index 000000000000..72d46b470f28 --- /dev/null +++ b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/update.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p nodejs libarchive prefetch-npm-deps moreutils +# shellcheck shell=bash + +set -exuo pipefail + +cd -- "$(dirname -- "${BASH_SOURCE[0]}")" + +TMPDIR="$(mktemp -d)" +trap 'rm -r -- "$TMPDIR"' EXIT + +pushd -- "$TMPDIR" +npm pack "@vht/yarn-lock-converter" --json | jq '.[0] | { version, integrity, filename }' > source.json +bsdtar -x -f "$(jq -r .filename source.json)" + +pushd package +npm install --package-lock-only +popd + +DEPS="$(prefetch-npm-deps package/package-lock.json)" +jq ".deps = \"$DEPS\"" source.json | sponge source.json + +popd + +cp -t . -- "$TMPDIR/source.json" "$TMPDIR/package/package-lock.json" |