Information from Valerio on Jan. 27, 2021.
make sure the psana1-py2 env is used (needed by py2 ana-rel-admin)
cd /cds/sw/ds/ana/conda1/manage-feedstocks/
ana-rel-admin --force --cmd psana-conda-src --name 2.0.6 --basedir `pwd`
cp .tar.gz to where travis can see it:
/reg/g/psdm/web/swdoc/tutorials/
psreldev can't write to the above, do as user "cpo" or "valmar"
checkout github feedstock repository:
many feedstocks (all in slac-lcls) e.g.
https://github.com/slac-lcls/psana1-feedstock
update version and checksum in
https://github.com/slac-lcls/psana1-feedstock/blob/main/recipe/meta.yaml
generate new checksum with: sha256sum .tar.gz
sha256sum /reg/g/psdm/web/swdoc/tutorials/psana-conda-4.0.10.tar.gz
git push launches the build on travis when it finishes it uploads it
to anaconda.org/valmar (currently) but need to switch to it to official
this is our real control of the build process (e.g. .travis.yml gets
generated automatically)
https://github.com/slac-lcls/psana1-feedstock/blob/main/conda-forge.yml
if the above file is modified have to run "conda smithy rerender -c
auto" "-c auto" means automatically make a git commit. but still have
to push to git.
There are a few other cases in which the feedstock needs to be rerendered.
See the conda-forge documentation:
https://conda-forge.org/docs/maintainer/updating_pkgs.html#when-to-rerender
If no relevant changes have taken place, the command will simply not create a
commit. so maybe it is a good practice to run it every time a feedstock is
updated.
"targets" first entry: the conda channel to upload to, second entry is
called a "label" (e.g. a devel and a stable). conda forge always looks
for "main" label.
then "conda create" as usual (as seen in the jenkins CI).
for testing the feedstock, can run the run_docker_build.sh script locally
but requires docker to be installed. The file "build_locally.py" included in
the feedstock takes care of running run_docker_build.sh
Valerio uses this to test the feedstock on his laptop.
If any dependency is updated (e.g. boost) then feedstocks are rebuilt
automatically, but ONLY if our packages are in conda-forge, which they
are not. To emulate this, Valerio bumps all the feedstock build
numbers for each release (even ndarray because it depends on boost) so
they will get built against the latest versions in conda-forge.
separate feedstock for py27 since everything is pinned in the recipe:
https://github.com/slac-lcls/psana1-py2-feedstock
recipe/conda_build_config.yaml overrides the equivalent in the conda forge
pinning file (most recent version pulled automatically from conda-forge)
in recipe/conda_build_config.yaml (ONLY for psana1-py2-feedstock),
zip_keys: override specification for the 3 special packages python,
python_impl, numpy. conda-forge people helped specify these, in
particular Billy Poon.
feedstocks:
libpressio-feedstock psana1-py2-feedstock sz-feedstock
ndarray-psana-feedstock psgeom-feedstock xtcav2-feedstock
ndarray-psana-py2-feedstock psocake-feedstock
psana1-feedstock stdcompat-feedstock
libpressio,sz,stdcompat are all needed by chuck/sz.
update build numbers for all the above for every psana1 release.
Checklist for building psana1 environments from feedstocks
As psreldev on psbuld-rhel7:
- source /cds/sw/ds/ana/conda1/inst/etc/profile.d/conda.sh
- conda activate conda_build
- cd /cds/sw/ds/ana/conda1/manage-feedstocks/
- bin/ana-rel-admin --force --cmd psana-conda-src --name 4.0.11 --basedir `pwd`
As normal user:
- cd /cds/sw/ds/ana/conda1/manage-feedstocks/downloads/anarel
- cp psana-conda-4.0.11.tar.gz /reg/g/psdm/web/swdoc/tutorials
- sha256sum psana-conda-4.0.11.tar.gz <copy the checksum>
Activate an environment that contains the 'conda smithy' package. For example:
conda activate /cds/home/v/valmar/.conda/envs/conda_forge_build3.9
Then for each of these feedstock (more or less in this order):
github.com/slac-lcls/sz-feedstock
github.com/slac-lcls/stdcompat-feedstock
github.com/slac-lcls/ndarray-psana-feedstock
github.com/slac-lcls/ndarray-psana-py2-feedstock
github.com/slac-lcls/libpressio-feedstock
github.com/slac-lcls/xtcav2-feedstock
github.com/slac-lcls/psgeom-feedstock
github.com/slac-lcls/psocake-feedstock
github.com/slac-lcls/psana1-py2-feedstock
github.com/slac-lcls/psana1-feedstock
As normal user:
- Modify recipe/meta.yaml
- Check if new version of packages has been released
- If yes, bump up version, update sha256 checksum and reset build number
- Otherwise, bump up build number
- conda smithy rerender -c auto
- Commit
- Push
After all packages have finished building on TravisCI,
As psreldev:
- ource /cds/sw/ds/ana/conda1/inst/etc/profile.d/conda.sh
- cd /cds/sw/ds/ana/conda1/manage-feedstocks/jenkins/
- conda env create -n ana-4.0.11 --file ana-env-py2.yaml
- conda env create -n ana-4.0.11-py3 --file ana-env-py3.yaml