From 9ccfbb21ec368072fcb4ddec75d026052b00682b Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 27 Feb 2019 11:21:14 -0500 Subject: [PATCH 01/50] First effort with docker --- .travis.yml | 53 ++++++++---------- Dockerfile | 116 ++++++++++++++++++++++++++++++++++++++++ default-mca-params.conf | 4 ++ 3 files changed, 143 insertions(+), 30 deletions(-) create mode 100644 Dockerfile create mode 100644 default-mca-params.conf diff --git a/.travis.yml b/.travis.yml index efdf6cc..6595cea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,47 +32,40 @@ matrix: compiler: gcc sudo: false dist: trusty - - os: osx - compiler: gcc - osx_image: xcode9.4 + +#====================================================================== +# Docker, does not work on Mac +#====================================================================== +services: + - docker #====================================================================== # Building #====================================================================== before_install: - - | - if [[ "$TRAVIS_OS_NAME" == "osx" ]] ; then - brew install gcc@7 || true; - brew link --overwrite gcc@7; - fi - | if [[ "$TRAVIS_OS_NAME" == "linux" ]] ; then pip install --user cpp-coveralls fi -before_script: - - | - if [[ "$TRAVIS_OS_NAME" == "osx" ]] ; then - export CC="clang" FC="gfortran-7" CXX="clang++" ; - fi - - | - if [[ "$TRAVIS_OS_NAME" == "linux" ]] ; then - export CC="gcc-6" FC="gfortran-6" CXX="g++-6" ; - fi -# - export CC="gcc-6" FC="gfortran-6" CXX="g++-6" ; - script: - - make - - | - if [[ "$TRAVIS_OS_NAME" == "linux" ]] ; then - export LD_LIBRARY_PATH=${PWD}/schemes/check/src/check-build - make test - fi - - | - if [[ "$TRAVIS_OS_NAME" == "osx" ]] ; then - export DYLD_LIBRARY_PATH=${PWD}/schemes/check/src/check-build - make test - fi + - date + - docker build -t wrf_regtest . + - date + - docker images -a + - date + - docker run -d -t --name test_001 wrf_regtest + - date + - docker ps -a + - date + - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d + - OK=$? + - echo "Return code from docker is $OK" + - date + - docker stop test_001 + - date + - docker rmi wrf_regtest + - date #====================================================================== # Notifications diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a2a61f2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,116 @@ +# +FROM centos:latest +MAINTAINER John Exby +# +RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/ucar-bsd-3-clause-license.pdf > /UCAR-BSD-3-Clause-License.pdf +# +ENV WRF_VERSION 4.0.3 +ENV WPS_VERSION 4.0.2 +ENV NML_VERSION 4.0.2 +# +# Set up base OS environment +# +RUN yum -y update +RUN yum -y install file gcc gcc-gfortran gcc-c++ glibc.i686 libgcc.i686 libpng-devel jasper \ + jasper-devel hostname m4 make perl tar bash tcsh time wget which zlib zlib-devel \ + openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender ImageMagick sudo epel-release +# +# now get 3rd party EPEL builds of netcdf and openmpi dependencies +RUN yum -y install netcdf-openmpi-devel.x86_64 netcdf-fortran-openmpi-devel.x86_64 \ + netcdf-fortran-openmpi.x86_64 hdf5-openmpi.x86_64 openmpi.x86_64 openmpi-devel.x86_64 \ + && yum clean all +# +RUN mkdir -p /var/run/sshd \ + && ssh-keygen -A \ + && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config \ + && sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/g' /etc/ssh/sshd_config \ + && sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config +# +RUN groupadd wrf -g 9999 +RUN useradd -u 9999 -g wrf -G wheel -M -d /wrf wrfuser +# + +RUN mkdir /wrf \ + && chown -R wrfuser:wrf /wrf \ + && chmod 6755 /wrf + +RUN mkdir -p /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput \ + && chown -R wrfuser:wrf /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local \ + && chmod 6755 /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local + +# Set environment for interactive container shells +# +RUN echo export LDFLAGS="-lm" >> /etc/bashrc \ + && echo export NETCDF=/wrf/netcdf_links >> /etc/bashrc \ + && echo export JASPERINC=/usr/include/jasper/ >> /etc/bashrc \ + && echo export JASPERLIB=/usr/lib64/ >> /etc/bashrc \ + && echo export LD_LIBRARY_PATH="/usr/lib64/openmpi/lib" >> /etc/bashrc \ + && echo export PATH=".:/usr/lib64/openmpi/bin:$PATH" >> /etc/bashrc \ + && echo setenv LDFLAGS "-lm" >> /etc/csh.cshrc \ + && echo setenv NETCDF "/wrf/netcdf_links" >> /etc/csh.cshrc \ + && echo setenv JASPERINC "/usr/include/jasper/" >> /etc/csh.cshrc \ + && echo setenv JASPERLIB "/usr/lib64/" >> /etc/csh.cshrc \ + && echo setenv LD_LIBRARY_PATH "/usr/lib64/openmpi/lib" >> /etc/csh.cshrc \ + && echo setenv PATH ".:/usr/lib64/openmpi/bin:$PATH" >> /etc/csh.cshrc +# +# +RUN mkdir /wrf/.ssh ; echo "StrictHostKeyChecking no" > /wrf/.ssh/config +COPY default-mca-params.conf /wrf/.openmpi/mca-params.conf +RUN mkdir -p /wrf/.openmpi +RUN chown -R wrfuser:wrf /wrf/ +# RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers +# +# +# all root steps completed above, now below as regular userID wrfuser +USER wrfuser +WORKDIR /wrf +# +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_low_res_mandatory.tar.gz | tar -xzC /wrf/WPS_GEOG +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/colorado_march16.new.tar.gz | tar -xzC /wrf/wrfinput +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/src/namelists_v$NML_VERSION.tar.gz | tar -xzC /wrf/wrfinput +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/WRF_NCL_scripts.tar.gz | tar -xzC /wrf +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/data_v04.08.tar.gz | tar -xzC /wrf +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/nml.tar.gz | tar -xzC /wrf +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/script.tar | tar -xC /wrf +# +# Download NCL +# +RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/nclncarg-6.3.0.linuxcentos7.0x8664nodapgcc482.tar.gz | tar zxC /usr/local +ENV NCARG_ROOT /usr/local +# +# +# Download wrf and wps source, Version 4.0 and later +RUN curl -SL https://github.com/wrf-model/WPS/archive/v$WPS_VERSION.tar.gz | tar zxC /wrf \ + && curl -SL https://github.com/wrf-model/WRF/archive/v$WRF_VERSION.tar.gz | tar zxC /wrf +RUN mv /wrf/WPS-$WPS_VERSION /wrf/WPS +RUN mv /wrf/WRF-$WRF_VERSION /wrf/WRF +ENV NETCDF_classic 1 +# +# + RUN mkdir netcdf_links \ + && ln -sf /usr/include/openmpi-x86_64/ netcdf_links/include \ + && ln -sf /usr/lib64/openmpi/lib netcdf_links/lib \ + && export NETCDF=/wrf/netcdf_links \ + && export JASPERINC=/usr/include/jasper/ \ + && export JASPERLIB=/usr/lib64/ + +ENV LD_LIBRARY_PATH /usr/lib64/openmpi/lib +ENV PATH /usr/lib64/openmpi/bin:$PATH +# +# +RUN ssh-keygen -f /wrf/.ssh/id_rsa -t rsa -N '' \ + && chmod 600 /wrf/.ssh/config \ + && chmod 700 /wrf/.ssh \ + && cp /wrf/.ssh/id_rsa.pub /wrf/.ssh/authorized_keys +# +# +VOLUME /wrf +CMD ["/bin/tcsh"] +# diff --git a/default-mca-params.conf b/default-mca-params.conf new file mode 100644 index 0000000..3b6df17 --- /dev/null +++ b/default-mca-params.conf @@ -0,0 +1,4 @@ +btl=tcp,self +plm_rsh_no_tree_spawn=1 +btl_base_warn_component_unused=0 +pml=ob1 From d602f30851b28b2f4190096753b7fc99c680470d Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 27 Feb 2019 14:42:34 -0500 Subject: [PATCH 02/50] Explicitly look inside container for executables --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6595cea..1f33e1d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -59,11 +59,13 @@ script: - docker ps -a - date - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d - - OK=$? - - echo "Return code from docker is $OK" + - date + - docker exec test_001 ls -ls WRF/main - date - docker stop test_001 - date + - docker rm test_001 + - date - docker rmi wrf_regtest - date From 4efc962bab64b37037cbf1161605c4420d5f75e1 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 27 Feb 2019 16:34:45 -0500 Subject: [PATCH 03/50] Find out list of TRAVIS variables --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 1f33e1d..93098f9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -68,6 +68,7 @@ script: - date - docker rmi wrf_regtest - date + - env | grep TRAVIS_ #====================================================================== # Notifications From 4d3d84680055f71e03c137d4e80297f2ef32c340 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 6 Mar 2019 07:09:28 -0700 Subject: [PATCH 04/50] Try to edit Dockerfile to get correct WRF version --- .travis.yml | 8 ++- Dockerfile-template | 129 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 Dockerfile-template diff --git a/.travis.yml b/.travis.yml index 93098f9..611e86b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,6 @@ language: fortran # Environment #====================================================================== -# Code is Fortran. addons: apt: sources: @@ -34,7 +33,7 @@ matrix: dist: trusty #====================================================================== -# Docker, does not work on Mac +# Docker does not work on Mac #====================================================================== services: - docker @@ -48,7 +47,12 @@ before_install: pip install --user cpp-coveralls fi +#====================================================================== +# Here are the run steps +#====================================================================== script: + - date + - sed -e 's/_HERE1_/"DAVE START"/' -e 's/_HERE2_/"DAVE END CLONE"/' Dockerfile-template > Dockerfile - date - docker build -t wrf_regtest . - date diff --git a/Dockerfile-template b/Dockerfile-template new file mode 100644 index 0000000..940bf1b --- /dev/null +++ b/Dockerfile-template @@ -0,0 +1,129 @@ +# +FROM centos:latest +MAINTAINER John Exby +# +RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/ucar-bsd-3-clause-license.pdf > /UCAR-BSD-3-Clause-License.pdf +# +ENV WRF_VERSION 4.0.3 +ENV WPS_VERSION 4.0.2 +ENV NML_VERSION 4.0.2 +# +# Set up base OS environment +# +RUN yum -y update +RUN yum -y install file gcc gcc-gfortran gcc-c++ glibc.i686 libgcc.i686 libpng-devel jasper \ + jasper-devel hostname m4 make perl tar bash tcsh time wget which zlib zlib-devel \ + openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender ImageMagick sudo epel-release +# +# now get 3rd party EPEL builds of netcdf and openmpi dependencies +RUN yum -y install netcdf-openmpi-devel.x86_64 netcdf-fortran-openmpi-devel.x86_64 \ + netcdf-fortran-openmpi.x86_64 hdf5-openmpi.x86_64 openmpi.x86_64 openmpi-devel.x86_64 \ + && yum clean all +# +RUN mkdir -p /var/run/sshd \ + && ssh-keygen -A \ + && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config \ + && sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/g' /etc/ssh/sshd_config \ + && sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config +# +RUN groupadd wrf -g 9999 +RUN useradd -u 9999 -g wrf -G wheel -M -d /wrf wrfuser +# + +RUN mkdir /wrf \ + && chown -R wrfuser:wrf /wrf \ + && chmod 6755 /wrf + +RUN mkdir -p /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput \ + && chown -R wrfuser:wrf /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local \ + && chmod 6755 /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local + +# Set environment for interactive container shells +# +RUN echo export LDFLAGS="-lm" >> /etc/bashrc \ + && echo export NETCDF=/wrf/netcdf_links >> /etc/bashrc \ + && echo export JASPERINC=/usr/include/jasper/ >> /etc/bashrc \ + && echo export JASPERLIB=/usr/lib64/ >> /etc/bashrc \ + && echo export LD_LIBRARY_PATH="/usr/lib64/openmpi/lib" >> /etc/bashrc \ + && echo export PATH=".:/usr/lib64/openmpi/bin:$PATH" >> /etc/bashrc \ + && echo setenv LDFLAGS "-lm" >> /etc/csh.cshrc \ + && echo setenv NETCDF "/wrf/netcdf_links" >> /etc/csh.cshrc \ + && echo setenv JASPERINC "/usr/include/jasper/" >> /etc/csh.cshrc \ + && echo setenv JASPERLIB "/usr/lib64/" >> /etc/csh.cshrc \ + && echo setenv LD_LIBRARY_PATH "/usr/lib64/openmpi/lib" >> /etc/csh.cshrc \ + && echo setenv PATH ".:/usr/lib64/openmpi/bin:$PATH" >> /etc/csh.cshrc +# +# +RUN mkdir /wrf/.ssh ; echo "StrictHostKeyChecking no" > /wrf/.ssh/config +COPY default-mca-params.conf /wrf/.openmpi/mca-params.conf +RUN mkdir -p /wrf/.openmpi +RUN chown -R wrfuser:wrf /wrf/ +# RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers +# +# +# all root steps completed above, now below as regular userID wrfuser +USER wrfuser +WORKDIR /wrf +# +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_low_res_mandatory.tar.gz | tar -xzC /wrf/WPS_GEOG +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/colorado_march16.new.tar.gz | tar -xzC /wrf/wrfinput +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/src/namelists_v$NML_VERSION.tar.gz | tar -xzC /wrf/wrfinput +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/WRF_NCL_scripts.tar.gz | tar -xzC /wrf +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/data_v04.08.tar.gz | tar -xzC /wrf +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/nml.tar.gz | tar -xzC /wrf +# +RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/script.tar | tar -xC /wrf +# +# Download NCL +# +RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/nclncarg-6.3.0.linuxcentos7.0x8664nodapgcc482.tar.gz | tar zxC /usr/local +ENV NCARG_ROOT /usr/local +# +# +# Download wrf and wps source, Version 4.0 and later +#RUN curl -SL https://github.com/wrf-model/WPS/archive/v$WPS_VERSION.tar.gz | tar zxC /wrf \ +# && curl -SL https://github.com/wrf-model/WRF/archive/v$WRF_VERSION.tar.gz | tar zxC /wrf +#RUN mv /wrf/WPS-$WPS_VERSION /wrf/WPS +#RUN mv /wrf/WRF-$WRF_VERSION /wrf/WRF + +RUN curl -SL https://github.com/wrf-model/WPS/archive/v$WPS_VERSION.tar.gz | tar zxC /wrf +RUN mv /wrf/WPS-$WPS_VERSION /wrf/WPS + +RUN echo _HERE1_ +RUN git clone https://github.com/davegill/WRF.git davegill/WRF \ + && cd davegill/WRF \ + && git fetch origin +refs/pull/4/merge: \ + && git checkout -qf FETCH_HEAD \ + && cd .. \ + && mv WRF /wrf/WRF +RUN echo _HERE2_ + +ENV NETCDF_classic 1 +# +# + RUN mkdir netcdf_links \ + && ln -sf /usr/include/openmpi-x86_64/ netcdf_links/include \ + && ln -sf /usr/lib64/openmpi/lib netcdf_links/lib \ + && export NETCDF=/wrf/netcdf_links \ + && export JASPERINC=/usr/include/jasper/ \ + && export JASPERLIB=/usr/lib64/ + +ENV LD_LIBRARY_PATH /usr/lib64/openmpi/lib +ENV PATH /usr/lib64/openmpi/bin:$PATH +# +# +RUN ssh-keygen -f /wrf/.ssh/id_rsa -t rsa -N '' \ + && chmod 600 /wrf/.ssh/config \ + && chmod 700 /wrf/.ssh \ + && cp /wrf/.ssh/id_rsa.pub /wrf/.ssh/authorized_keys +# +# +VOLUME /wrf +CMD ["/bin/tcsh"] +# From ce4832645cc6a3edafbf4c957b3a8f2dcbbd8ebc Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 6 Mar 2019 07:27:52 -0700 Subject: [PATCH 05/50] yum install git in Dockerfile --- Dockerfile-template | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile-template b/Dockerfile-template index 940bf1b..ab1dcdd 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -13,7 +13,8 @@ ENV NML_VERSION 4.0.2 RUN yum -y update RUN yum -y install file gcc gcc-gfortran gcc-c++ glibc.i686 libgcc.i686 libpng-devel jasper \ jasper-devel hostname m4 make perl tar bash tcsh time wget which zlib zlib-devel \ - openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender ImageMagick sudo epel-release + openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender \ + ImageMagick sudo epel-release git # # now get 3rd party EPEL builds of netcdf and openmpi dependencies RUN yum -y install netcdf-openmpi-devel.x86_64 netcdf-fortran-openmpi-devel.x86_64 \ From c0468c025a7cf5a0c601218386b4333df9174f6c Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 6 Mar 2019 08:13:30 -0700 Subject: [PATCH 06/50] Now add a run phase for WRF --- .travis.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.travis.yml b/.travis.yml index 611e86b..fde6441 100644 --- a/.travis.yml +++ b/.travis.yml @@ -66,6 +66,10 @@ script: - date - docker exec test_001 ls -ls WRF/main - date + - docker exec -w WRF test_001 git log --oneline + - date + - docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF + - date - docker stop test_001 - date - docker rm test_001 From bea504d6bd9e3ec17fe69ac0f29e16a06349d9d0 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 6 Mar 2019 09:39:05 -0700 Subject: [PATCH 07/50] Absolute path required with docker -w --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index fde6441..eb69de8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -66,10 +66,12 @@ script: - date - docker exec test_001 ls -ls WRF/main - date - - docker exec -w WRF test_001 git log --oneline + - docker exec -w /wrf/WRF test_001 git log --oneline | head -50 - date - docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF - date + - docker exec -w /wrf/WRF/test/em_real test_001 ls -ls + - date - docker stop test_001 - date - docker rm test_001 From 43d5a1f17b4ade5a6983d2573a17d5e296aaf6b5 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 7 Mar 2019 07:47:37 -0700 Subject: [PATCH 08/50] Remove the "-w" option from docker, does not work to change working directory --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index eb69de8..79e1c09 100644 --- a/.travis.yml +++ b/.travis.yml @@ -66,11 +66,9 @@ script: - date - docker exec test_001 ls -ls WRF/main - date - - docker exec -w /wrf/WRF test_001 git log --oneline | head -50 - - date - docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF - date - - docker exec -w /wrf/WRF/test/em_real test_001 ls -ls + - docker exec test_001 ls -ls WRF/test/em_real - date - docker stop test_001 - date From 3f24a803224a949bc9c8348639058f986607caef Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 7 Mar 2019 08:56:24 -0700 Subject: [PATCH 09/50] If BUILD fails: 1) output compile log, 2) do not try to run --- .travis.yml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 79e1c09..7242438 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,13 +63,20 @@ script: - docker ps -a - date - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d - - date - - docker exec test_001 ls -ls WRF/main - - date - - docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF - - date - - docker exec test_001 ls -ls WRF/test/em_real - - date + - | + OK=$? + if [[ $OK != 0 ]] ; then + docker exec test_001 ls -ls WRF/compile.log.em_real.34 + date + else + date + docker exec test_001 ls -ls WRF/main + date + docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF + date + docker exec test_001 ls -ls WRF/test/em_real + date + fi - docker stop test_001 - date - docker rm test_001 From 35032ef707e4080714e6c82441623e0cdaf91427 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 7 Mar 2019 14:52:30 -0700 Subject: [PATCH 10/50] gcc-6 -> gcc-8 --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7242438..a9ffe55 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,9 +17,9 @@ addons: sources: - ubuntu-toolchain-r-test packages: - - gcc-6 - - gfortran-6 - - g++-6 + - gcc-8 + - gfortran-8 + - g++-8 - lcov #====================================================================== From 0d6c3d0fb6b84e2ff65c0b5b4b162d826a708b33 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 7 Mar 2019 16:33:15 -0700 Subject: [PATCH 11/50] cat the wrf build log, not just an ls, we want to see what failed --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index a9ffe55..32d4c60 100644 --- a/.travis.yml +++ b/.travis.yml @@ -67,6 +67,7 @@ script: OK=$? if [[ $OK != 0 ]] ; then docker exec test_001 ls -ls WRF/compile.log.em_real.34 + docker exec test_001 cat WRF/compile.log.em_real.34 date else date From 63ce14ce1e36d7fc3ad9d7e1b7a57df4bb3ea04e Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Mon, 11 Mar 2019 17:03:35 -0600 Subject: [PATCH 12/50] Linux RH devtoolset for gnu-7, changes LD_LIBRARY_PATH and PATH This brings in the new GNU compiler. If the standard GNU compiler on Linux is too old to build WRF, this is what is required. The side effect is that the "yum install netcdf" commands are now generating inconsistent Fortran *.mod files. The "yum install" command is defaulting to an assumed GNU version (4.8.5, OLD). With some source changes in WRF, there is no longer a need for the Fortran MODULE "use netcdf" statment, we can get away with "include netcdf.inc". --- .travis.yml | 2 ++ Dockerfile | 22 ++++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 32d4c60..c3c9844 100644 --- a/.travis.yml +++ b/.travis.yml @@ -68,6 +68,8 @@ script: if [[ $OK != 0 ]] ; then docker exec test_001 ls -ls WRF/compile.log.em_real.34 docker exec test_001 cat WRF/compile.log.em_real.34 + docker exec test_001 gfortran --version + docker exec test_001 gcc --version date else date diff --git a/Dockerfile b/Dockerfile index a2a61f2..300c056 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,9 +11,19 @@ ENV NML_VERSION 4.0.2 # Set up base OS environment # RUN yum -y update -RUN yum -y install file gcc gcc-gfortran gcc-c++ glibc.i686 libgcc.i686 libpng-devel jasper \ +RUN yum -y install scl file gcc gcc-gfortran gcc-c++ glibc.i686 libgcc.i686 libpng-devel jasper \ + glibc.i686 libgcc.i686 libpng-devel jasper \ jasper-devel hostname m4 make perl tar bash tcsh time wget which zlib zlib-devel \ - openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender ImageMagick sudo epel-release + openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender ImageMagick sudo epel-release \ + git +# +# Newer version of GNU compiler, required for WRF 2003 and 2008 Fortran constructs +# +RUN yum -y install centos-release-scl \ + && yum -y install devtoolset-7 \ + && yum -y install devtoolset-7-gcc devtoolset-7-gcc-gfortran devtoolset-7-gcc-c++ \ + && scl enable devtoolset-7 bash \ + && scl enable devtoolset-7 tcsh # # now get 3rd party EPEL builds of netcdf and openmpi dependencies RUN yum -y install netcdf-openmpi-devel.x86_64 netcdf-fortran-openmpi-devel.x86_64 \ @@ -44,14 +54,14 @@ RUN echo export LDFLAGS="-lm" >> /etc/bashrc \ && echo export NETCDF=/wrf/netcdf_links >> /etc/bashrc \ && echo export JASPERINC=/usr/include/jasper/ >> /etc/bashrc \ && echo export JASPERLIB=/usr/lib64/ >> /etc/bashrc \ - && echo export LD_LIBRARY_PATH="/usr/lib64/openmpi/lib" >> /etc/bashrc \ - && echo export PATH=".:/usr/lib64/openmpi/bin:$PATH" >> /etc/bashrc \ + && echo export LD_LIBRARY_PATH="/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7:/usr/lib64/openmpi/lib" >> /etc/bashrc \ + && echo export PATH=".:/opt/rh/devtoolset-7/root/usr/bin:/usr/lib64/openmpi/bin:$PATH" >> /etc/bashrc \ && echo setenv LDFLAGS "-lm" >> /etc/csh.cshrc \ && echo setenv NETCDF "/wrf/netcdf_links" >> /etc/csh.cshrc \ && echo setenv JASPERINC "/usr/include/jasper/" >> /etc/csh.cshrc \ && echo setenv JASPERLIB "/usr/lib64/" >> /etc/csh.cshrc \ - && echo setenv LD_LIBRARY_PATH "/usr/lib64/openmpi/lib" >> /etc/csh.cshrc \ - && echo setenv PATH ".:/usr/lib64/openmpi/bin:$PATH" >> /etc/csh.cshrc + && echo setenv LD_LIBRARY_PATH "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7:/usr/lib64/openmpi/lib" >> /etc/csh.cshrc \ + && echo setenv PATH ".:/opt/rh/devtoolset-7/root/usr/bin:/usr/lib64/openmpi/bin:$PATH" >> /etc/csh.cshrc # # RUN mkdir /wrf/.ssh ; echo "StrictHostKeyChecking no" > /wrf/.ssh/config From 3da4e71a1fb1c5c2a53f27c32754ab3fab046265 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Tue, 12 Mar 2019 07:47:22 -0600 Subject: [PATCH 13/50] docker ENV includes LD_LIBRARY_PATH and PATH with devtoolset --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 300c056..55efb13 100644 --- a/Dockerfile +++ b/Dockerfile @@ -111,8 +111,8 @@ ENV NETCDF_classic 1 && export JASPERINC=/usr/include/jasper/ \ && export JASPERLIB=/usr/lib64/ -ENV LD_LIBRARY_PATH /usr/lib64/openmpi/lib -ENV PATH /usr/lib64/openmpi/bin:$PATH +ENV LD_LIBRARY_PATH /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7:/usr/lib64/openmpi/lib +ENV PATH .:/opt/rh/devtoolset-7/root/usr/bin:/usr/lib64/openmpi/bin:$PATH # # RUN ssh-keygen -f /wrf/.ssh/id_rsa -t rsa -N '' \ From 6517b500c42639457d75060a67003c9d0808e78a Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 17 Apr 2019 21:23:37 -0600 Subject: [PATCH 14/50] Works interactively Dockerfile has GNU 8 (fixes RRTMG compile fails with -d) Dockerfile builds netcdf, hdf5, openmpi Dockerfile fixes env and various LD_LIB and PATHs Dockerfile and .travis.yml have option for regtest arg Includes small data option (No DA, no HWRF, No KPP) Includes better script with nml test number on pass Includes better script with defined $d on run failures Includes better script with stacksize unlimited Takes a while to build the image now, 40+ minutes, likely due to the building of those !@#$%^&* libraries from source Changes to be committed: modified: .travis.yml modified: Dockerfile modified: Dockerfile-template --- .travis.yml | 2 +- Dockerfile | 195 +++++++++++++++++++++++++------------------- Dockerfile-template | 179 ++++++++++++++++++++++------------------ 3 files changed, 213 insertions(+), 163 deletions(-) diff --git a/.travis.yml b/.travis.yml index c3c9844..f30b222 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,7 +54,7 @@ script: - date - sed -e 's/_HERE1_/"DAVE START"/' -e 's/_HERE2_/"DAVE END CLONE"/' Dockerfile-template > Dockerfile - date - - docker build -t wrf_regtest . + - docker build -t wrf_regtest --build-arg argname=regtest . - date - docker images -a - date diff --git a/Dockerfile b/Dockerfile index 55efb13..ff63e6c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,126 +1,153 @@ # FROM centos:latest -MAINTAINER John Exby -# -RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/ucar-bsd-3-clause-license.pdf > /UCAR-BSD-3-Clause-License.pdf -# +MAINTAINER Dave Gill + ENV WRF_VERSION 4.0.3 ENV WPS_VERSION 4.0.2 ENV NML_VERSION 4.0.2 -# + # Set up base OS environment -# + RUN yum -y update RUN yum -y install scl file gcc gcc-gfortran gcc-c++ glibc.i686 libgcc.i686 libpng-devel jasper \ - glibc.i686 libgcc.i686 libpng-devel jasper \ jasper-devel hostname m4 make perl tar bash tcsh time wget which zlib zlib-devel \ - openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender ImageMagick sudo epel-release \ - git -# + openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender \ + ImageMagick sudo epel-release git + # Newer version of GNU compiler, required for WRF 2003 and 2008 Fortran constructs -# + RUN yum -y install centos-release-scl \ - && yum -y install devtoolset-7 \ - && yum -y install devtoolset-7-gcc devtoolset-7-gcc-gfortran devtoolset-7-gcc-c++ \ - && scl enable devtoolset-7 bash \ - && scl enable devtoolset-7 tcsh -# -# now get 3rd party EPEL builds of netcdf and openmpi dependencies -RUN yum -y install netcdf-openmpi-devel.x86_64 netcdf-fortran-openmpi-devel.x86_64 \ - netcdf-fortran-openmpi.x86_64 hdf5-openmpi.x86_64 openmpi.x86_64 openmpi-devel.x86_64 \ - && yum clean all -# -RUN mkdir -p /var/run/sshd \ - && ssh-keygen -A \ - && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config \ - && sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/g' /etc/ssh/sshd_config \ - && sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config -# + && yum -y install devtoolset-8 \ + && yum -y install devtoolset-8-gcc devtoolset-8-gcc-gfortran devtoolset-8-gcc-c++ \ + && scl enable devtoolset-8 bash \ + && scl enable devtoolset-8 tcsh + RUN groupadd wrf -g 9999 RUN useradd -u 9999 -g wrf -G wheel -M -d /wrf wrfuser -# - RUN mkdir /wrf \ && chown -R wrfuser:wrf /wrf \ && chmod 6755 /wrf +# Build the libraries with a parallel Make +ENV J 4 + +# Build OpenMPI +RUN mkdir -p /wrf/libs/openmpi/BUILD_DIR +RUN source /opt/rh/devtoolset-8/enable \ + && cd /wrf/libs/openmpi/BUILD_DIR \ + && curl -L -O https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz \ + && tar -xf openmpi-4.0.0.tar.gz \ + && cd openmpi-4.0.0 \ + && ./configure --prefix=/usr/local \ + && make all install \ + && cd / \ + && rm -rf /wrf/libs/openmpi/BUILD_DIR + +# Build HDF5 libraries +RUN mkdir -p /wrf/libs/hdf5/BUILD_DIR +RUN source /opt/rh/devtoolset-8/enable \ + && cd /wrf/libs/hdf5/BUILD_DIR \ + && git clone https://bitbucket.hdfgroup.org/scm/hdffv/hdf5.git \ + && cd hdf5 \ + && git checkout hdf5-1_10_4 \ + && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ \ + && make install \ + && rm -rf /wrf/libs/hdf5/BUILD_DIR +ENV LD_LIBRARY_PATH /usr/local/lib + +# Build netCDF C and Fortran libraries +RUN yum -y install libcurl-devel zlib-devel +ENV NETCDF /wrf/libs/netcdf +RUN mkdir -p ${NETCDF}/BUILD_DIR +RUN source /opt/rh/devtoolset-8/enable \ + && cd ${NETCDF}/BUILD_DIR \ + && curl -L -O https://github.com/Unidata/netcdf-c/archive/v4.6.2.tar.gz \ + && curl -L -O https://github.com/Unidata/netcdf-fortran/archive/v4.4.5.tar.gz \ + && tar -xf v4.6.2.tar.gz \ + && cd netcdf-c-4.6.2 \ + && ./configure --prefix=${NETCDF} \ + && make install +RUN source /opt/rh/devtoolset-8/enable \ + && env \ + && cd ${NETCDF}/BUILD_DIR \ + && tar -xf v4.4.5.tar.gz \ + && cd netcdf-fortran-4.4.5/ \ + && export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} \ + && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} \ + && make install + +RUN mkdir -p /var/run/sshd \ + && ssh-keygen -A \ + && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config \ + && sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/g' /etc/ssh/sshd_config \ + && sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config + RUN mkdir -p /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput \ && chown -R wrfuser:wrf /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local \ && chmod 6755 /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local +# Download NCL +RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/nclncarg-6.3.0.linuxcentos7.0x8664nodapgcc482.tar.gz | tar zxC /usr/local +ENV NCARG_ROOT /usr/local + # Set environment for interactive container shells -# RUN echo export LDFLAGS="-lm" >> /etc/bashrc \ - && echo export NETCDF=/wrf/netcdf_links >> /etc/bashrc \ + && echo export NETCDF=${NETCDF} >> /etc/bashrc \ && echo export JASPERINC=/usr/include/jasper/ >> /etc/bashrc \ && echo export JASPERLIB=/usr/lib64/ >> /etc/bashrc \ - && echo export LD_LIBRARY_PATH="/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7:/usr/lib64/openmpi/lib" >> /etc/bashrc \ - && echo export PATH=".:/opt/rh/devtoolset-7/root/usr/bin:/usr/lib64/openmpi/bin:$PATH" >> /etc/bashrc \ - && echo setenv LDFLAGS "-lm" >> /etc/csh.cshrc \ - && echo setenv NETCDF "/wrf/netcdf_links" >> /etc/csh.cshrc \ + && echo export LD_LIBRARY_PATH="/opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8:/usr/lib64/openmpi/lib:${NETCDF}/lib:${LD_LIBRARY_PATH}" >> /etc/bashrc \ + && echo export PATH=".:/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/openmpi/bin:${NETCDF}/bin:$PATH" >> /etc/bashrc + +RUN echo setenv LDFLAGS "-lm" >> /etc/csh.cshrc \ + && echo setenv NETCDF "${NETCDF}" >> /etc/csh.cshrc \ && echo setenv JASPERINC "/usr/include/jasper/" >> /etc/csh.cshrc \ && echo setenv JASPERLIB "/usr/lib64/" >> /etc/csh.cshrc \ - && echo setenv LD_LIBRARY_PATH "/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7:/usr/lib64/openmpi/lib" >> /etc/csh.cshrc \ - && echo setenv PATH ".:/opt/rh/devtoolset-7/root/usr/bin:/usr/lib64/openmpi/bin:$PATH" >> /etc/csh.cshrc -# -# + && echo setenv LD_LIBRARY_PATH "/opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8:/usr/lib64/openmpi/lib:${NETCDF}/lib:${LD_LIBRARY_PATH}" >> /etc/csh.cshrc \ + && echo setenv PATH ".:/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/openmpi/bin:${NETCDF}/bin:$PATH" >> /etc/csh.cshrc + RUN mkdir /wrf/.ssh ; echo "StrictHostKeyChecking no" > /wrf/.ssh/config COPY default-mca-params.conf /wrf/.openmpi/mca-params.conf RUN mkdir -p /wrf/.openmpi RUN chown -R wrfuser:wrf /wrf/ -# RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers -# -# + # all root steps completed above, now below as regular userID wrfuser USER wrfuser WORKDIR /wrf -# -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_low_res_mandatory.tar.gz | tar -xzC /wrf/WPS_GEOG -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/colorado_march16.new.tar.gz | tar -xzC /wrf/wrfinput -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/src/namelists_v$NML_VERSION.tar.gz | tar -xzC /wrf/wrfinput -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/WRF_NCL_scripts.tar.gz | tar -xzC /wrf -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/data_v04.08.tar.gz | tar -xzC /wrf -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/nml.tar.gz | tar -xzC /wrf -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/script.tar | tar -xC /wrf -# -# Download NCL -# -RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/nclncarg-6.3.0.linuxcentos7.0x8664nodapgcc482.tar.gz | tar zxC /usr/local -ENV NCARG_ROOT /usr/local -# -# -# Download wrf and wps source, Version 4.0 and later -RUN curl -SL https://github.com/wrf-model/WPS/archive/v$WPS_VERSION.tar.gz | tar zxC /wrf \ - && curl -SL https://github.com/wrf-model/WRF/archive/v$WRF_VERSION.tar.gz | tar zxC /wrf -RUN mv /wrf/WPS-$WPS_VERSION /wrf/WPS -RUN mv /wrf/WRF-$WRF_VERSION /wrf/WRF + +# Download data +ARG argname=tutorial +RUN echo DAVE $argname +RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_low_res_mandatory.tar.gz | tar -xzC /wrf/WPS_GEOG ; fi +RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/colorado_march16.new.tar.gz | tar -xzC /wrf/wrfinput ; fi +RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/src/namelists_v$NML_VERSION.tar.gz | tar -xzC /wrf/wrfinput ; fi +RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/WRF_NCL_scripts.tar.gz | tar -xzC /wrf ; fi +RUN if [ "$argname" = "regtest" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/dave/DATA/Data_small/data_SMALL.tar.gz | tar -xzC /wrf ; fi +RUN if [ "$argname" = "regtest" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/dave/nml.tar.gz | tar -xzC /wrf ; fi +RUN if [ "$argname" = "regtest" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/dave/script.tar | tar -xC /wrf ; fi + +# Download wps source +RUN if [ "$argname" = "tutorial" ] ; then git clone https://github.com/wrf-model/WPS.git WPS ; fi + +RUN echo _HERE1_ +RUN git clone https://github.com/davegill/WRF.git davegill/WRF \ + && cd davegill/WRF \ + && git fetch origin +refs/pull/4/merge: \ + && git checkout -qf FETCH_HEAD \ + && cd .. \ + && mv WRF /wrf/WRF +RUN echo _HERE2_ + +ENV JASPERINC /usr/include/jasper +ENV JASPERLIB /usr/lib64 ENV NETCDF_classic 1 -# -# - RUN mkdir netcdf_links \ - && ln -sf /usr/include/openmpi-x86_64/ netcdf_links/include \ - && ln -sf /usr/lib64/openmpi/lib netcdf_links/lib \ - && export NETCDF=/wrf/netcdf_links \ - && export JASPERINC=/usr/include/jasper/ \ - && export JASPERLIB=/usr/lib64/ - -ENV LD_LIBRARY_PATH /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7:/usr/lib64/openmpi/lib -ENV PATH .:/opt/rh/devtoolset-7/root/usr/bin:/usr/lib64/openmpi/bin:$PATH -# -# +ENV LD_LIBRARY_PATH /opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8:/usr/lib64/openmpi/lib:${NETCDF}/lib:${LD_LIBRARY_PATH} +ENV PATH .:/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/openmpi/bin:${NETCDF}/bin:$PATH + RUN ssh-keygen -f /wrf/.ssh/id_rsa -t rsa -N '' \ && chmod 600 /wrf/.ssh/config \ && chmod 700 /wrf/.ssh \ && cp /wrf/.ssh/id_rsa.pub /wrf/.ssh/authorized_keys -# -# + VOLUME /wrf CMD ["/bin/tcsh"] # diff --git a/Dockerfile-template b/Dockerfile-template index ab1dcdd..ff63e6c 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -1,100 +1,132 @@ # FROM centos:latest -MAINTAINER John Exby -# -RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/ucar-bsd-3-clause-license.pdf > /UCAR-BSD-3-Clause-License.pdf -# +MAINTAINER Dave Gill + ENV WRF_VERSION 4.0.3 ENV WPS_VERSION 4.0.2 ENV NML_VERSION 4.0.2 -# + # Set up base OS environment -# + RUN yum -y update -RUN yum -y install file gcc gcc-gfortran gcc-c++ glibc.i686 libgcc.i686 libpng-devel jasper \ +RUN yum -y install scl file gcc gcc-gfortran gcc-c++ glibc.i686 libgcc.i686 libpng-devel jasper \ jasper-devel hostname m4 make perl tar bash tcsh time wget which zlib zlib-devel \ openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender \ ImageMagick sudo epel-release git -# -# now get 3rd party EPEL builds of netcdf and openmpi dependencies -RUN yum -y install netcdf-openmpi-devel.x86_64 netcdf-fortran-openmpi-devel.x86_64 \ - netcdf-fortran-openmpi.x86_64 hdf5-openmpi.x86_64 openmpi.x86_64 openmpi-devel.x86_64 \ - && yum clean all -# -RUN mkdir -p /var/run/sshd \ - && ssh-keygen -A \ - && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config \ - && sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/g' /etc/ssh/sshd_config \ - && sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config -# + +# Newer version of GNU compiler, required for WRF 2003 and 2008 Fortran constructs + +RUN yum -y install centos-release-scl \ + && yum -y install devtoolset-8 \ + && yum -y install devtoolset-8-gcc devtoolset-8-gcc-gfortran devtoolset-8-gcc-c++ \ + && scl enable devtoolset-8 bash \ + && scl enable devtoolset-8 tcsh + RUN groupadd wrf -g 9999 RUN useradd -u 9999 -g wrf -G wheel -M -d /wrf wrfuser -# - RUN mkdir /wrf \ && chown -R wrfuser:wrf /wrf \ && chmod 6755 /wrf +# Build the libraries with a parallel Make +ENV J 4 + +# Build OpenMPI +RUN mkdir -p /wrf/libs/openmpi/BUILD_DIR +RUN source /opt/rh/devtoolset-8/enable \ + && cd /wrf/libs/openmpi/BUILD_DIR \ + && curl -L -O https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz \ + && tar -xf openmpi-4.0.0.tar.gz \ + && cd openmpi-4.0.0 \ + && ./configure --prefix=/usr/local \ + && make all install \ + && cd / \ + && rm -rf /wrf/libs/openmpi/BUILD_DIR + +# Build HDF5 libraries +RUN mkdir -p /wrf/libs/hdf5/BUILD_DIR +RUN source /opt/rh/devtoolset-8/enable \ + && cd /wrf/libs/hdf5/BUILD_DIR \ + && git clone https://bitbucket.hdfgroup.org/scm/hdffv/hdf5.git \ + && cd hdf5 \ + && git checkout hdf5-1_10_4 \ + && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ \ + && make install \ + && rm -rf /wrf/libs/hdf5/BUILD_DIR +ENV LD_LIBRARY_PATH /usr/local/lib + +# Build netCDF C and Fortran libraries +RUN yum -y install libcurl-devel zlib-devel +ENV NETCDF /wrf/libs/netcdf +RUN mkdir -p ${NETCDF}/BUILD_DIR +RUN source /opt/rh/devtoolset-8/enable \ + && cd ${NETCDF}/BUILD_DIR \ + && curl -L -O https://github.com/Unidata/netcdf-c/archive/v4.6.2.tar.gz \ + && curl -L -O https://github.com/Unidata/netcdf-fortran/archive/v4.4.5.tar.gz \ + && tar -xf v4.6.2.tar.gz \ + && cd netcdf-c-4.6.2 \ + && ./configure --prefix=${NETCDF} \ + && make install +RUN source /opt/rh/devtoolset-8/enable \ + && env \ + && cd ${NETCDF}/BUILD_DIR \ + && tar -xf v4.4.5.tar.gz \ + && cd netcdf-fortran-4.4.5/ \ + && export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} \ + && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} \ + && make install + +RUN mkdir -p /var/run/sshd \ + && ssh-keygen -A \ + && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config \ + && sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/g' /etc/ssh/sshd_config \ + && sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config + RUN mkdir -p /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput \ && chown -R wrfuser:wrf /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local \ && chmod 6755 /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local +# Download NCL +RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/nclncarg-6.3.0.linuxcentos7.0x8664nodapgcc482.tar.gz | tar zxC /usr/local +ENV NCARG_ROOT /usr/local + # Set environment for interactive container shells -# RUN echo export LDFLAGS="-lm" >> /etc/bashrc \ - && echo export NETCDF=/wrf/netcdf_links >> /etc/bashrc \ + && echo export NETCDF=${NETCDF} >> /etc/bashrc \ && echo export JASPERINC=/usr/include/jasper/ >> /etc/bashrc \ && echo export JASPERLIB=/usr/lib64/ >> /etc/bashrc \ - && echo export LD_LIBRARY_PATH="/usr/lib64/openmpi/lib" >> /etc/bashrc \ - && echo export PATH=".:/usr/lib64/openmpi/bin:$PATH" >> /etc/bashrc \ - && echo setenv LDFLAGS "-lm" >> /etc/csh.cshrc \ - && echo setenv NETCDF "/wrf/netcdf_links" >> /etc/csh.cshrc \ + && echo export LD_LIBRARY_PATH="/opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8:/usr/lib64/openmpi/lib:${NETCDF}/lib:${LD_LIBRARY_PATH}" >> /etc/bashrc \ + && echo export PATH=".:/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/openmpi/bin:${NETCDF}/bin:$PATH" >> /etc/bashrc + +RUN echo setenv LDFLAGS "-lm" >> /etc/csh.cshrc \ + && echo setenv NETCDF "${NETCDF}" >> /etc/csh.cshrc \ && echo setenv JASPERINC "/usr/include/jasper/" >> /etc/csh.cshrc \ && echo setenv JASPERLIB "/usr/lib64/" >> /etc/csh.cshrc \ - && echo setenv LD_LIBRARY_PATH "/usr/lib64/openmpi/lib" >> /etc/csh.cshrc \ - && echo setenv PATH ".:/usr/lib64/openmpi/bin:$PATH" >> /etc/csh.cshrc -# -# + && echo setenv LD_LIBRARY_PATH "/opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8:/usr/lib64/openmpi/lib:${NETCDF}/lib:${LD_LIBRARY_PATH}" >> /etc/csh.cshrc \ + && echo setenv PATH ".:/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/openmpi/bin:${NETCDF}/bin:$PATH" >> /etc/csh.cshrc + RUN mkdir /wrf/.ssh ; echo "StrictHostKeyChecking no" > /wrf/.ssh/config COPY default-mca-params.conf /wrf/.openmpi/mca-params.conf RUN mkdir -p /wrf/.openmpi RUN chown -R wrfuser:wrf /wrf/ -# RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers -# -# + # all root steps completed above, now below as regular userID wrfuser USER wrfuser WORKDIR /wrf -# -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_low_res_mandatory.tar.gz | tar -xzC /wrf/WPS_GEOG -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/colorado_march16.new.tar.gz | tar -xzC /wrf/wrfinput -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/src/namelists_v$NML_VERSION.tar.gz | tar -xzC /wrf/wrfinput -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/WRF_NCL_scripts.tar.gz | tar -xzC /wrf -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/data_v04.08.tar.gz | tar -xzC /wrf -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/nml.tar.gz | tar -xzC /wrf -# -RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/script.tar | tar -xC /wrf -# -# Download NCL -# -RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/nclncarg-6.3.0.linuxcentos7.0x8664nodapgcc482.tar.gz | tar zxC /usr/local -ENV NCARG_ROOT /usr/local -# -# -# Download wrf and wps source, Version 4.0 and later -#RUN curl -SL https://github.com/wrf-model/WPS/archive/v$WPS_VERSION.tar.gz | tar zxC /wrf \ -# && curl -SL https://github.com/wrf-model/WRF/archive/v$WRF_VERSION.tar.gz | tar zxC /wrf -#RUN mv /wrf/WPS-$WPS_VERSION /wrf/WPS -#RUN mv /wrf/WRF-$WRF_VERSION /wrf/WRF -RUN curl -SL https://github.com/wrf-model/WPS/archive/v$WPS_VERSION.tar.gz | tar zxC /wrf -RUN mv /wrf/WPS-$WPS_VERSION /wrf/WPS +# Download data +ARG argname=tutorial +RUN echo DAVE $argname +RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_low_res_mandatory.tar.gz | tar -xzC /wrf/WPS_GEOG ; fi +RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/colorado_march16.new.tar.gz | tar -xzC /wrf/wrfinput ; fi +RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/src/namelists_v$NML_VERSION.tar.gz | tar -xzC /wrf/wrfinput ; fi +RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/WRF_NCL_scripts.tar.gz | tar -xzC /wrf ; fi +RUN if [ "$argname" = "regtest" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/dave/DATA/Data_small/data_SMALL.tar.gz | tar -xzC /wrf ; fi +RUN if [ "$argname" = "regtest" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/dave/nml.tar.gz | tar -xzC /wrf ; fi +RUN if [ "$argname" = "regtest" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/dave/script.tar | tar -xC /wrf ; fi + +# Download wps source +RUN if [ "$argname" = "tutorial" ] ; then git clone https://github.com/wrf-model/WPS.git WPS ; fi RUN echo _HERE1_ RUN git clone https://github.com/davegill/WRF.git davegill/WRF \ @@ -105,26 +137,17 @@ RUN git clone https://github.com/davegill/WRF.git davegill/WRF \ && mv WRF /wrf/WRF RUN echo _HERE2_ +ENV JASPERINC /usr/include/jasper +ENV JASPERLIB /usr/lib64 ENV NETCDF_classic 1 -# -# - RUN mkdir netcdf_links \ - && ln -sf /usr/include/openmpi-x86_64/ netcdf_links/include \ - && ln -sf /usr/lib64/openmpi/lib netcdf_links/lib \ - && export NETCDF=/wrf/netcdf_links \ - && export JASPERINC=/usr/include/jasper/ \ - && export JASPERLIB=/usr/lib64/ - -ENV LD_LIBRARY_PATH /usr/lib64/openmpi/lib -ENV PATH /usr/lib64/openmpi/bin:$PATH -# -# +ENV LD_LIBRARY_PATH /opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8:/usr/lib64/openmpi/lib:${NETCDF}/lib:${LD_LIBRARY_PATH} +ENV PATH .:/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/openmpi/bin:${NETCDF}/bin:$PATH + RUN ssh-keygen -f /wrf/.ssh/id_rsa -t rsa -N '' \ && chmod 600 /wrf/.ssh/config \ && chmod 700 /wrf/.ssh \ && cp /wrf/.ssh/id_rsa.pub /wrf/.ssh/authorized_keys -# -# + VOLUME /wrf CMD ["/bin/tcsh"] # From 75e460682f1d65efe854f3a665d9372b7a56f5d1 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 17 Apr 2019 22:32:22 -0600 Subject: [PATCH 15/50] Redirect the std out and err from netcdf, openmpi, hdf5 configure and make install Stick files in /wrf/wrfoutput. The output was enormous, and travis complained. If the builds work, who looks at that stuff anyways, right? Changes to be committed: modified: Dockerfile modified: Dockerfile-template --- Dockerfile | 16 ++++++++-------- Dockerfile-template | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index ff63e6c..2621ef1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,8 +38,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && curl -L -O https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz \ && tar -xf openmpi-4.0.0.tar.gz \ && cd openmpi-4.0.0 \ - && ./configure --prefix=/usr/local \ - && make all install \ + && ./configure --prefix=/usr/local &> /wrf/wrfoutput/build_log_openmpi_config \ + && make all install &> /wrf/wrfoutput/build_log_openmpi_make \ && cd / \ && rm -rf /wrf/libs/openmpi/BUILD_DIR @@ -50,8 +50,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && git clone https://bitbucket.hdfgroup.org/scm/hdffv/hdf5.git \ && cd hdf5 \ && git checkout hdf5-1_10_4 \ - && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ \ - && make install \ + && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ &> /wrf/wrfoutput/build_log_hdf5_config \ + && make install &> /wrf/wrfoutput/build_log_hdf5_make \ && rm -rf /wrf/libs/hdf5/BUILD_DIR ENV LD_LIBRARY_PATH /usr/local/lib @@ -65,16 +65,16 @@ RUN source /opt/rh/devtoolset-8/enable \ && curl -L -O https://github.com/Unidata/netcdf-fortran/archive/v4.4.5.tar.gz \ && tar -xf v4.6.2.tar.gz \ && cd netcdf-c-4.6.2 \ - && ./configure --prefix=${NETCDF} \ - && make install + && ./configure --prefix=${NETCDF} &> /wrf/wrfoutput/build_log_ncc_config \ + && make install &> /wrf/wrfoutput/build_log_ncc_make RUN source /opt/rh/devtoolset-8/enable \ && env \ && cd ${NETCDF}/BUILD_DIR \ && tar -xf v4.4.5.tar.gz \ && cd netcdf-fortran-4.4.5/ \ && export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} \ - && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} \ - && make install + && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} &> /wrf/wrfoutput/build_log_ncf_config \ + && make install &> /wrf/wrfoutput/build_log_ncf_make RUN mkdir -p /var/run/sshd \ && ssh-keygen -A \ diff --git a/Dockerfile-template b/Dockerfile-template index ff63e6c..2621ef1 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -38,8 +38,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && curl -L -O https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz \ && tar -xf openmpi-4.0.0.tar.gz \ && cd openmpi-4.0.0 \ - && ./configure --prefix=/usr/local \ - && make all install \ + && ./configure --prefix=/usr/local &> /wrf/wrfoutput/build_log_openmpi_config \ + && make all install &> /wrf/wrfoutput/build_log_openmpi_make \ && cd / \ && rm -rf /wrf/libs/openmpi/BUILD_DIR @@ -50,8 +50,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && git clone https://bitbucket.hdfgroup.org/scm/hdffv/hdf5.git \ && cd hdf5 \ && git checkout hdf5-1_10_4 \ - && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ \ - && make install \ + && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ &> /wrf/wrfoutput/build_log_hdf5_config \ + && make install &> /wrf/wrfoutput/build_log_hdf5_make \ && rm -rf /wrf/libs/hdf5/BUILD_DIR ENV LD_LIBRARY_PATH /usr/local/lib @@ -65,16 +65,16 @@ RUN source /opt/rh/devtoolset-8/enable \ && curl -L -O https://github.com/Unidata/netcdf-fortran/archive/v4.4.5.tar.gz \ && tar -xf v4.6.2.tar.gz \ && cd netcdf-c-4.6.2 \ - && ./configure --prefix=${NETCDF} \ - && make install + && ./configure --prefix=${NETCDF} &> /wrf/wrfoutput/build_log_ncc_config \ + && make install &> /wrf/wrfoutput/build_log_ncc_make RUN source /opt/rh/devtoolset-8/enable \ && env \ && cd ${NETCDF}/BUILD_DIR \ && tar -xf v4.4.5.tar.gz \ && cd netcdf-fortran-4.4.5/ \ && export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} \ - && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} \ - && make install + && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} &> /wrf/wrfoutput/build_log_ncf_config \ + && make install &> /wrf/wrfoutput/build_log_ncf_make RUN mkdir -p /var/run/sshd \ && ssh-keygen -A \ From 165d834869b1e0cb9a184f3b9ccc800011f3bdbb Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 17 Apr 2019 22:44:44 -0600 Subject: [PATCH 16/50] Write lib std out and err to /wrf/libs, since that dir exists (ahem) Changes to be committed: modified: Dockerfile modified: Dockerfile-template --- Dockerfile | 16 ++++++++-------- Dockerfile-template | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2621ef1..ba8c599 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,8 +38,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && curl -L -O https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz \ && tar -xf openmpi-4.0.0.tar.gz \ && cd openmpi-4.0.0 \ - && ./configure --prefix=/usr/local &> /wrf/wrfoutput/build_log_openmpi_config \ - && make all install &> /wrf/wrfoutput/build_log_openmpi_make \ + && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ + && make all install &> /wrf/libs/build_log_openmpi_make \ && cd / \ && rm -rf /wrf/libs/openmpi/BUILD_DIR @@ -50,8 +50,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && git clone https://bitbucket.hdfgroup.org/scm/hdffv/hdf5.git \ && cd hdf5 \ && git checkout hdf5-1_10_4 \ - && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ &> /wrf/wrfoutput/build_log_hdf5_config \ - && make install &> /wrf/wrfoutput/build_log_hdf5_make \ + && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ &> /wrf/libs/build_log_hdf5_config \ + && make install &> /wrf/libs/build_log_hdf5_make \ && rm -rf /wrf/libs/hdf5/BUILD_DIR ENV LD_LIBRARY_PATH /usr/local/lib @@ -65,16 +65,16 @@ RUN source /opt/rh/devtoolset-8/enable \ && curl -L -O https://github.com/Unidata/netcdf-fortran/archive/v4.4.5.tar.gz \ && tar -xf v4.6.2.tar.gz \ && cd netcdf-c-4.6.2 \ - && ./configure --prefix=${NETCDF} &> /wrf/wrfoutput/build_log_ncc_config \ - && make install &> /wrf/wrfoutput/build_log_ncc_make + && ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncc_config \ + && make install &> /wrf/libs/build_log_ncc_make RUN source /opt/rh/devtoolset-8/enable \ && env \ && cd ${NETCDF}/BUILD_DIR \ && tar -xf v4.4.5.tar.gz \ && cd netcdf-fortran-4.4.5/ \ && export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} \ - && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} &> /wrf/wrfoutput/build_log_ncf_config \ - && make install &> /wrf/wrfoutput/build_log_ncf_make + && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncf_config \ + && make install &> /wrf/libs/build_log_ncf_make RUN mkdir -p /var/run/sshd \ && ssh-keygen -A \ diff --git a/Dockerfile-template b/Dockerfile-template index 2621ef1..ba8c599 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -38,8 +38,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && curl -L -O https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz \ && tar -xf openmpi-4.0.0.tar.gz \ && cd openmpi-4.0.0 \ - && ./configure --prefix=/usr/local &> /wrf/wrfoutput/build_log_openmpi_config \ - && make all install &> /wrf/wrfoutput/build_log_openmpi_make \ + && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ + && make all install &> /wrf/libs/build_log_openmpi_make \ && cd / \ && rm -rf /wrf/libs/openmpi/BUILD_DIR @@ -50,8 +50,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && git clone https://bitbucket.hdfgroup.org/scm/hdffv/hdf5.git \ && cd hdf5 \ && git checkout hdf5-1_10_4 \ - && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ &> /wrf/wrfoutput/build_log_hdf5_config \ - && make install &> /wrf/wrfoutput/build_log_hdf5_make \ + && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ &> /wrf/libs/build_log_hdf5_config \ + && make install &> /wrf/libs/build_log_hdf5_make \ && rm -rf /wrf/libs/hdf5/BUILD_DIR ENV LD_LIBRARY_PATH /usr/local/lib @@ -65,16 +65,16 @@ RUN source /opt/rh/devtoolset-8/enable \ && curl -L -O https://github.com/Unidata/netcdf-fortran/archive/v4.4.5.tar.gz \ && tar -xf v4.6.2.tar.gz \ && cd netcdf-c-4.6.2 \ - && ./configure --prefix=${NETCDF} &> /wrf/wrfoutput/build_log_ncc_config \ - && make install &> /wrf/wrfoutput/build_log_ncc_make + && ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncc_config \ + && make install &> /wrf/libs/build_log_ncc_make RUN source /opt/rh/devtoolset-8/enable \ && env \ && cd ${NETCDF}/BUILD_DIR \ && tar -xf v4.4.5.tar.gz \ && cd netcdf-fortran-4.4.5/ \ && export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} \ - && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} &> /wrf/wrfoutput/build_log_ncf_config \ - && make install &> /wrf/wrfoutput/build_log_ncf_make + && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncf_config \ + && make install &> /wrf/libs/build_log_ncf_make RUN mkdir -p /var/run/sshd \ && ssh-keygen -A \ From 10acd0a2d28398ed14d0e27d3fee465cb362b685 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 17 Apr 2019 23:15:24 -0600 Subject: [PATCH 17/50] Add intermittent print so travis doesn't think process is hung, and stop the build This is due to the travis requirement that the std out and err output from the configure and make of the external libs (netcdf, hdf5, openmpi) was too large. So, you stick the std out and err in a file to be a nice guy. Is travis happy? No. Now it sees no output for a long time (since the three libs take a while) and says "Hey, I'll bet this process is just hung". Travis wants to see output every 10 minutes. Instead of modifying the .travis.yml file, I tried to manufacture output after each of the configures (4 of them) and after each of the makes (4 of them). Fingers crossed. Sheesh. Changes to be committed: modified: Dockerfile modified: Dockerfile-template --- Dockerfile | 12 ++++++++++-- Dockerfile-template | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index ba8c599..c55f794 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,7 +39,9 @@ RUN source /opt/rh/devtoolset-8/enable \ && tar -xf openmpi-4.0.0.tar.gz \ && cd openmpi-4.0.0 \ && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ + && echo dummy printout to keep travis happy openmpi config \ && make all install &> /wrf/libs/build_log_openmpi_make \ + && echo dummy printout to keep travis happy openmpi make \ && cd / \ && rm -rf /wrf/libs/openmpi/BUILD_DIR @@ -51,7 +53,9 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd hdf5 \ && git checkout hdf5-1_10_4 \ && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ &> /wrf/libs/build_log_hdf5_config \ + && echo dummy printout to keep travis happy hdf5 config \ && make install &> /wrf/libs/build_log_hdf5_make \ + && echo dummy printout to keep travis happy hdf5 make \ && rm -rf /wrf/libs/hdf5/BUILD_DIR ENV LD_LIBRARY_PATH /usr/local/lib @@ -66,7 +70,9 @@ RUN source /opt/rh/devtoolset-8/enable \ && tar -xf v4.6.2.tar.gz \ && cd netcdf-c-4.6.2 \ && ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncc_config \ - && make install &> /wrf/libs/build_log_ncc_make + && echo dummy printout to keep travis happy ncc config \ + && make install &> /wrf/libs/build_log_ncc_make \ + && echo dummy printout to keep travis happy ncc make RUN source /opt/rh/devtoolset-8/enable \ && env \ && cd ${NETCDF}/BUILD_DIR \ @@ -74,7 +80,9 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd netcdf-fortran-4.4.5/ \ && export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} \ && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncf_config \ - && make install &> /wrf/libs/build_log_ncf_make + && echo dummy printout to keep travis happy ncf config \ + && make install &> /wrf/libs/build_log_ncf_make \ + && echo dummy printout to keep travis happy ncf make RUN mkdir -p /var/run/sshd \ && ssh-keygen -A \ diff --git a/Dockerfile-template b/Dockerfile-template index ba8c599..c55f794 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -39,7 +39,9 @@ RUN source /opt/rh/devtoolset-8/enable \ && tar -xf openmpi-4.0.0.tar.gz \ && cd openmpi-4.0.0 \ && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ + && echo dummy printout to keep travis happy openmpi config \ && make all install &> /wrf/libs/build_log_openmpi_make \ + && echo dummy printout to keep travis happy openmpi make \ && cd / \ && rm -rf /wrf/libs/openmpi/BUILD_DIR @@ -51,7 +53,9 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd hdf5 \ && git checkout hdf5-1_10_4 \ && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ &> /wrf/libs/build_log_hdf5_config \ + && echo dummy printout to keep travis happy hdf5 config \ && make install &> /wrf/libs/build_log_hdf5_make \ + && echo dummy printout to keep travis happy hdf5 make \ && rm -rf /wrf/libs/hdf5/BUILD_DIR ENV LD_LIBRARY_PATH /usr/local/lib @@ -66,7 +70,9 @@ RUN source /opt/rh/devtoolset-8/enable \ && tar -xf v4.6.2.tar.gz \ && cd netcdf-c-4.6.2 \ && ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncc_config \ - && make install &> /wrf/libs/build_log_ncc_make + && echo dummy printout to keep travis happy ncc config \ + && make install &> /wrf/libs/build_log_ncc_make \ + && echo dummy printout to keep travis happy ncc make RUN source /opt/rh/devtoolset-8/enable \ && env \ && cd ${NETCDF}/BUILD_DIR \ @@ -74,7 +80,9 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd netcdf-fortran-4.4.5/ \ && export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} \ && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncf_config \ - && make install &> /wrf/libs/build_log_ncf_make + && echo dummy printout to keep travis happy ncf config \ + && make install &> /wrf/libs/build_log_ncf_make \ + && echo dummy printout to keep travis happy ncf make RUN mkdir -p /var/run/sshd \ && ssh-keygen -A \ From efa6de8a34774a06ee3147dcd5d053c4909932de Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 17 Apr 2019 23:45:28 -0600 Subject: [PATCH 18/50] Still wrestling with 10 minute rule Trying to dump piles of print for openmpi make Changes to be committed: modified: Dockerfile modified: Dockerfile-template --- Dockerfile | 3 ++- Dockerfile-template | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index c55f794..54f8adc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,7 +40,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd openmpi-4.0.0 \ && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ && echo dummy printout to keep travis happy openmpi config \ - && make all install &> /wrf/libs/build_log_openmpi_make \ + && make all install \ + && echo "make all install &> /wrf/libs/build_log_openmpi_make" \ && echo dummy printout to keep travis happy openmpi make \ && cd / \ && rm -rf /wrf/libs/openmpi/BUILD_DIR diff --git a/Dockerfile-template b/Dockerfile-template index c55f794..54f8adc 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -40,7 +40,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd openmpi-4.0.0 \ && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ && echo dummy printout to keep travis happy openmpi config \ - && make all install &> /wrf/libs/build_log_openmpi_make \ + && make all install \ + && echo "make all install &> /wrf/libs/build_log_openmpi_make" \ && echo dummy printout to keep travis happy openmpi make \ && cd / \ && rm -rf /wrf/libs/openmpi/BUILD_DIR From 739efe6c8c570a7943efc303ed2f0bb6b3166290 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 18 Apr 2019 07:25:15 -0600 Subject: [PATCH 19/50] Back to RRTMG fails again module_ra_rrtmg_swf.f90:3419:0: use rrsw_kg21_f, only : absa, ka, absb, kb, forref, selfref, & internal compiler error: in gfc_trans_use_stmts, at fortran/trans-decl.c:5111 Please submit a full bug report, Removing -d, seems to mostly be OK then with RRTMG fast sw then. But on Darwin and cheyenne, the GNU 8 fixed this. Also, adding -j 3 for the parallel build. Changes to be committed: modified: .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f30b222..f7a587b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,7 +62,7 @@ script: - date - docker ps -a - date - - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d + - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real J=-j@3 - | OK=$? if [[ $OK != 0 ]] ; then From 9d62b19d14835882f2b6040fd87356603bb084d2 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 18 Apr 2019 08:23:55 -0600 Subject: [PATCH 20/50] Removing -d made compile take too long, put -d back in Modified the associated script.csh to always bypass the RRTMG FAST build Changes to be committed: modified: .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f7a587b..5c439b0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,7 +62,7 @@ script: - date - docker ps -a - date - - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real J=-j@3 + - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3 - | OK=$? if [[ $OK != 0 ]] ; then From 35011e69a7c4a59a206c0ff29adfa5eb11ad4ea0 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 18 Apr 2019 08:57:10 -0600 Subject: [PATCH 21/50] For OpenMPI build, try awk to print every 1000th line - woot --- Dockerfile | 3 ++- Dockerfile-template | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 54f8adc..e8e43fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,7 +40,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd openmpi-4.0.0 \ && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ && echo dummy printout to keep travis happy openmpi config \ - && make all install \ + && make all install | awk 'NR % 1000 == 0' \ + && echo "make all install " \ && echo "make all install &> /wrf/libs/build_log_openmpi_make" \ && echo dummy printout to keep travis happy openmpi make \ && cd / \ diff --git a/Dockerfile-template b/Dockerfile-template index 54f8adc..e8e43fe 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -40,7 +40,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd openmpi-4.0.0 \ && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ && echo dummy printout to keep travis happy openmpi config \ - && make all install \ + && make all install | awk 'NR % 1000 == 0' \ + && echo "make all install " \ && echo "make all install &> /wrf/libs/build_log_openmpi_make" \ && echo dummy printout to keep travis happy openmpi make \ && cd / \ From 93ea25c02bf12b5ef7c402abfe94599e7440a934 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 18 Apr 2019 13:11:00 -0600 Subject: [PATCH 22/50] Just print out tons of openmpi make stuff, easier --- Dockerfile | 4 ++-- Dockerfile-template | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index e8e43fe..5ff81a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,8 +40,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd openmpi-4.0.0 \ && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ && echo dummy printout to keep travis happy openmpi config \ - && make all install | awk 'NR % 1000 == 0' \ - && echo "make all install " \ + && make all install \ + && echo "make all install | awk 'NR % 1000 == 0'" \ && echo "make all install &> /wrf/libs/build_log_openmpi_make" \ && echo dummy printout to keep travis happy openmpi make \ && cd / \ diff --git a/Dockerfile-template b/Dockerfile-template index e8e43fe..5ff81a7 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -40,8 +40,8 @@ RUN source /opt/rh/devtoolset-8/enable \ && cd openmpi-4.0.0 \ && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ && echo dummy printout to keep travis happy openmpi config \ - && make all install | awk 'NR % 1000 == 0' \ - && echo "make all install " \ + && make all install \ + && echo "make all install | awk 'NR % 1000 == 0'" \ && echo "make all install &> /wrf/libs/build_log_openmpi_make" \ && echo dummy printout to keep travis happy openmpi make \ && cd / \ From e0af586b6b8f4a519a91f31b23401d48dce09e6d Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 18 Apr 2019 13:18:23 -0600 Subject: [PATCH 23/50] Add in some debug prints to .travis.yml, what is $OK --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5c439b0..7d4514d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,8 +63,11 @@ script: - docker ps -a - date - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3 + - OK=$? + - echo DAVE OK $OK + - OK=0 + - date - | - OK=$? if [[ $OK != 0 ]] ; then docker exec test_001 ls -ls WRF/compile.log.em_real.34 docker exec test_001 cat WRF/compile.log.em_real.34 From 8733b4911e7acf5319d08c7fe90f87385887ab80 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 18 Apr 2019 15:41:56 -0600 Subject: [PATCH 24/50] Lots of .travis.yml prints concerning return code for file existence in container --- .travis.yml | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7d4514d..e338936 100644 --- a/.travis.yml +++ b/.travis.yml @@ -63,18 +63,26 @@ script: - docker ps -a - date - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3 - - OK=$? - - echo DAVE OK $OK - - OK=0 - date + - OK=0 - | - if [[ $OK != 0 ]] ; then - docker exec test_001 ls -ls WRF/compile.log.em_real.34 - docker exec test_001 cat WRF/compile.log.em_real.34 - docker exec test_001 gfortran --version - docker exec test_001 gcc --version - date - else + if [ $OK -eq 0 ] ; then + echo DAVE FILE STATUS + docker exec test_001 ls -ls WRF/main/wrf.exe + OK_wrf=$? + echo DAVE OK_wrf $OK_wrf + docker exec test_001 ls -ls WRF/main/real.exe + OK_real=$? + echo DAVE OK_real $OK_real + docker exec test_001 ls -ls WRF/main/real_nmm.exe + OK_nmm=$? + echo DAVE OK_nmm $OK_nmm + docker exec test_001 ls -ls WRF/main/ideal.exe + OK_ideal=$? + echo DAVE OK_ideal $OK_ideal + fi + - | + if [ $OK_wrf -eq 0 -a ( $OK_real -eq 0 -o $OK_nmm -eq 0 -o $OK_ideal -eq 0 ) ] ; then date docker exec test_001 ls -ls WRF/main date @@ -82,6 +90,13 @@ script: date docker exec test_001 ls -ls WRF/test/em_real date + else + docker exec test_001 ls -ls WRF/main + docker exec test_001 ls -ls WRF/compile.log.em_real.34 + docker exec test_001 cat WRF/compile.log.em_real.34 + docker exec test_001 gfortran --version + docker exec test_001 gcc --version + date fi - docker stop test_001 - date From 9bcf542f9e818aa216d14c8dcd300894942619b7 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 18 Apr 2019 16:35:22 -0600 Subject: [PATCH 25/50] Fix sh if and or syntax oops in .travis.yml --- .travis.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index e338936..2430a94 100644 --- a/.travis.yml +++ b/.travis.yml @@ -81,17 +81,18 @@ script: OK_ideal=$? echo DAVE OK_ideal $OK_ideal fi + - date + - docker exec test_001 ls -ls WRF/main - | - if [ $OK_wrf -eq 0 -a ( $OK_real -eq 0 -o $OK_nmm -eq 0 -o $OK_ideal -eq 0 ) ] ; then - date - docker exec test_001 ls -ls WRF/main + if [ $OK_wrf -eq 0 ] -a ([ $OK_real -eq 0 ] -o [ $OK_nmm -eq 0 ] -o [ $OK_ideal -eq 0 ]) ; then date docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF date docker exec test_001 ls -ls WRF/test/em_real date + docker exec test_001 ls -ls WRF/wrfoutput + date else - docker exec test_001 ls -ls WRF/main docker exec test_001 ls -ls WRF/compile.log.em_real.34 docker exec test_001 cat WRF/compile.log.em_real.34 docker exec test_001 gfortran --version From cb2921de1b71a3ba65c74ecfd6091c277b7b8a3f Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 18 Apr 2019 19:02:35 -0600 Subject: [PATCH 26/50] Yet more syntax probs, freaking learn sh, dude --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2430a94..1259c06 100644 --- a/.travis.yml +++ b/.travis.yml @@ -84,7 +84,7 @@ script: - date - docker exec test_001 ls -ls WRF/main - | - if [ $OK_wrf -eq 0 ] -a ([ $OK_real -eq 0 ] -o [ $OK_nmm -eq 0 ] -o [ $OK_ideal -eq 0 ]) ; then + if [ $OK_wrf = 0 ] && ([ $OK_real = 0 ] || [ $OK_nmm = 0 ] || [ $OK_ideal = 0 ]) ; then date docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF date From cbc6116de3bca0a5328a0c7bade7a928d1a8a4ba Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 20 Apr 2019 10:33:17 -0600 Subject: [PATCH 27/50] Uses second of the two-part Docker build, should be FAST --- .travis.yml | 6 +- Dockerfile-template | 150 +------------------------------------------- 2 files changed, 5 insertions(+), 151 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1259c06..a477fe2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -93,10 +93,12 @@ script: docker exec test_001 ls -ls WRF/wrfoutput date else - docker exec test_001 ls -ls WRF/compile.log.em_real.34 - docker exec test_001 cat WRF/compile.log.em_real.34 docker exec test_001 gfortran --version docker exec test_001 gcc --version + docker exec test_001 ls -ls WRF/main + docker exec test_001 ls -ls WRF/compile.log.em_real.34 + docker exec test_001 grep Error WRF/compile.log.em_real.34 + docker exec test_001 cat WRF/compile.log.em_real.34 date fi - docker stop test_001 diff --git a/Dockerfile-template b/Dockerfile-template index 5ff81a7..f3ed10c 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -1,143 +1,7 @@ # -FROM centos:latest +FROM davegill/wrf-coop:firsttry MAINTAINER Dave Gill -ENV WRF_VERSION 4.0.3 -ENV WPS_VERSION 4.0.2 -ENV NML_VERSION 4.0.2 - -# Set up base OS environment - -RUN yum -y update -RUN yum -y install scl file gcc gcc-gfortran gcc-c++ glibc.i686 libgcc.i686 libpng-devel jasper \ - jasper-devel hostname m4 make perl tar bash tcsh time wget which zlib zlib-devel \ - openssh-clients openssh-server net-tools fontconfig libgfortran libXext libXrender \ - ImageMagick sudo epel-release git - -# Newer version of GNU compiler, required for WRF 2003 and 2008 Fortran constructs - -RUN yum -y install centos-release-scl \ - && yum -y install devtoolset-8 \ - && yum -y install devtoolset-8-gcc devtoolset-8-gcc-gfortran devtoolset-8-gcc-c++ \ - && scl enable devtoolset-8 bash \ - && scl enable devtoolset-8 tcsh - -RUN groupadd wrf -g 9999 -RUN useradd -u 9999 -g wrf -G wheel -M -d /wrf wrfuser -RUN mkdir /wrf \ - && chown -R wrfuser:wrf /wrf \ - && chmod 6755 /wrf - -# Build the libraries with a parallel Make -ENV J 4 - -# Build OpenMPI -RUN mkdir -p /wrf/libs/openmpi/BUILD_DIR -RUN source /opt/rh/devtoolset-8/enable \ - && cd /wrf/libs/openmpi/BUILD_DIR \ - && curl -L -O https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.0.tar.gz \ - && tar -xf openmpi-4.0.0.tar.gz \ - && cd openmpi-4.0.0 \ - && ./configure --prefix=/usr/local &> /wrf/libs/build_log_openmpi_config \ - && echo dummy printout to keep travis happy openmpi config \ - && make all install \ - && echo "make all install | awk 'NR % 1000 == 0'" \ - && echo "make all install &> /wrf/libs/build_log_openmpi_make" \ - && echo dummy printout to keep travis happy openmpi make \ - && cd / \ - && rm -rf /wrf/libs/openmpi/BUILD_DIR - -# Build HDF5 libraries -RUN mkdir -p /wrf/libs/hdf5/BUILD_DIR -RUN source /opt/rh/devtoolset-8/enable \ - && cd /wrf/libs/hdf5/BUILD_DIR \ - && git clone https://bitbucket.hdfgroup.org/scm/hdffv/hdf5.git \ - && cd hdf5 \ - && git checkout hdf5-1_10_4 \ - && ./configure --enable-fortran --enable-cxx --prefix=/usr/local/ &> /wrf/libs/build_log_hdf5_config \ - && echo dummy printout to keep travis happy hdf5 config \ - && make install &> /wrf/libs/build_log_hdf5_make \ - && echo dummy printout to keep travis happy hdf5 make \ - && rm -rf /wrf/libs/hdf5/BUILD_DIR -ENV LD_LIBRARY_PATH /usr/local/lib - -# Build netCDF C and Fortran libraries -RUN yum -y install libcurl-devel zlib-devel -ENV NETCDF /wrf/libs/netcdf -RUN mkdir -p ${NETCDF}/BUILD_DIR -RUN source /opt/rh/devtoolset-8/enable \ - && cd ${NETCDF}/BUILD_DIR \ - && curl -L -O https://github.com/Unidata/netcdf-c/archive/v4.6.2.tar.gz \ - && curl -L -O https://github.com/Unidata/netcdf-fortran/archive/v4.4.5.tar.gz \ - && tar -xf v4.6.2.tar.gz \ - && cd netcdf-c-4.6.2 \ - && ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncc_config \ - && echo dummy printout to keep travis happy ncc config \ - && make install &> /wrf/libs/build_log_ncc_make \ - && echo dummy printout to keep travis happy ncc make -RUN source /opt/rh/devtoolset-8/enable \ - && env \ - && cd ${NETCDF}/BUILD_DIR \ - && tar -xf v4.4.5.tar.gz \ - && cd netcdf-fortran-4.4.5/ \ - && export LD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH} \ - && CPPFLAGS=-I${NETCDF}/include LDFLAGS=-L${NETCDF}/lib ./configure --prefix=${NETCDF} &> /wrf/libs/build_log_ncf_config \ - && echo dummy printout to keep travis happy ncf config \ - && make install &> /wrf/libs/build_log_ncf_make \ - && echo dummy printout to keep travis happy ncf make - -RUN mkdir -p /var/run/sshd \ - && ssh-keygen -A \ - && sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config \ - && sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/g' /etc/ssh/sshd_config \ - && sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config - -RUN mkdir -p /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput \ - && chown -R wrfuser:wrf /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local \ - && chmod 6755 /wrf /wrf/WPS_GEOG /wrf/wrfinput /wrf/wrfoutput /usr/local - -# Download NCL -RUN curl -SL https://ral.ucar.edu/sites/default/files/public/projects/ncar-docker-wrf/nclncarg-6.3.0.linuxcentos7.0x8664nodapgcc482.tar.gz | tar zxC /usr/local -ENV NCARG_ROOT /usr/local - -# Set environment for interactive container shells -RUN echo export LDFLAGS="-lm" >> /etc/bashrc \ - && echo export NETCDF=${NETCDF} >> /etc/bashrc \ - && echo export JASPERINC=/usr/include/jasper/ >> /etc/bashrc \ - && echo export JASPERLIB=/usr/lib64/ >> /etc/bashrc \ - && echo export LD_LIBRARY_PATH="/opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8:/usr/lib64/openmpi/lib:${NETCDF}/lib:${LD_LIBRARY_PATH}" >> /etc/bashrc \ - && echo export PATH=".:/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/openmpi/bin:${NETCDF}/bin:$PATH" >> /etc/bashrc - -RUN echo setenv LDFLAGS "-lm" >> /etc/csh.cshrc \ - && echo setenv NETCDF "${NETCDF}" >> /etc/csh.cshrc \ - && echo setenv JASPERINC "/usr/include/jasper/" >> /etc/csh.cshrc \ - && echo setenv JASPERLIB "/usr/lib64/" >> /etc/csh.cshrc \ - && echo setenv LD_LIBRARY_PATH "/opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8:/usr/lib64/openmpi/lib:${NETCDF}/lib:${LD_LIBRARY_PATH}" >> /etc/csh.cshrc \ - && echo setenv PATH ".:/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/openmpi/bin:${NETCDF}/bin:$PATH" >> /etc/csh.cshrc - -RUN mkdir /wrf/.ssh ; echo "StrictHostKeyChecking no" > /wrf/.ssh/config -COPY default-mca-params.conf /wrf/.openmpi/mca-params.conf -RUN mkdir -p /wrf/.openmpi -RUN chown -R wrfuser:wrf /wrf/ - -# all root steps completed above, now below as regular userID wrfuser -USER wrfuser -WORKDIR /wrf - -# Download data -ARG argname=tutorial -RUN echo DAVE $argname -RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_low_res_mandatory.tar.gz | tar -xzC /wrf/WPS_GEOG ; fi -RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/colorado_march16.new.tar.gz | tar -xzC /wrf/wrfinput ; fi -RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/src/namelists_v$NML_VERSION.tar.gz | tar -xzC /wrf/wrfinput ; fi -RUN if [ "$argname" = "tutorial" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/WRF_NCL_scripts.tar.gz | tar -xzC /wrf ; fi -RUN if [ "$argname" = "regtest" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/dave/DATA/Data_small/data_SMALL.tar.gz | tar -xzC /wrf ; fi -RUN if [ "$argname" = "regtest" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/dave/nml.tar.gz | tar -xzC /wrf ; fi -RUN if [ "$argname" = "regtest" ] ; then curl -SL http://www2.mmm.ucar.edu/wrf/dave/script.tar | tar -xC /wrf ; fi - -# Download wps source -RUN if [ "$argname" = "tutorial" ] ; then git clone https://github.com/wrf-model/WPS.git WPS ; fi - RUN echo _HERE1_ RUN git clone https://github.com/davegill/WRF.git davegill/WRF \ && cd davegill/WRF \ @@ -147,17 +11,5 @@ RUN git clone https://github.com/davegill/WRF.git davegill/WRF \ && mv WRF /wrf/WRF RUN echo _HERE2_ -ENV JASPERINC /usr/include/jasper -ENV JASPERLIB /usr/lib64 -ENV NETCDF_classic 1 -ENV LD_LIBRARY_PATH /opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8:/usr/lib64/openmpi/lib:${NETCDF}/lib:${LD_LIBRARY_PATH} -ENV PATH .:/opt/rh/devtoolset-8/root/usr/bin:/usr/lib64/openmpi/bin:${NETCDF}/bin:$PATH - -RUN ssh-keygen -f /wrf/.ssh/id_rsa -t rsa -N '' \ - && chmod 600 /wrf/.ssh/config \ - && chmod 700 /wrf/.ssh \ - && cp /wrf/.ssh/id_rsa.pub /wrf/.ssh/authorized_keys - VOLUME /wrf CMD ["/bin/tcsh"] -# From 04e46bb2b9c510ebdd01114e3a3f6da4697d1415 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 20 Apr 2019 11:09:47 -0600 Subject: [PATCH 28/50] Prints in .travis.yml to see what is happening with mpirun command --- .travis.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index a477fe2..62638fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -67,19 +67,19 @@ script: - OK=0 - | if [ $OK -eq 0 ] ; then - echo DAVE FILE STATUS + echo FILE STATUS docker exec test_001 ls -ls WRF/main/wrf.exe OK_wrf=$? - echo DAVE OK_wrf $OK_wrf + echo OK_wrf $OK_wrf docker exec test_001 ls -ls WRF/main/real.exe OK_real=$? - echo DAVE OK_real $OK_real + echo OK_real $OK_real docker exec test_001 ls -ls WRF/main/real_nmm.exe OK_nmm=$? - echo DAVE OK_nmm $OK_nmm + echo OK_nmm $OK_nmm docker exec test_001 ls -ls WRF/main/ideal.exe OK_ideal=$? - echo DAVE OK_ideal $OK_ideal + echo OK_ideal $OK_ideal fi - date - docker exec test_001 ls -ls WRF/main @@ -88,9 +88,11 @@ script: date docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF date + docker exec test_001 cat WRF/test/em_real/real.print.out + date docker exec test_001 ls -ls WRF/test/em_real date - docker exec test_001 ls -ls WRF/wrfoutput + docker exec test_001 ls -ls wrfoutput date else docker exec test_001 gfortran --version From 8f456397c1ef985346ac4c114cca19525044b03a Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 20 Apr 2019 11:35:25 -0600 Subject: [PATCH 29/50] prints in .travis.yml, using too many "slots" with MPI --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index 62638fa..54f523d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,6 +62,11 @@ script: - date - docker ps -a - date + - docker exec test_001 mpirun --version + - docker exec test_001 mpirun -np 1 true + - docker exec test_001 mpirun -np 2 true + - docker exec test_001 mpirun -np 3 true + - docker exec test_001 mpirun -np 3 --oversubscribe true - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3 - date - OK=0 From d3ee983b807e48a257da1a5390d519f8ae652f69 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 20 Apr 2019 12:03:37 -0600 Subject: [PATCH 30/50] Use latest Dockerfile (not first try, oops) --- Dockerfile-template | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/Dockerfile-template b/Dockerfile-template index f3ed10c..aa75191 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -1,15 +1,23 @@ # -FROM davegill/wrf-coop:firsttry +FROM davegill/wrf-coop:secondtry MAINTAINER Dave Gill -RUN echo _HERE1_ -RUN git clone https://github.com/davegill/WRF.git davegill/WRF \ - && cd davegill/WRF \ - && git fetch origin +refs/pull/4/merge: \ - && git checkout -qf FETCH_HEAD \ - && cd .. \ - && mv WRF /wrf/WRF -RUN echo _HERE2_ +#RUN echo _HERE1_ +#RUN git clone https://github.com/davegill/WRF.git davegill/WRF \ +# && cd davegill/WRF \ +# && git fetch origin +refs/pull/4/merge: \ +# && git checkout -qf FETCH_HEAD \ +# && cd .. \ +# && mv WRF /wrf/WRF +#RUN echo _HERE2_ + +RUN git clone https://github.com/wrf-model/WRF.git WRF \ + && cd WRF \ + && git checkout release-v4.1.1 \ + && git checkout master \ + && git checkout develop \ + && git checkout release-v4.1 \ + && cd .. VOLUME /wrf CMD ["/bin/tcsh"] From e784e93a38705c887f39f09e30c525dff30949c8 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 20 Apr 2019 15:00:15 -0600 Subject: [PATCH 31/50] Use thirdtry Dockerfile 1. Has build WRF and repeat if necessary script.csh --- Dockerfile-template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile-template b/Dockerfile-template index aa75191..ffadc49 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -1,5 +1,5 @@ # -FROM davegill/wrf-coop:secondtry +FROM davegill/wrf-coop:thirdtry MAINTAINER Dave Gill #RUN echo _HERE1_ From 42dc9a8fc5df423eec2c6ee8d74085b846f57311 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 20 Apr 2019 17:31:05 -0600 Subject: [PATCH 32/50] Supply NP=3, for env setting for MPI - how many MPI ranks Changes to be committed: modified: .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 54f523d..c539a1d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -91,7 +91,7 @@ script: - | if [ $OK_wrf = 0 ] && ([ $OK_real = 0 ] || [ $OK_nmm = 0 ] || [ $OK_ideal = 0 ]) ; then date - docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF + docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF NP=3 date docker exec test_001 cat WRF/test/em_real/real.print.out date From 9e5e5b9781a5c76d098fc2510d88385714062d8c Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 20 Apr 2019 19:56:02 -0600 Subject: [PATCH 33/50] This is the 4th try for using the faster Dockerfile --- Dockerfile-template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile-template b/Dockerfile-template index ffadc49..3c40384 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -1,5 +1,5 @@ # -FROM davegill/wrf-coop:thirdtry +FROM davegill/wrf-coop:fourthtry MAINTAINER Dave Gill #RUN echo _HERE1_ From 08416bcd46c86f1ddb3c18c71d7d3d0eadaac17d Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Sat, 20 Apr 2019 20:19:37 -0600 Subject: [PATCH 34/50] Remove tests to see how many MPI ranks were available --- .travis.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index c539a1d..fec7c8b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -62,11 +62,6 @@ script: - date - docker ps -a - date - - docker exec test_001 mpirun --version - - docker exec test_001 mpirun -np 1 true - - docker exec test_001 mpirun -np 2 true - - docker exec test_001 mpirun -np 3 true - - docker exec test_001 mpirun -np 3 --oversubscribe true - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3 - date - OK=0 @@ -91,7 +86,7 @@ script: - | if [ $OK_wrf = 0 ] && ([ $OK_real = 0 ] || [ $OK_nmm = 0 ] || [ $OK_ideal = 0 ]) ; then date - docker exec test_001 ./script.csh RUN em_real 34 em_real 03DF NP=3 + docker exec test_001 ./script.csh RUN em_real 34 em_real 01 NP=3 date docker exec test_001 cat WRF/test/em_real/real.print.out date From 4efda61defbc1dff05381582ca8ca4b2fcc1e4d0 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 15:33:31 -0600 Subject: [PATCH 35/50] .travis.yml: use matrix for three em_real jobs at same time --- .travis.yml | 48 ++++++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/.travis.yml b/.travis.yml index fec7c8b..103ea0f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,14 +27,10 @@ addons: #====================================================================== matrix: include: - - os: linux - compiler: gcc - sudo: false - dist: trusty + - os:linux compiler:gcc sudo:false dist:trusty name:real_s core:em_real par:32 nest:1 data_loc:em_real test:07NE proc:1 cenv:WRF_EM_CORE=1 + - os:linux compiler:gcc sudo:false dist:trusty name:real_o core:em_real par:33 nest:1 data_loc:em_real test:07NE proc:3 cenv:WRF_EM_CORE=1 + - os:linux compiler:gcc sudo:false dist:trusty name:real_m core:em_real par:34 nest:1 data_loc:em_real test:07NE proc:3 cenv:WRF_EM_CORE=1 -#====================================================================== -# Docker does not work on Mac -#====================================================================== services: - docker @@ -58,54 +54,54 @@ script: - date - docker images -a - date - - docker run -d -t --name test_001 wrf_regtest + - docker run -d -t --name ${name} wrf_regtest - date - docker ps -a - date - - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3 + - docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} -d J=-j@3 $cenv - date - OK=0 - | if [ $OK -eq 0 ] ; then echo FILE STATUS - docker exec test_001 ls -ls WRF/main/wrf.exe + docker exec ${name} ls -ls WRF/main/wrf.exe OK_wrf=$? echo OK_wrf $OK_wrf - docker exec test_001 ls -ls WRF/main/real.exe + docker exec ${name} ls -ls WRF/main/real.exe OK_real=$? echo OK_real $OK_real - docker exec test_001 ls -ls WRF/main/real_nmm.exe + docker exec ${name} ls -ls WRF/main/real_nmm.exe OK_nmm=$? echo OK_nmm $OK_nmm - docker exec test_001 ls -ls WRF/main/ideal.exe + docker exec ${name} ls -ls WRF/main/ideal.exe OK_ideal=$? echo OK_ideal $OK_ideal fi - date - - docker exec test_001 ls -ls WRF/main + - docker exec ${name} ls -ls WRF/main - | if [ $OK_wrf = 0 ] && ([ $OK_real = 0 ] || [ $OK_nmm = 0 ] || [ $OK_ideal = 0 ]) ; then date - docker exec test_001 ./script.csh RUN em_real 34 em_real 01 NP=3 + docker exec ${name} ./script.csh RUN ${core} ${par} dat_loc ${test} NP=${proc} OMP_NUM_THREADS=${proc} date - docker exec test_001 cat WRF/test/em_real/real.print.out + docker exec ${name} cat WRF/test/${core}/real.print.out date - docker exec test_001 ls -ls WRF/test/em_real + docker exec ${name} ls -ls WRF/test/${core} date - docker exec test_001 ls -ls wrfoutput + docker exec ${name} ls -ls wrfoutput date else - docker exec test_001 gfortran --version - docker exec test_001 gcc --version - docker exec test_001 ls -ls WRF/main - docker exec test_001 ls -ls WRF/compile.log.em_real.34 - docker exec test_001 grep Error WRF/compile.log.em_real.34 - docker exec test_001 cat WRF/compile.log.em_real.34 + docker exec ${name} gfortran --version + docker exec ${name} gcc --version + docker exec ${name} ls -ls WRF/main + docker exec ${name} ls -ls WRF/compile.log.${data_loc}.${par} + docker exec ${name} grep Error WRF/compile.log.${data_loc}.${par} + docker exec ${name} cat WRF/compile.log.${data_loc}.${par} date fi - - docker stop test_001 + - docker stop ${name} - date - - docker rm test_001 + - docker rm ${name} - date - docker rmi wrf_regtest - date From a28cf896d2f330f831bae69d43afec8b53fc1c7c Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 15:36:27 -0600 Subject: [PATCH 36/50] .travis.yml: maybe syntax error? adding space after : in matrix lines --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 103ea0f..046a850 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,9 +27,9 @@ addons: #====================================================================== matrix: include: - - os:linux compiler:gcc sudo:false dist:trusty name:real_s core:em_real par:32 nest:1 data_loc:em_real test:07NE proc:1 cenv:WRF_EM_CORE=1 - - os:linux compiler:gcc sudo:false dist:trusty name:real_o core:em_real par:33 nest:1 data_loc:em_real test:07NE proc:3 cenv:WRF_EM_CORE=1 - - os:linux compiler:gcc sudo:false dist:trusty name:real_m core:em_real par:34 nest:1 data_loc:em_real test:07NE proc:3 cenv:WRF_EM_CORE=1 + - os: linux compiler: gcc sudo: false dist: trusty name: real_s core: em_real par: 32 nest: 1 data_loc: em_real test: 07NE proc: 1 cenv: WRF_EM_CORE=1 + - os: linux compiler: gcc sudo: false dist: trusty name: real_o core: em_real par: 33 nest: 1 data_loc: em_real test: 07NE proc: 3 cenv: WRF_EM_CORE=1 + - os: linux compiler: gcc sudo: false dist: trusty name: real_m core: em_real par: 34 nest: 1 data_loc: em_real test: 07NE proc: 3 cenv: WRF_EM_CORE=1 services: - docker From 26c930a4735171dc504b33f79205f5fdccb81b8f Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 16:06:07 -0600 Subject: [PATCH 37/50] .travis.yml: back off to a single test, still a single line, does this work? --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 046a850..875c5d4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,8 +28,6 @@ addons: matrix: include: - os: linux compiler: gcc sudo: false dist: trusty name: real_s core: em_real par: 32 nest: 1 data_loc: em_real test: 07NE proc: 1 cenv: WRF_EM_CORE=1 - - os: linux compiler: gcc sudo: false dist: trusty name: real_o core: em_real par: 33 nest: 1 data_loc: em_real test: 07NE proc: 3 cenv: WRF_EM_CORE=1 - - os: linux compiler: gcc sudo: false dist: trusty name: real_m core: em_real par: 34 nest: 1 data_loc: em_real test: 07NE proc: 3 cenv: WRF_EM_CORE=1 services: - docker From bc39f5dd437471160bd700d45ef61d5adf38d6a6 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 16:13:48 -0600 Subject: [PATCH 38/50] Hmmm, well back to a previous .travis.yml, does this STILL work? --- .travis.yml | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index 875c5d4..fec7c8b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,8 +27,14 @@ addons: #====================================================================== matrix: include: - - os: linux compiler: gcc sudo: false dist: trusty name: real_s core: em_real par: 32 nest: 1 data_loc: em_real test: 07NE proc: 1 cenv: WRF_EM_CORE=1 + - os: linux + compiler: gcc + sudo: false + dist: trusty +#====================================================================== +# Docker does not work on Mac +#====================================================================== services: - docker @@ -52,54 +58,54 @@ script: - date - docker images -a - date - - docker run -d -t --name ${name} wrf_regtest + - docker run -d -t --name test_001 wrf_regtest - date - docker ps -a - date - - docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} -d J=-j@3 $cenv + - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3 - date - OK=0 - | if [ $OK -eq 0 ] ; then echo FILE STATUS - docker exec ${name} ls -ls WRF/main/wrf.exe + docker exec test_001 ls -ls WRF/main/wrf.exe OK_wrf=$? echo OK_wrf $OK_wrf - docker exec ${name} ls -ls WRF/main/real.exe + docker exec test_001 ls -ls WRF/main/real.exe OK_real=$? echo OK_real $OK_real - docker exec ${name} ls -ls WRF/main/real_nmm.exe + docker exec test_001 ls -ls WRF/main/real_nmm.exe OK_nmm=$? echo OK_nmm $OK_nmm - docker exec ${name} ls -ls WRF/main/ideal.exe + docker exec test_001 ls -ls WRF/main/ideal.exe OK_ideal=$? echo OK_ideal $OK_ideal fi - date - - docker exec ${name} ls -ls WRF/main + - docker exec test_001 ls -ls WRF/main - | if [ $OK_wrf = 0 ] && ([ $OK_real = 0 ] || [ $OK_nmm = 0 ] || [ $OK_ideal = 0 ]) ; then date - docker exec ${name} ./script.csh RUN ${core} ${par} dat_loc ${test} NP=${proc} OMP_NUM_THREADS=${proc} + docker exec test_001 ./script.csh RUN em_real 34 em_real 01 NP=3 date - docker exec ${name} cat WRF/test/${core}/real.print.out + docker exec test_001 cat WRF/test/em_real/real.print.out date - docker exec ${name} ls -ls WRF/test/${core} + docker exec test_001 ls -ls WRF/test/em_real date - docker exec ${name} ls -ls wrfoutput + docker exec test_001 ls -ls wrfoutput date else - docker exec ${name} gfortran --version - docker exec ${name} gcc --version - docker exec ${name} ls -ls WRF/main - docker exec ${name} ls -ls WRF/compile.log.${data_loc}.${par} - docker exec ${name} grep Error WRF/compile.log.${data_loc}.${par} - docker exec ${name} cat WRF/compile.log.${data_loc}.${par} + docker exec test_001 gfortran --version + docker exec test_001 gcc --version + docker exec test_001 ls -ls WRF/main + docker exec test_001 ls -ls WRF/compile.log.em_real.34 + docker exec test_001 grep Error WRF/compile.log.em_real.34 + docker exec test_001 cat WRF/compile.log.em_real.34 date fi - - docker stop ${name} + - docker stop test_001 - date - - docker rm ${name} + - docker rm test_001 - date - docker rmi wrf_regtest - date From e54a2e1176bcb55caae60d5869ba742f545424f5 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 16:30:58 -0600 Subject: [PATCH 39/50] .travis.yml: OK that was fine, now swap : for = in matrix for single line syntax, maybe? --- .travis.yml | 46 ++++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/.travis.yml b/.travis.yml index fec7c8b..256fdf2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,14 +27,8 @@ addons: #====================================================================== matrix: include: - - os: linux - compiler: gcc - sudo: false - dist: trusty + - os=linux compiler=gcc sudo=false dist=trusty name=real_s core=em_real par=32 nest=1 data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' -#====================================================================== -# Docker does not work on Mac -#====================================================================== services: - docker @@ -58,54 +52,54 @@ script: - date - docker images -a - date - - docker run -d -t --name test_001 wrf_regtest + - docker run -d -t --name ${name} wrf_regtest - date - docker ps -a - date - - docker exec test_001 ./script.csh BUILD CLEAN 34 1 em_real -d J=-j@3 + - docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} -d J=-j@3 $cenv - date - OK=0 - | if [ $OK -eq 0 ] ; then echo FILE STATUS - docker exec test_001 ls -ls WRF/main/wrf.exe + docker exec ${name} ls -ls WRF/main/wrf.exe OK_wrf=$? echo OK_wrf $OK_wrf - docker exec test_001 ls -ls WRF/main/real.exe + docker exec ${name} ls -ls WRF/main/real.exe OK_real=$? echo OK_real $OK_real - docker exec test_001 ls -ls WRF/main/real_nmm.exe + docker exec ${name} ls -ls WRF/main/real_nmm.exe OK_nmm=$? echo OK_nmm $OK_nmm - docker exec test_001 ls -ls WRF/main/ideal.exe + docker exec ${name} ls -ls WRF/main/ideal.exe OK_ideal=$? echo OK_ideal $OK_ideal fi - date - - docker exec test_001 ls -ls WRF/main + - docker exec ${name} ls -ls WRF/main - | if [ $OK_wrf = 0 ] && ([ $OK_real = 0 ] || [ $OK_nmm = 0 ] || [ $OK_ideal = 0 ]) ; then date - docker exec test_001 ./script.csh RUN em_real 34 em_real 01 NP=3 + docker exec ${name} ./script.csh RUN ${core} ${par} ${data_loc} ${test} NP=${proc} OMP_NUM_THREADS=${proc} date - docker exec test_001 cat WRF/test/em_real/real.print.out + docker exec ${name} cat WRF/test/${core}/real.print.out date - docker exec test_001 ls -ls WRF/test/em_real + docker exec ${name} ls -ls WRF/test/${core} date - docker exec test_001 ls -ls wrfoutput + docker exec ${name} ls -ls wrfoutput date else - docker exec test_001 gfortran --version - docker exec test_001 gcc --version - docker exec test_001 ls -ls WRF/main - docker exec test_001 ls -ls WRF/compile.log.em_real.34 - docker exec test_001 grep Error WRF/compile.log.em_real.34 - docker exec test_001 cat WRF/compile.log.em_real.34 + docker exec ${name} gfortran --version + docker exec ${name} gcc --version + docker exec ${name} ls -ls WRF/main + docker exec ${name} ls -ls WRF/compile.log.${data_loc}.${par} + docker exec ${name} grep Error WRF/compile.log.${data_loc}.${par} + docker exec ${name} cat WRF/compile.log.${data_loc}.${par} date fi - - docker stop test_001 + - docker stop ${name} - date - - docker rm test_001 + - docker rm ${name} - date - docker rmi wrf_regtest - date From 463edfdbc33dc40becdf99409648ee1e30b4e7ef Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 16:44:13 -0600 Subject: [PATCH 40/50] .travis.yml: make all my variables ENV --- .travis.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 256fdf2..c928f4b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,11 @@ addons: #====================================================================== matrix: include: - - os=linux compiler=gcc sudo=false dist=trusty name=real_s core=em_real par=32 nest=1 data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' + - os: linux + compiler: gcc + sudo: false + dist: trusty + env name=real_s core=em_real par=32 nest=1 data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' services: - docker From 4ae5675d33d5a5b542f7c2f7531915cc7ec5b421 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 16:48:11 -0600 Subject: [PATCH 41/50] .travis.yml: make env: then matrix:, get rid of all os linux trusty stuff --- .travis.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index c928f4b..47de228 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,13 +25,9 @@ addons: #====================================================================== # Build Matrix #====================================================================== -matrix: - include: - - os: linux - compiler: gcc - sudo: false - dist: trusty - env name=real_s core=em_real par=32 nest=1 data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' +env: + matrix: + - name=real_s core=em_real par=32 nest=1 data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' services: - docker From a056f41787abd2433242d63905020f79213498e7 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 17:11:30 -0600 Subject: [PATCH 42/50] .travis.yml: cleanup unnecessary parts 1. cenv gets {}, not required, but conventional for script 2. zap entire "addons" with the "apt" "ubuntu" packages" and "gcc" stuff 3. remove language=fortran, never used sine we are doing containers 4. make branches of interest: master, release-v*, and develop --- .travis.yml | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/.travis.yml b/.travis.yml index 47de228..e7660d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,11 @@ #====================================================================== -# Project settings +# Which branches are impacted by this #====================================================================== -# Only build master. branches: only: - master - -language: fortran - -#====================================================================== -# Environment -#====================================================================== - -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gcc-8 - - gfortran-8 - - g++-8 - - lcov + - develop + - /^release-v.*$/ #====================================================================== # Build Matrix @@ -56,7 +41,7 @@ script: - date - docker ps -a - date - - docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} -d J=-j@3 $cenv + - docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} -d J=-j@3 ${cenv} - date - OK=0 - | From 194d0f32f71a70af8114cd3e03495e16a5600e97 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 17:49:10 -0600 Subject: [PATCH 43/50] .travis.yml and Dockerfile-template: 3 matrix tests, use fifthtry dockerhub version --- .travis.yml | 2 ++ Dockerfile-template | 9 ++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index e7660d7..c26c09b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,8 @@ branches: env: matrix: - name=real_s core=em_real par=32 nest=1 data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' + - name=real_o core=em_real par=33 nest=1 data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' + - name=real_m core=em_real par=34 nest=1 data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' services: - docker diff --git a/Dockerfile-template b/Dockerfile-template index 3c40384..9812d77 100644 --- a/Dockerfile-template +++ b/Dockerfile-template @@ -1,5 +1,5 @@ # -FROM davegill/wrf-coop:fourthtry +FROM davegill/wrf-coop:fifthtry MAINTAINER Dave Gill #RUN echo _HERE1_ @@ -13,11 +13,10 @@ MAINTAINER Dave Gill RUN git clone https://github.com/wrf-model/WRF.git WRF \ && cd WRF \ - && git checkout release-v4.1.1 \ - && git checkout master \ - && git checkout develop \ - && git checkout release-v4.1 \ + && git checkout release-v4.1.2 \ && cd .. +RUN curl -SL http://www2.mmm.ucar.edu/wrf/dave/script.tar | tar -xC /wrf + VOLUME /wrf CMD ["/bin/tcsh"] From 992efcb387738374d143546f1cf126bb23e9b23e Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 18:26:36 -0600 Subject: [PATCH 44/50] .travis.yml: add NMM tests to ARW, 5 total builds --- .travis.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index c26c09b..78775ad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,9 +12,11 @@ branches: #====================================================================== env: matrix: - - name=real_s core=em_real par=32 nest=1 data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' - - name=real_o core=em_real par=33 nest=1 data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' - - name=real_m core=em_real par=34 nest=1 data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' + - name=real_s core=em_real par=32 nest=1 data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' + - name=real_o core=em_real par=33 nest=1 data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' + - name=real_m core=em_real par=34 nest=1 data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' + - name=nmm_s core=nmm_real par=32 nest=1 data_loc=nmm_nest test=01 proc=1 cenv='WRF_NMM_CORE=1' + - name=nmm_m core=nmm_real par=34 nest=1 data_loc=nmm_nest test=01 proc=3 cenv='WRF_NMM_CORE=1' services: - docker From b19bbf70cb487473f59672f949483458d8dab0dc Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 19:15:45 -0600 Subject: [PATCH 45/50] .travis.yml: all 24 builds, with one test each - chem may bring down the team --- .travis.yml | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 78775ad..bef30a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,11 +12,30 @@ branches: #====================================================================== env: matrix: - - name=real_s core=em_real par=32 nest=1 data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' - - name=real_o core=em_real par=33 nest=1 data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' - - name=real_m core=em_real par=34 nest=1 data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' - - name=nmm_s core=nmm_real par=32 nest=1 data_loc=nmm_nest test=01 proc=1 cenv='WRF_NMM_CORE=1' - - name=nmm_m core=nmm_real par=34 nest=1 data_loc=nmm_nest test=01 proc=3 cenv='WRF_NMM_CORE=1' + - name=real_s core=em_real par=32 nest=1 flag='-d' data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' + - name=real_o core=em_real par=33 nest=1 flag='-d' data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' + - name=real_m core=em_real par=34 nest=1 flag='-d' data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' + - name=nmm_s core=nmm_real par=32 nest=1 flag='-d' data_loc=nmm_nest test=01 proc=1 cenv='WRF_NMM_CORE=1' + - name=nmm_m core=nmm_real par=34 nest=1 flag='-d' data_loc=nmm_nest test=01 proc=3 cenv='WRF_NMM_CORE=1' + - name=chem_s core=em_real par=32 nest=1 flag='-d' data_loc=em_chem test=1 proc=1 cenv='WRF_CHEM=1' + - name=chem_m core=em_real par=34 nest=1 flag='-d' data_loc=em_chem test=1 proc=3 cenv='WRF_CHEM=1' + - name=qss_s core=em_quarter_ss par=32 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=1 cenv='WRF_EM_CORE=1' + - name=qss_o core=em_quarter_ss par=33 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' + - name=qss_m core=em_quarter_ss par=34 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' + - name=bw_s core=em_b_wave par=32 nest=1 flag='-d' data_loc=em_b_wave test=1NE proc=1 cenv='WRF_EM_CORE=1' + - name=bw_o core=em_b_wave par=33 nest=1 flag='-d' data_loc=em_b_wave test=1NE proc=3 cenv='WRF_EM_CORE=1' + - name=bw_m core=em_b_wave par=34 nest=1 flag='-d' data_loc=em_b_wave test=1NE proc=3 cenv='WRF_EM_CORE=1' + - name=real8_s core=em_real par=32 nest=1 flag='-d -r8' data_loc=em_real8 test=14 proc=1 cenv='WRF_EM_CORE=1' + - name=real8_o core=em_real par=33 nest=1 flag='-d -r8' data_loc=em_real8 test=14 proc=3 cenv='WRF_EM_CORE=1' + - name=real8_m core=em_real par=34 nest=1 flag='-d -r8' data_loc=em_real8 test=14 proc=3 cenv='WRF_EM_CORE=1' + - name=qss8_s core=em_quarter_ss par=32 nest=1 flag='-d -r8' data_loc=em_quarter_ss8 test=03 proc=1 cenv='WRF_EM_CORE=1' + - name=qss8_o core=em_quarter_ss par=33 nest=1 flag='-d -r8' data_loc=em_quarter_ss8 test=03 proc=3 cenv='WRF_EM_CORE=1' + - name=qss8_m core=em_quarter_ss par=34 nest=1 flag='-d -r8' data_loc=em_quarter_ss8 test=03 proc=3 cenv='WRF_EM_CORE=1' + - name=move_m core=em_real par=34 nest=3 flag='-d' data_loc=em_move test=01 proc=3 cenv='WRF_EM_CORE=1' + - name=fire_s core=em_fire par=32 nest=1 flag='-d' data_loc=em_fire test=01 proc=1 cenv='WRF_EM_CORE=1' + - name=fire_o core=em_fire par=33 nest=1 flag='-d' data_loc=em_fire test=01 proc=3 cenv='WRF_EM_CORE=1' + - name=fire_m core=em_fire par=34 nest=1 flag='-d' data_loc=em_fire test=01 proc=3 cenv='WRF_EM_CORE=1' + - name=hill_s core=em_hill2d_x par=32 nest=0 flag='-d' data_loc=em_hill2d_x test=01 proc=1 cenv='WRF_EM_CORE=1' services: - docker @@ -45,7 +64,7 @@ script: - date - docker ps -a - date - - docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} -d J=-j@3 ${cenv} + - docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} ${flag} J=-j@3 ${cenv} - date - OK=0 - | From 0d094f308a52b41d8c2bb6fcce81b8104d047666 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 20:49:53 -0600 Subject: [PATCH 46/50] .travis.yml: Zap both chem tests, take too long for travis --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index bef30a0..ee8978d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,8 +17,6 @@ env: - name=real_m core=em_real par=34 nest=1 flag='-d' data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' - name=nmm_s core=nmm_real par=32 nest=1 flag='-d' data_loc=nmm_nest test=01 proc=1 cenv='WRF_NMM_CORE=1' - name=nmm_m core=nmm_real par=34 nest=1 flag='-d' data_loc=nmm_nest test=01 proc=3 cenv='WRF_NMM_CORE=1' - - name=chem_s core=em_real par=32 nest=1 flag='-d' data_loc=em_chem test=1 proc=1 cenv='WRF_CHEM=1' - - name=chem_m core=em_real par=34 nest=1 flag='-d' data_loc=em_chem test=1 proc=3 cenv='WRF_CHEM=1' - name=qss_s core=em_quarter_ss par=32 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=1 cenv='WRF_EM_CORE=1' - name=qss_o core=em_quarter_ss par=33 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' - name=qss_m core=em_quarter_ss par=34 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' @@ -37,6 +35,10 @@ env: - name=fire_m core=em_fire par=34 nest=1 flag='-d' data_loc=em_fire test=01 proc=3 cenv='WRF_EM_CORE=1' - name=hill_s core=em_hill2d_x par=32 nest=0 flag='-d' data_loc=em_hill2d_x test=01 proc=1 cenv='WRF_EM_CORE=1' +# Chemistry takes too long to build, always errors out of Travis +# - name=chem_s core=em_real par=32 nest=1 flag='-d' data_loc=em_chem test=1 proc=1 cenv='WRF_CHEM=1' +# - name=chem_m core=em_real par=34 nest=1 flag='-d' data_loc=em_chem test=1 proc=3 cenv='WRF_CHEM=1' + services: - docker From 9aeaab94b89a12f4e85e3240745b8bd3296df91f Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Wed, 19 Jun 2019 22:03:02 -0600 Subject: [PATCH 47/50] .travis.yml: add travis_wait in front of WRF build, see if that helps builds complete --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ee8978d..e86135a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -66,7 +66,7 @@ script: - date - docker ps -a - date - - docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} ${flag} J=-j@3 ${cenv} + - travis_wait docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} ${flag} J=-j@3 ${cenv} - date - OK=0 - | From 103814ab889ffc6d9320cc210421b5f7c535d909 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 20 Jun 2019 18:30:36 -0600 Subject: [PATCH 48/50] .travis.yml: add back chem with travis wait, include ls in WRF dir to get file names to search for --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index e86135a..c66f16f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,8 @@ env: - name=real_m core=em_real par=34 nest=1 flag='-d' data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' - name=nmm_s core=nmm_real par=32 nest=1 flag='-d' data_loc=nmm_nest test=01 proc=1 cenv='WRF_NMM_CORE=1' - name=nmm_m core=nmm_real par=34 nest=1 flag='-d' data_loc=nmm_nest test=01 proc=3 cenv='WRF_NMM_CORE=1' + - name=chem_s core=em_real par=32 nest=1 flag='-d' data_loc=em_chem test=1 proc=1 cenv='WRF_CHEM=1' + - name=chem_m core=em_real par=34 nest=1 flag='-d' data_loc=em_chem test=1 proc=3 cenv='WRF_CHEM=1' - name=qss_s core=em_quarter_ss par=32 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=1 cenv='WRF_EM_CORE=1' - name=qss_o core=em_quarter_ss par=33 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' - name=qss_m core=em_quarter_ss par=34 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' @@ -35,9 +37,6 @@ env: - name=fire_m core=em_fire par=34 nest=1 flag='-d' data_loc=em_fire test=01 proc=3 cenv='WRF_EM_CORE=1' - name=hill_s core=em_hill2d_x par=32 nest=0 flag='-d' data_loc=em_hill2d_x test=01 proc=1 cenv='WRF_EM_CORE=1' -# Chemistry takes too long to build, always errors out of Travis -# - name=chem_s core=em_real par=32 nest=1 flag='-d' data_loc=em_chem test=1 proc=1 cenv='WRF_CHEM=1' -# - name=chem_m core=em_real par=34 nest=1 flag='-d' data_loc=em_chem test=1 proc=3 cenv='WRF_CHEM=1' services: - docker @@ -101,6 +100,7 @@ script: else docker exec ${name} gfortran --version docker exec ${name} gcc --version + docker exec ${name} ls -ls WRF docker exec ${name} ls -ls WRF/main docker exec ${name} ls -ls WRF/compile.log.${data_loc}.${par} docker exec ${name} grep Error WRF/compile.log.${data_loc}.${par} From e4c79af27434b1b2f4c4bd022b5c297375b44f18 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Thu, 20 Jun 2019 20:46:43 -0600 Subject: [PATCH 49/50] .travis.yml - zap chem for good; try to build without -d, rrtmg sw K internal failures intermittently --- .travis.yml | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index c66f16f..63ba6dd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,30 +12,31 @@ branches: #====================================================================== env: matrix: - - name=real_s core=em_real par=32 nest=1 flag='-d' data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' - - name=real_o core=em_real par=33 nest=1 flag='-d' data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' - - name=real_m core=em_real par=34 nest=1 flag='-d' data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' - - name=nmm_s core=nmm_real par=32 nest=1 flag='-d' data_loc=nmm_nest test=01 proc=1 cenv='WRF_NMM_CORE=1' - - name=nmm_m core=nmm_real par=34 nest=1 flag='-d' data_loc=nmm_nest test=01 proc=3 cenv='WRF_NMM_CORE=1' - - name=chem_s core=em_real par=32 nest=1 flag='-d' data_loc=em_chem test=1 proc=1 cenv='WRF_CHEM=1' - - name=chem_m core=em_real par=34 nest=1 flag='-d' data_loc=em_chem test=1 proc=3 cenv='WRF_CHEM=1' - - name=qss_s core=em_quarter_ss par=32 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=1 cenv='WRF_EM_CORE=1' - - name=qss_o core=em_quarter_ss par=33 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' - - name=qss_m core=em_quarter_ss par=34 nest=1 flag='-d' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' - - name=bw_s core=em_b_wave par=32 nest=1 flag='-d' data_loc=em_b_wave test=1NE proc=1 cenv='WRF_EM_CORE=1' - - name=bw_o core=em_b_wave par=33 nest=1 flag='-d' data_loc=em_b_wave test=1NE proc=3 cenv='WRF_EM_CORE=1' - - name=bw_m core=em_b_wave par=34 nest=1 flag='-d' data_loc=em_b_wave test=1NE proc=3 cenv='WRF_EM_CORE=1' - - name=real8_s core=em_real par=32 nest=1 flag='-d -r8' data_loc=em_real8 test=14 proc=1 cenv='WRF_EM_CORE=1' - - name=real8_o core=em_real par=33 nest=1 flag='-d -r8' data_loc=em_real8 test=14 proc=3 cenv='WRF_EM_CORE=1' - - name=real8_m core=em_real par=34 nest=1 flag='-d -r8' data_loc=em_real8 test=14 proc=3 cenv='WRF_EM_CORE=1' - - name=qss8_s core=em_quarter_ss par=32 nest=1 flag='-d -r8' data_loc=em_quarter_ss8 test=03 proc=1 cenv='WRF_EM_CORE=1' - - name=qss8_o core=em_quarter_ss par=33 nest=1 flag='-d -r8' data_loc=em_quarter_ss8 test=03 proc=3 cenv='WRF_EM_CORE=1' - - name=qss8_m core=em_quarter_ss par=34 nest=1 flag='-d -r8' data_loc=em_quarter_ss8 test=03 proc=3 cenv='WRF_EM_CORE=1' - - name=move_m core=em_real par=34 nest=3 flag='-d' data_loc=em_move test=01 proc=3 cenv='WRF_EM_CORE=1' - - name=fire_s core=em_fire par=32 nest=1 flag='-d' data_loc=em_fire test=01 proc=1 cenv='WRF_EM_CORE=1' - - name=fire_o core=em_fire par=33 nest=1 flag='-d' data_loc=em_fire test=01 proc=3 cenv='WRF_EM_CORE=1' - - name=fire_m core=em_fire par=34 nest=1 flag='-d' data_loc=em_fire test=01 proc=3 cenv='WRF_EM_CORE=1' - - name=hill_s core=em_hill2d_x par=32 nest=0 flag='-d' data_loc=em_hill2d_x test=01 proc=1 cenv='WRF_EM_CORE=1' + - name=real_s core=em_real par=32 nest=1 flag=' ' data_loc=em_real test=07NE proc=1 cenv='WRF_EM_CORE=1' + - name=real_o core=em_real par=33 nest=1 flag=' ' data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' + - name=real_m core=em_real par=34 nest=1 flag=' ' data_loc=em_real test=07NE proc=3 cenv='WRF_EM_CORE=1' + - name=nmm_s core=nmm_real par=32 nest=1 flag=' ' data_loc=nmm_nest test=01 proc=1 cenv='WRF_NMM_CORE=1' + - name=nmm_m core=nmm_real par=34 nest=1 flag=' ' data_loc=nmm_nest test=01 proc=3 cenv='WRF_NMM_CORE=1' + - name=qss_s core=em_quarter_ss par=32 nest=1 flag=' ' data_loc=em_quarter_ss test=02NE proc=1 cenv='WRF_EM_CORE=1' + - name=qss_o core=em_quarter_ss par=33 nest=1 flag=' ' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' + - name=qss_m core=em_quarter_ss par=34 nest=1 flag=' ' data_loc=em_quarter_ss test=02NE proc=3 cenv='WRF_EM_CORE=1' + - name=bw_s core=em_b_wave par=32 nest=1 flag=' ' data_loc=em_b_wave test=1NE proc=1 cenv='WRF_EM_CORE=1' + - name=bw_o core=em_b_wave par=33 nest=1 flag=' ' data_loc=em_b_wave test=1NE proc=3 cenv='WRF_EM_CORE=1' + - name=bw_m core=em_b_wave par=34 nest=1 flag=' ' data_loc=em_b_wave test=1NE proc=3 cenv='WRF_EM_CORE=1' + - name=real8_s core=em_real par=32 nest=1 flag=' -r8' data_loc=em_real8 test=14 proc=1 cenv='WRF_EM_CORE=1' + - name=real8_o core=em_real par=33 nest=1 flag=' -r8' data_loc=em_real8 test=14 proc=3 cenv='WRF_EM_CORE=1' + - name=real8_m core=em_real par=34 nest=1 flag=' -r8' data_loc=em_real8 test=14 proc=3 cenv='WRF_EM_CORE=1' + - name=qss8_s core=em_quarter_ss par=32 nest=1 flag=' -r8' data_loc=em_quarter_ss8 test=03 proc=1 cenv='WRF_EM_CORE=1' + - name=qss8_o core=em_quarter_ss par=33 nest=1 flag=' -r8' data_loc=em_quarter_ss8 test=03 proc=3 cenv='WRF_EM_CORE=1' + - name=qss8_m core=em_quarter_ss par=34 nest=1 flag=' -r8' data_loc=em_quarter_ss8 test=03 proc=3 cenv='WRF_EM_CORE=1' + - name=move_m core=em_real par=34 nest=3 flag=' ' data_loc=em_move test=01 proc=3 cenv='WRF_EM_CORE=1' + - name=fire_s core=em_fire par=32 nest=1 flag=' ' data_loc=em_fire test=01 proc=1 cenv='WRF_EM_CORE=1' + - name=fire_o core=em_fire par=33 nest=1 flag=' ' data_loc=em_fire test=01 proc=3 cenv='WRF_EM_CORE=1' + - name=fire_m core=em_fire par=34 nest=1 flag=' ' data_loc=em_fire test=01 proc=3 cenv='WRF_EM_CORE=1' + - name=hill_s core=em_hill2d_x par=32 nest=0 flag=' ' data_loc=em_hill2d_x test=01 proc=1 cenv='WRF_EM_CORE=1' +# NO chem, ever, I am not kidding, for reals! +# - name=chem_s core=em_real par=32 nest=1 flag=' ' data_loc=em_chem test=1 proc=1 cenv='WRF_CHEM=1' +# - name=chem_m core=em_real par=34 nest=1 flag=' ' data_loc=em_chem test=1 proc=3 cenv='WRF_CHEM=1' services: From cfe9a3c3024a4ed892244d1b9a6d5e45586b3a96 Mon Sep 17 00:00:00 2001 From: Dave Gill Date: Fri, 21 Jun 2019 08:57:23 -0600 Subject: [PATCH 50/50] .travis.yml: bump up the travis wait to 25 min for the build step (since not using -d) --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 63ba6dd..2a6cda9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -66,7 +66,7 @@ script: - date - docker ps -a - date - - travis_wait docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} ${flag} J=-j@3 ${cenv} + - travis_wait 25 docker exec ${name} ./script.csh BUILD CLEAN ${par} ${nest} ${core} ${flag} J=-j@3 ${cenv} - date - OK=0 - |