# Software Release Procedure

## CEPC Software Release Procedure

The software packages are defined in the repository cepc-release.

## Define New Version

Edit file config/version and set to new version name and commit this change with git commit. Then tag cepc-release with new version name, e.g., 1.2.3:

git tag -a v1.2.3 -m 'Version 1.2.3'
git push origin v1.2.3


Then this version could be found with cepcenv ls-remote command:

\$ cepcenv ls-remote
...
1.2.3


## Patch for Package

Several packages may be not compatible once other packages updated, like changed function definition, different compiler version. But sometimes we do not want to update these packages to a new version which may sovle this problem. Then we need to patch them in order to make them work. This is the patch steps:

1. Copy the original package and modify the incompatible codes:
copy -r package-1.2.3 package-1.2.3_patched

2. Use diff command to generate the patch file:
diff -Nur package-1.2.3 package-1.2.3_patched > package-1.2.3.patch

3. Copy this patch file under the patch directory in cepc-release.
4. Modify the install configuration of the package and add pre_compile step:
  pre_compile:
handler: patch
param:
file: package-1.2.3.patch


The patch file will be automatically applied before compilation.