Unverified Commit 7c951956 authored by Sizhe Zhao's avatar Sizhe Zhao Committed by GitHub
Browse files

devpi-web: init at 5.0.1 (#495637)

parents fd20e865 015e2eca
Loading
Loading
Loading
Loading
+29 −8
Original line number Diff line number Diff line
{
  pkgs,
  lib,
  config,
  lib,
  pkgs,
  ...
}:

let
  cfg = config.services.devpi-server;

  cfg = config.services.devpi-server;
  package = cfg.package.override { inherit (cfg) extraPackages; };
  secretsFileName = "devpi-secret-file";

  stateDirName = "devpi";

  runtimeDir = "/run/${stateDirName}";
  serverDir = "/var/lib/${stateDirName}";

in

{

  options.services.devpi-server = {

    enable = lib.mkEnableOption "Devpi Server";

    package = lib.mkPackageOption pkgs "devpi-server" { };
@@ -57,6 +61,20 @@ in
      description = "The port on which Devpi Server will listen.";
    };

    extraPackages = lib.mkOption {
      default = (ps: [ ]);
      defaultText = lib.literalExpression "ps: [ ]";
      example = lib.literalExpression ''
        ps: with ps; [ devpi-web devpi-ldap ]
      '';
      type =
        with lib.types;
        coercedTo (listOf lib.types.package) (v: (_: v)) (functionTo (listOf lib.types.package));
      description = ''
        Plugins and extra Python packages to be available to devpi-server.
      '';
    };

    openFirewall = lib.mkEnableOption "opening the default ports in the firewall for Devpi Server";
  };

@@ -80,7 +98,7 @@ in
          # already initialized the package index, exit gracefully
          exit 0
        fi
        ${cfg.package}/bin/devpi-init --serverdir ${serverDir} ''
        ${package}/bin/devpi-init --serverdir ${serverDir} ''
      + lib.optionalString cfg.replica "--role=replica --master-url=${cfg.primaryUrl}";

      serviceConfig = {
@@ -109,7 +127,7 @@ in
                [ "--role=master" ]
            );
          in
          "${cfg.package}/bin/devpi-server ${lib.concatStringsSep " " args}";
          "${package}/bin/devpi-server ${lib.concatStringsSep " " args}";
        DynamicUser = true;
        StateDirectory = stateDirName;
        RuntimeDirectory = stateDirName;
@@ -125,5 +143,8 @@ in
    };
  };

  meta.maintainers = [ lib.maintainers.cafkafk ];
  meta.maintainers = with lib.maintainers; [
    cafkafk
    confus
  ];
}
+26 −3
Original line number Diff line number Diff line
{ python3Packages }:
{
  lib,
  python3,
  runCommand,
  # configurable options
  extraPackages ? (ps: [ ]),
}:

with python3Packages;
toPythonApplication devpi-server
let
  pythonEnv = python3.withPackages (ps: [ ps.devpi-server ] ++ extraPackages ps);
  server = python3.pkgs.devpi-server;
in
runCommand "devpi-${server.version}"
  {
    inherit (server)
      pname
      version
      meta
      passthru
      ;
  }
  ''
    mkdir -p $out/bin
    for bin in ${lib.getBin server}/bin/*; do
      ln -s ${pythonEnv}/bin/$(basename "$bin") $out/bin/
    done
  ''
+94 −0
Original line number Diff line number Diff line
{
  lib,
  buildPythonPackage,
  fetchFromGitHub,
  gitUpdater,

  # dependencies
  attrs,
  beautifulsoup4,
  defusedxml,
  devpi-common,
  devpi-server,
  docutils,
  pygments,
  pyramid,
  pyramid-chameleon,
  readme-renderer,
  setuptools,
  tomli,
  whoosh,

  # tests
  pytestCheckHook,
  pytest-cov-stub,
  packaging-legacy,
  webtest,
}:

buildPythonPackage (finalAttrs: {
  pname = "devpi-web";
  version = "5.0.1";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "devpi";
    repo = "devpi";
    tag = "web-${finalAttrs.version}";
    hash = "sha256-p52uwkXeCPPsnD9BLfqEa8NK4bAfIdpYIzdNgmwucms=";
  };

  sourceRoot = "${finalAttrs.src.name}/web";

  postPatch = ''
    substituteInPlace pyproject.toml \
      --replace-fail ', "setuptools_changelog_shortener"' ""
  '';

  build-system = [ setuptools ];

  dependencies = [
    attrs
    beautifulsoup4
    defusedxml
    devpi-common
    devpi-server
    docutils
    pygments
    pyramid
    pyramid-chameleon
    readme-renderer
    tomli
    whoosh
  ]
  ++ readme-renderer.optional-dependencies.md;

  nativeCheckInputs = [
    pytestCheckHook
    pytest-cov-stub
    packaging-legacy
    webtest
  ];

  pythonImportsCheck = [ "devpi_web" ];

  # devpi uses a monorepo for server, common, client and web
  passthru = {
    # bulk updater selects wrong tag
    skipBulkUpdate = true;
    updateScript = gitUpdater {
      # devpi uses a monorepo for server, common, client and web
      rev-prefix = "web-";
    };
  };

  meta = {
    homepage = "https://github.com/devpi/devpi";
    description = "Web view for devpi-server";
    changelog = "https://github.com/devpi/devpi/blob/${finalAttrs.src.tag}/common/CHANGELOG";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [
      confus
    ];
  };
})
+3 −1
Original line number Diff line number Diff line
@@ -3878,7 +3878,9 @@ self: super: with self; {
  devpi-ldap = callPackage ../development/python-modules/devpi-ldap { };
  devpi-server = callPackage ../development/python-modules/devpi-server { };
  devpi-server = callPackage ../by-name/de/devpi-server/unwrapped.nix { };
  devpi-web = callPackage ../development/python-modules/devpi-web { };
  devtools = callPackage ../development/python-modules/devtools { };