Skip to content

Commit

Permalink
Merge b6fd52e into e74b8ad
Browse files Browse the repository at this point in the history
  • Loading branch information
MilesCranmer committed Jul 2, 2023
2 parents e74b8ad + b6fd52e commit baca580
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 1 deletion.
9 changes: 9 additions & 0 deletions .github/workflows/CI.yml
Expand Up @@ -78,6 +78,15 @@ jobs:
COVERALLS_PARALLEL: true
run: coveralls --service=github

incremental_install:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: "Build incremental install"
run: docker build -t pysr -f pysr/test/incremental_install_simulator.dockerfile .
- name: "Test incremental install"
run: docker run --rm pysr /bin/bash -c 'python3 -m pysr.test main && python3 -m pysr.test env'

conda_test:
runs-on: ${{ matrix.os }}
defaults:
Expand Down
15 changes: 14 additions & 1 deletion pysr/julia_helpers.py
Expand Up @@ -81,7 +81,20 @@ def install(julia_project=None, quiet=False, precompile=None): # pragma: no cov
if precompile == False:
os.environ["JULIA_PKG_PRECOMPILE_AUTO"] = "0"

julia.install(quiet=quiet)
try:
julia.install(quiet=quiet)
except julia.tools.PyCallInstallError:
# Attempt to reset PyCall.jl's build:
subprocess.run(
[
"julia",
"-e",
f'ENV["PYTHON"] = "{sys.executable}"; import Pkg; Pkg.build("PyCall")',
],
)
# Try installing again:
julia.install(quiet=quiet)

Main, init_log = init_julia(julia_project, quiet=quiet, return_aux=True)
io_arg = _get_io_arg(quiet)

Expand Down
48 changes: 48 additions & 0 deletions pysr/test/incremental_install_simulator.dockerfile
@@ -0,0 +1,48 @@
FROM debian:bullseye-slim

ENV DEBIAN_FRONTEND=noninteractive

# Install juliaup and pyenv:
RUN apt-get update && apt-get install -y curl git build-essential \
libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
libncurses5-dev libncursesw5-dev xz-utils libffi-dev liblzma-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

# Install juliaup:
RUN curl -fsSL https://install.julialang.org | sh -s -- -y

# Install pyenv:
RUN curl -fsSL curl https://pyenv.run | sh && \
echo 'export PATH="/root/.pyenv/bin:$PATH"' >> ~/.bashrc && \
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc && \
echo 'eval "$(pyenv init -)"' >> ~/.bashrc && \
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

# Default to using bash -l:
SHELL ["/bin/bash", "-l", "-c"]

RUN juliaup add 1.8 && juliaup default 1.8
RUN pyenv install 3.9.2 && pyenv global 3.9.2
RUN python3 -m pip install --upgrade pip

# Get PySR source:
WORKDIR /pysr
ADD ./requirements.txt /pysr/requirements.txt
RUN python3 -m pip install -r /pysr/requirements.txt

ADD ./setup.py /pysr/setup.py
ADD ./pysr/ /pysr/pysr/

# First install of PySR:
RUN python3 -m pip install .
RUN python3 -m pysr install

# Change Python version:
RUN pyenv install 3.10 && pyenv global 3.10 && pyenv uninstall -f 3.9.2
RUN python3 -m pip install --upgrade pip

# Second install of PySR:
RUN python3 -m pip install .
RUN rm -r ~/.julia/environments/pysr-0.14.2
RUN python3 -m pysr install

0 comments on commit baca580

Please sign in to comment.