diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 3029e70790..f593eae2da 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -1,5 +1,5 @@ --- -name: nix +name: Test Nix on: [push, pull_request] jobs: test: @@ -11,12 +11,22 @@ jobs: run: working-directory: ./ steps: - - uses: actions/checkout@v2.3.4 - - uses: cachix/install-nix-action@v14.1 + - uses: actions/checkout@v3 + - uses: cachix/install-nix-action@v20 with: nix_path: nixpkgs=channel:nixos-unstable name: fipy authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' extraPullNames: nix-community - - run: nix-shell --pure --command "python setup.py test" - - run: nix-shell --pure --command "py.test --nbval --sanitize-with examples/sanitize.cfg examples/index.ipynb" + - run: echo "UID=${UID}" >> $GITHUB_ENV + - uses: actions/cache/restore@v3 + with: + path: /run/user/${{ env.UID }}/http_cache.sqlite + key: ${{ runner.os }}-http_cache.sqlite + - run: nix develop --command bash -c "python setup.py test" + - run: nix develop --command bash -c "py.test --nbval --nbval-sanitize-with examples/sanitize.cfg examples/index.ipynb" + - uses: actions/cache/save@v3 + if: always() + with: + path: /run/user/${{ env.UID }}/http_cache.sqlite + key: ${{ runner.os }}-http_cache.sqlite diff --git a/docs/source/NIX-README.rst b/docs/source/NIX-README.rst index 6b32bb1511..9a73294e0c 100644 --- a/docs/source/NIX-README.rst +++ b/docs/source/NIX-README.rst @@ -4,64 +4,27 @@ Nix Installation :term:`FiPy` now has a `Nix`_ expression for installing :term:`FiPy` using `Nix`_. `Nix`_ is a powerful package manager for Linux and other Unix systems that makes package management reliable and -reproducible. The recipe works on both Linux and Mac OS X. - -Getting Started with Nix ------------------------- - -There are a number of tutorials on getting started with `Nix`_. The -page that I used when getting started is on the Blog of the HPC team -of GRICAD, - -https://gricad.github.io/calcul/nix/tuto/2017/07/04/nix-tutorial.html - -I also made my own notes, - -https://github.com/wd15/nixes/blob/master/NIX-NOTES.md - -which are a succinct steps that I use when setting up a new system with -Nix. +reproducible. The recipe works on both Linux and Mac OS X. Go to +`nix.dev`_ to get started with Nix. Installing ---------- Once you have a working Nix installation use:: - $ nix-shell --pure + $ nix develop in the base :term:`FiPy` directory to install :term:`FiPy` with Python -3 by default. Modify the `shell.nix` file to use another version of -Python. ``nix-shell`` drops the user into a shell with a working +3 by default. ``nix develop`` drops the user into a shell with a working version of :term:`FiPy`. To test your installation use:: - $ nix-shell --pure --command "python setup.py test" + $ nix develop --command bash -c "python setup.py test" .. note:: - :term:`Trilinos` is currently not available as part of the Nix - :term:`FiPy` installation. - - -Additional Packages -------------------- - -To install additional packages available from Nixpkgs_ include them in -the `nativeBuildInputs` list in `shell.nix`. - - -Using Pip ---------- - -Packages unavailable from Nix can be installed using :term:`Pip`. In -this case, the installation has been set up so that the Nix shell -knows about a ``.local`` directory in the base :term:`FiPy` directory -used by :term:`Pip` for installation. So, for example, to install the -``toolz`` package from within the Nix shell use:: - - $ python -m pip install --user toolz + The SciPy solvers are the only available solvers currently. -The ``.local`` directory will persist after the Nix shell has been -closed. .. _Nix: https://nixos.org/nix/ .. _Nixpkgs: https://nixos.org/nixpkgs/ +.. _nix.dev: https://nix.dev diff --git a/examples/index.ipynb b/examples/index.ipynb index 9fcddb3cec..e5f7f7dacf 100644 --- a/examples/index.ipynb +++ b/examples/index.ipynb @@ -9,19 +9,28 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "
" + "" ] }, - "metadata": { - "needs_background": "light" + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] }, + "metadata": {}, "output_type": "display_data" } ], @@ -35,7 +44,7 @@ "var.constrain(2, mesh.facesRight)\n", "var.constrain(3, mesh.facesUp)\n", "DiffusionTerm().solve(var)\n", - "Viewer(var);\n" + "Viewer(var)" ] }, { @@ -62,9 +71,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.10.13" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/examples/sanitize.cfg b/examples/sanitize.cfg index aa45bcae99..a36d1fc6d3 100644 --- a/examples/sanitize.cfg +++ b/examples/sanitize.cfg @@ -1,3 +1,7 @@ -[regex] +[regex1] regex:
replace:
+ +[regex2] +regex: +replace: diff --git a/fipy/__init__.py b/fipy/__init__.py index 3ec0ed179e..dc2635e1b5 100644 --- a/fipy/__init__.py +++ b/fipy/__init__.py @@ -76,12 +76,17 @@ def _excepthook(*args): if _log.isEnabledFor(logging.DEBUG): try: - _fipy_environment["conda"] = environment.conda_info() + _fipy_environment.update(environment.conda_info()) except: pass try: - _fipy_environment["pip"] = environment.pip_info() + _fipy_environment.update(environment.pip_info()) + except: + pass + + try: + _fipy_environment.update(environment.nix_info()) except: pass diff --git a/fipy/tools/logging/environment.py b/fipy/tools/logging/environment.py index 7a872a4601..b89ecd0f4d 100644 --- a/fipy/tools/logging/environment.py +++ b/fipy/tools/logging/environment.py @@ -3,7 +3,7 @@ import subprocess import sys -__all__ = ["conda_info", "pip_info", "package_info", "platform_info"] +__all__ = ["conda_info", "pip_info", "package_info", "platform_info", "nix_info"] def conda_info(conda="conda"): """Collect information about conda environment. @@ -25,6 +25,7 @@ def conda_info(conda="conda"): stdout = stdout.decode('ascii') info["conda_info"] = json.loads(stdout) + p = subprocess.Popen([conda, "env", "export", "--name", info["conda_info"]["active_prefix_name"], "--json"], @@ -53,7 +54,41 @@ def pip_info(python="python"): stdout, _ = p.communicate() stdout = stdout.decode('ascii') - return json.loads(stdout) + info["pip"] = json.loads(stdout) + + return info + +def nix_info(): + """Collect information about nix environment. + + Returns + ------- + dict + Result of `nix derivation show .#fipy `. + """ + info = {} + + # Better output would be from + # + # $ nix-store -q --tree $(nix-store --realize $(nix eval --raw .#fipy.drvPath)) + # + # However, this is difficult to execute and can require another build. + # Also doesn't return json. + + p = subprocess.Popen( + [ + "nix", + "derivation", + "show", + ".#fipy" + ], stdout=subprocess.PIPE) + + stdout, _ = p.communicate() + stdout = stdout.decode('ascii') + + info["nix"] = json.loads(stdout) + + return info def package_info(): """Collect information about installed packages FiPy uses. diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000000..4be15d1e0b --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1704732714, + "narHash": "sha256-ABqK/HggMYA/jMUXgYyqVAcQ8QjeMyr1jcXfTpSHmps=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6723fa4e4f1a30d42a633bef5eb01caeb281adc3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "utils": "utils" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000000..9cc7041126 --- /dev/null +++ b/flake.nix @@ -0,0 +1,49 @@ +{ + description = "Python environment for fipy"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; + utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, utils}: (utils.lib.eachSystem ["x86_64-linux" "x86_64-darwin" ] (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + pypkgs = pkgs.python310Packages; + + env = (pypkgs.fipy.overridePythonAttrs (old: rec { + + src = pkgs.lib.cleanSource ./.; + + nativeBuildInputs = with pypkgs; [ + pip + pkgs.openssh + nbval + ipython + ipykernel + jupyterlab + traitlets + notebook + ] ++ propagatedBuildInputs; + + propagatedBuildInputs = old.propagatedBuildInputs; + + postShellHook = '' + SOURCE_DATE_EPOCH=$(date +%s) + export PYTHONUSERBASE=$PWD/.local + export USER_SITE=`python -c "import site; print(site.USER_SITE)"` + export PYTHONPATH=$PYTHONPATH:$USER_SITE:$(pwd) + export PATH=$PATH:$PYTHONUSERBASE/bin + + export OMPI_MCA_plm_rsh_agent=${pkgs.openssh}/bin/ssh + + ''; + })); + in + rec { + packages.fipy = env; + packages.default = self.packages.${system}.fipy; + devShells.default = env; + } + )); +} diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 0e9be188ec..0000000000 --- a/shell.nix +++ /dev/null @@ -1,61 +0,0 @@ -# -# $ nix-shell --pure --argstr tag 20.09 -# -{ - tag ? "22.11" -}: -let - pkgs = import (builtins.fetchTarball "https://github.com/NixOS/nixpkgs/archive/${tag}.tar.gz") {}; - pypkgs = pkgs.python3Packages; - - jupyter_extra = with pypkgs; [ - ipython - ipykernel - traitlets - notebook - widgetsnbextension - ipywidgets - (if pkgs.stdenv.isDarwin then pypkgs.jupyter else pypkgs.jupyterlab) - ]; - -in - (pypkgs.fipy.overridePythonAttrs (old: rec { - - src = pkgs.lib.cleanSource ./.; - - nativeBuildInputs = with pypkgs; [ - pip - pkgs.imagemagick - pkgs.git - pkgs.openssh - nbval - ] ++ propagatedBuildInputs ++ jupyter_extra; - - propagatedBuildInputs = old.propagatedBuildInputs; - - postShellHook = '' - SOURCE_DATE_EPOCH=$(date +%s) - export PYTHONUSERBASE=$PWD/.local - export USER_SITE=`python -c "import site; print(site.USER_SITE)"` - export PYTHONPATH=$PYTHONPATH:$USER_SITE:$(pwd) - export PATH=$PATH:$PYTHONUSERBASE/bin - - export OMPI_MCA_plm_rsh_agent=${pkgs.openssh}/bin/ssh - - ## To build the docs (don't use --pure) - # Need latex to build properly - # - # texlive-latex-base, texlive-fonts-recommended, texlive-fonts-extra - # texlive-latex-extra, texlive-science, texlive-extra-utils - # - # pip install --user sphinx - # pip install --user "sphinxcontrib-bibtex<=0.4.2" - # pip install --user git+https://github.com/thewtex/sphinx-contrib.git#subdirectory=traclinks - # required for embedded plots in documentation - # pip install --user pandas - # python setup.py build_docs --html - - ## To build PyAMG add nixpkgs.gcc to nativeBuildInputs and then - # pip install --user pyamg - ''; - }))