User Tools

Site Tools


dev:starting

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dev:starting [2019/06/22 16:16]
oschuett
dev:starting [2020/08/21 10:15] (current)
Line 7: Line 7:
  
 ===== Prepare the patch ===== ===== Prepare the patch =====
 +
   - Fork the CP2K Repository on GitHub via "Fork" on https://github.com/cp2k/cp2k   - Fork the CP2K Repository on GitHub via "Fork" on https://github.com/cp2k/cp2k
-     Also as a member of the development team you will not be able to push directly to the `master` branch of the https://github.com/cp2k/cp2k repository. This is by intention and we would like to ask you to send changes as Pull Requests instead.+     Even as a member of the development team you will not be able to push directly to the `master` branch of the https://github.com/cp2k/cp2k repository. This is by intention and we would like to ask you to send changes as Pull Requests instead.
   - On your machine, clone the repository via **git clone %%--%%recursive https://github.com/YOURNAME/cp2k.git**   - On your machine, clone the repository via **git clone %%--%%recursive https://github.com/YOURNAME/cp2k.git**
-  - Move to the downloaded cp2k directory: **cd cp2k**+  - Change into the created cp2k directory: **cd cp2k**
   - Start working in a new branch: **git checkout -b my-new-feature**   - Start working in a new branch: **git checkout -b my-new-feature**
   - Make your changes to the code   - Make your changes to the code
Line 19: Line 20:
   - Do some more work, then repeat point 6. and 7.   - Do some more work, then repeat point 6. and 7.
   - Push your new changes to the remote repository via **git push** (note: the '-u origin my-new-feature' does not have to be repeated)   - Push your new changes to the remote repository via **git push** (note: the '-u origin my-new-feature' does not have to be repeated)
 +  - Use the GitHub interface at https://github.com/YOURNAME/cp2k to create a pull-request
 +
 +===== Update your copy of the master/rebase your patch =====
 +
   - To update the 'master' of your fork to the same state as the 'master' of the CP2K repository:   - To update the 'master' of your fork to the same state as the 'master' of the CP2K repository:
      - tell your local git repository once about the remote: **git remote add upstream https://github.com/cp2k/cp2k.git**      - tell your local git repository once about the remote: **git remote add upstream https://github.com/cp2k/cp2k.git**
      - make sure you are on the right branch: **git checkout master**      - make sure you are on the right branch: **git checkout master**
      - 'rebase' your current branch on top of the cp2k/cp2k master: **git pull %%--%%rebase upstream master**      - 'rebase' your current branch on top of the cp2k/cp2k master: **git pull %%--%%rebase upstream master**
-     push the changes: **git push** +   To update a branch with patches onto the updated master branch:
-  - You can also rebase your feature branch, in this case do the previous point and then:+
      - **git checkout my-new-feature**      - **git checkout my-new-feature**
-     - **git pull %%--%%rebase upstream master**, this may generate rebase/merge-conflicts you should resolve now. If you got lost, you can always use **git rebase %%--%%abort** (with Git 1.8 and newer) to revert the attempted rebase+     - **git rebase master**, this may generate rebase/merge-conflicts you should resolve now. If you got lost, you can always use **git rebase %%--%%abort** (with Git 1.8 and newer) to revert the attempted rebase
      - after a rebase of a branch with commits which was already pushed to a remote, you have to force-push: **git push %%--%%force**      - after a rebase of a branch with commits which was already pushed to a remote, you have to force-push: **git push %%--%%force**
 +
 ===== Submit the patch ===== ===== Submit the patch =====
  
Line 51: Line 56:
      - In the case of success, the PR will be merged by one of the CP2K administrators      - In the case of success, the PR will be merged by one of the CP2K administrators
      - In the case of error, please check what's wrong in the CI logs, fix it in your branch, and commit/push again. The CI will automatically rerun on the new version of the code (no need to close the PR, it will be automatically updated!). Repeat until the CI runs fine.      - In the case of error, please check what's wrong in the CI logs, fix it in your branch, and commit/push again. The CI will automatically rerun on the new version of the code (no need to close the PR, it will be automatically updated!). Repeat until the CI runs fine.
-     + 
 +===== Prepare a development environment with Spack ===== 
 + 
 +The HPC package manager [[https://spack.io/ Spack]] can be used to provide a development environment for CP2K. 
 + 
 +<note important>We assume that you followed the basic instructions to install Spack and that the ''spack'' command is available and that you have a checkout of the CP2K source code (for the latter, follow the instructions above).</note> 
 + 
 +  - change into the CP2K directory: ''cd cp2k'' 
 +  - create a Spack environment (here for building an ''sopt'' profile) to make sure we collect all dependencies in one view: ''spack env create -d envs/sopt'' 
 +  - activate the Spack environment using: ''spack env activate -d envs/sopt'' 
 +  - install everything required for CP2K and build & install CP2K from the current source tree (this may take while): ''spack dev-build cp2k@master ~openmp ~mpi'' 
 +  - start a new shell with all the environment variables set using ''spack build-env cp2k@master ~openmp ~mpi -- bash'' 
 +  - to recompile, run: ''make VERSION=sopt'' 
 + 
 +If you experience problems with other tools (like your editor) when inside the Spack environment, you can directly run the build command using: ''spack build-env cp2k@master ~openmp ~mpi %%--%% make VERSION=sopt''
dev/starting.1561220169.txt.gz · Last modified: 2020/08/21 10:14 (external edit)