# HG changeset patch # User RhodeCode Admin # Date 2023-05-16 09:11:14 # Node ID 7031359d259bc6d376b3e5183fc8601b20a62c81 # Parent 089fb522ac62e0b035c4b8b347986dc1ba796997 nix: drop default.nix diff --git a/default.nix b/default.nix deleted file mode 100644 --- a/default.nix +++ /dev/null @@ -1,211 +0,0 @@ -# Nix environment for the community edition -# -# This shall be as lean as possible, just producing the rhodecode-vcsserver -# derivation. For advanced tweaks to pimp up the development environment we use -# "shell.nix" so that it does not have to clutter this file. - -args@ -{ system ? builtins.currentSystem -, pythonPackages ? "python38Packages" -, pythonExternalOverrides ? self: super: {} -, doCheck ? false -, ... -}: - -let - pkgs_ = args.pkgs or (import { inherit system; }); -in - -let - pkgs = import { - overlays = [ - (import ./pkgs/overlays.nix) - ]; - inherit - (pkgs_) - system; - }; - - # Evaluates to the last segment of a file system path. - basename = path: with pkgs.lib; last (splitString "/" path); - startsWith = prefix: full: let - actualPrefix = builtins.substring 0 (builtins.stringLength prefix) full; - in actualPrefix == prefix; - - # source code filter used as arugment to builtins.filterSource. - src-filter = path: type: with pkgs.lib; - let - ext = last (splitString "." path); - parts = last (splitString "/" path); - in - !builtins.elem (basename path) [ - ".git" ".hg" "__pycache__" ".eggs" ".idea" ".dev" - "node_modules" "node_binaries" - "build" "data" "result" "tmp"] && - !builtins.elem ext ["egg-info" "pyc"] && - !startsWith "result" (basename path); - - sources = - let - inherit - (pkgs.lib) - all - isString - attrValues; - - sourcesConfig = pkgs.config.rc.sources or {}; - in - # Ensure that sources are configured as strings. Using a path - # would result in a copy into the nix store. - assert all isString (attrValues sourcesConfig); - sourcesConfig; - - rhodecode-vcsserver-src = builtins.filterSource src-filter ./.; - version = builtins.readFile "${rhodecode-vcsserver-src}/vcsserver/VERSION"; - - pythonLocalOverrides = self: super: { - rhodecode-vcsserver = - let - releaseName = "RhodeCodeVCSServer-${version}"; - in super.rhodecode-vcsserver.overridePythonAttrs (attrs: { - inherit - doCheck - version; - - name = "rhodecode-vcsserver-${version}"; - releaseName = releaseName; - src = rhodecode-vcsserver-src; - dontStrip = true; # prevent strip, we don't need it. - - buildInputs = - attrs.buildInputs or [] ++ [ - - ]; - - #NOTE: option to inject additional propagatedBuildInputs - propagatedBuildInputs = - attrs.propagatedBuildInputs or [] ++ [ - pkgs.git - pkgs.subversionrc - ]; - - preBuild = '' - export NIX_PATH=nixpkgs=${pkgs.path} - export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt - ''; - - # Add bin directory to path so that tests can find 'vcsserver'. - preCheck = '' - echo "Expanding PATH with $out/bin directory" - export PATH="$out/bin:$PATH" - ''; - - # custom check phase for testing - checkPhase = '' - runHook preCheck - PYTHONHASHSEED=$RANDOM py.test -vv -p no:sugar -r xw --cov-config=.coveragerc --cov=vcsserver --cov-report=term-missing vcsserver - runHook postCheck - ''; - - postCheck = '' - echo "Cleanup of vcsserver/tests" - rm -rf $out/lib/${self.python.libPrefix}/site-packages/vcsserver/tests - ''; - - postInstall = '' - echo "Writing vcsserver meta information for rccontrol to nix-support/rccontrol" - mkdir -p $out/nix-support/rccontrol - cp -v vcsserver/VERSION $out/nix-support/rccontrol/version - echo "DONE: vcsserver meta information for rccontrol written" - - mkdir -p $out/etc - cp configs/production.ini $out/etc - echo "DONE: saved vcsserver production.ini into $out/etc" - - echo "saving env in $out/etc/env_vars.txt" - touch $out/etc/env_vars.txt - echo "# RhodeCode build env vars" >> $out/etc/env_vars.txt - echo "LOCALE_ARCHIVE=\"${pkgs.glibcLocales}/lib/locale/locale-archive\"" >> $out/etc/env_vars.txt - echo "LC_ALL=\"en_US.UTF-8\"" >> $out/etc/env_vars.txt - - # expose sources of vcsserver - ln -s $out $out/etc/rhodecode_vcsserver_source - ''; - - }); - }; - - basePythonPackages = with builtins; - if isAttrs pythonPackages then - pythonPackages - else - getAttr pythonPackages pkgs; - - pythonGeneratedPackages = import ./pkgs/python-packages.nix { - inherit pkgs; - inherit (pkgs) fetchurl fetchgit fetchhg; - }; - - pythonVCSServerOverrides = import ./pkgs/python-packages-overrides.nix { - inherit pkgs basePythonPackages; - }; - - # Apply all overrides and fix the vcsserver package set - targetPython = basePythonPackages.python.override { - packageOverrides = self: super: with pkgs.lib; - (extends pythonExternalOverrides - (extends pythonLocalOverrides - (extends pythonVCSServerOverrides - (extends pythonGeneratedPackages - (self: super))))) self; - }; - - # Python env with rhodecode-vcsserver - pythonEnv = (targetPython.withPackages(ps: with ps; [rhodecode-vcsserver])); - - # Generic env with wrapped binaries - vcsserver = pkgs.buildEnv { - name = if ! isNull targetPython.pkgs.rhodecode-vcsserver - then "vcsserver-${targetPython.pkgs.rhodecode-vcsserver.version}" - else "vcsserver"; - paths = [ - pythonEnv - # Symlink version control utilities - # We ensure that always the correct version is available as a symlink. - # So that users calling them via the profile path will always use the - # correct version. Wrapping is required so those can "import" - # vcsserver python hooks. - pkgs.git - pkgs.subversionrc - ]; - # expose following attributed outside - passthru = { - pythonPackages = targetPython.pkgs; - vcs_pkgs = pkgs; - }; - buildInputs = [ - pkgs.makeWrapper - ]; - postBuild = (if ! isNull targetPython.pkgs.rhodecode-vcsserver then '' - echo "Writing vcsserver meta information for rccontrol to nix-support/rccontrol" - ln -s ${targetPython.pkgs.rhodecode-vcsserver}/nix-support $out/nix-support - echo "DONE: vcsserver meta information for rccontrol written" - '' else "") + '' - DEPS="$out/bin/*" - # wrap only dependency scripts, they require to have full PYTHONPATH set - # to be able to import all packages - for file in $DEPS; - do - wrapProgram $file \ - --prefix PATH : ${pkgs.git}/bin \ - --prefix PATH : ${pkgs.subversionrc}/bin \ - --prefix PATH : ${pythonEnv}/bin \ - --prefix PYTHONPATH : ${pythonEnv}/${pythonEnv.sitePackages} \ - --prefix PYTHONPATH : ${pkgs.subversionrc}/${pythonEnv.sitePackages} \ - --set PYTHONHASHSEED $RANDOM - done - echo "DONE: vcsserver binary wrapping" - ''; - }; - -in vcsserver