From 2e3da264f04086b4779cacca3f6e64b55d2cc004 Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Tue, 17 Mar 2020 15:37:48 +0100 Subject: [PATCH] Replaced Windows LFCR by Linux LF to avoid ^R at end of line in vi. --- .../doc/prestudy/desp_howtools_erko.txt | 726 +++++++++--------- 1 file changed, 366 insertions(+), 360 deletions(-) diff --git a/applications/lofar2/doc/prestudy/desp_howtools_erko.txt b/applications/lofar2/doc/prestudy/desp_howtools_erko.txt index 0583c7242f..57967f561e 100755 --- a/applications/lofar2/doc/prestudy/desp_howtools_erko.txt +++ b/applications/lofar2/doc/prestudy/desp_howtools_erko.txt @@ -1,360 +1,366 @@ -* RadioHDL with GIT (LOFAR2.0) -* RadioHDL with SVN (APERTIF/ARTS) -* GIT workflow -* Confluence -* Polarion -* Latex -* Markdown - -******************************************************************************* -* RadioHDL with GIT -******************************************************************************* - -# Setup vendor specific environment variables in .bashrc - - * bashrc defines root directories that contain one or more versions of tool installations - - define MENTOR_DIR : modelsim installations - - define ALTERA_DIR : altera installations - - define MODELSIM_ALTERA_LIBS_DIR : compiled modelsim simulation libraries for altera components - - - LM_LICENSE_FILE=<our_license@our_compagny> - -# Setup RadioHDL development environment for hdl/. The hdl/libraries, hdl/boards and hdl/applications are -# developed simultaneously and therefor in one git hdl/ repository - -> cd ~/git/hdl - -> . ./init_hdl.sh - - * init_hdl.sh defines: - - RADIOHDL_WORK directory for where the source code resides - - RADIOHDL_BUILD_DIR directory for where the targets will be build - - HDL_IOFILE_SIM_DIR=${RADIOHDL_BUILD_DIR}/sim for simulating with Modelsim using file IO - - * init_hdl.sh copies git user_components.ipx into Altera dir's - - cp ${RADIOHDL_WORK}/hdl_user_components.ipx $altera_dir/ip/altera/user_components.ipx - - * init_hdl.sh automatically also sources ../radiohdl/init_radiohdl.sh if necessary - - -source also radiohdl tools -. ../radiohdl/init_radiohdl.sh - - * init_radiohdl.sh defines: - - RADIOHDL_GEAR directory of where the init_radiohdl.sh is located - - RADIOHDL_BUILD_DIR = ${RADIOHDL_BUILD_DIR}/build if not already defined - - RADIOHDL_CONFIG = ${RADIOHDL_GEAR}/config if not already defined - - * init_radiohdl.sh extends: - - PATH with ${RADIOHDL_GEAR}/core - ${RADIOHDL_GEAR}/quartus - ${RADIOHDL_GEAR}/modelsim - - PYTHONPATH with ${RADIOHDL_GEAR}/core - ${RADIOHDL_GEAR}/components - - -> compile_altera_simlibs unb1 # creates build/unb1/hdl_libraries_ip_stratixiv.txt - # creates build/quartus/<tool version> simulation models that need to be moved - # manually to $MODELSIM_ALTERA_LIBS_DIR/<tool version> - -> generate_ip_libs unb1 # creates build/unb1/qmegawiz/ - # creates build/unb1/quartus_sh --> empty dir, why is it there? - -> quartus_config unb1 # creates build/unb1/quartus/<hdllib libraries> for synthesis - # creates build/unb1/quartus/technology_select_pkg.vhd - -> modelsim_config unb1 # creates build/unb1/modelsim/<hdllib libraries> for simulation - # creates build/unb1/modelsim/modelsim_project_files.txt for Modelsim commands.do - # creates build/unb1/modelsim/technology_select_pkg.vhd - -> run_qsys unb1 unb1_minimal_qsys # creates QSYS block in build/unb1/quartus/unb1_minimal_qsys -> run_qcomp unb1 unb1_minimal_qsys # creates - -> run_modelsim unb1 & - - -******************************************************************************* -* RadioHDL with SVN -******************************************************************************* - -echo "Uniboard trunk is selected" -export SVN=${HOME}/svnroot/UniBoard_FP7 -#Setup RadioHDL environment for UniBoard2 and and new Uniboard1 applications -. ${SVN}/RadioHDL/trunk/tools/setup_radiohdl.sh -# Support old UniBoard environment (including Aarfaac and Paasar) -. ${SVN}/RadioHDL/trunk/tools/setup_unb.sh - - - -******************************************************************************* -* GIT references -******************************************************************************* - -difftool ? -mergetool ? - -* Pro Git book by Scott Chacon: https://git-scm.com/book/en/v2 -* YouTube : David Mahler part 1,2,3 - -Part 1: - -# After GIT install -git version -git config --global http://user.name "EricKooistra" -git config --global http://user.email "erkooi@gmail.com" -git config --list -touch .gitignore # create .gitignore if it does not already exist -.gitignore # file with working tree dirs and files to ignore, must also be commited - -# To start a repo -cd ~/git -git init # start new repo at this dir, creates .git/ -git clone # get and start with existing repo -git clone git@git.astron.nl:desp/args.git -git clone git@git.astron.nl:desp/sampy.git - -git status # what is in stage area and what is modified -git status -uno # skip unversioned files - -Three areas: -* working tree # local directory tree -| git add -v -* staging area (index) -| -v git commit -* history # .git repository with entire commit graph - -# To use a repo -git add <dir>/<file> # add to stage area, set for commit. Cannot add empty dir, need empty file in it -git add . # add all new and modified to stageing area -git diff # diff between file in working tree and staging area -git diff --staged # diff between file in staging area and history -git rm <filename> # remove file from working tree and stage the delete -git checkout -- <filename> # revert a working tree change -git reset # clear stage area -git reset HEAD <filename> # revert staged change -git log -- <filename> # show history of file -git checkout <version hash> -- s2 # retrieve file from history into staged area and working tree - - -Part 2: - -git commit -m "" # commit what is in stage area -git commit -a -m "" # add to stage area and commit what is in stage area -alias graph="git log --all --decorate --oneline --graph" -git branch <branch name> # creat branch -git branch # show branches -git checkout <branch name> # change working tree and stage area to branch -git checkout master -git merge <branch name> # Fast forward merge of branch name to master if there is a direct path - # by moving master to branch name, this is when there have been no updates - # on the master branch since the branch was created. - # Three way merge combine the differences of the branch and the master - # compared to their common version, this can lead to merge conflicts if - # changes on both branches occur at same parts of a file. -git branch --merged # show branches that have been merged to master -git branch -r -git branch -a # show all local and remote branches - -git branch -d <branch name> # remove branch -git checkout <commit hash> # detached HEAD because it points to a version not a branch -git branch <branch name> # start a branch from the commit hash, HEAD is attached again - -# Stash area to store working tree -git stash save "comment" # store working tree and stage area to get a clean -git stash list # show all stashes -git stash apply <label> # restore stash -git stash apply # restore last stash - - -Part 3: Remote repositories (Github, Gitlab, Bitbucket, ...) - -create repo on Github -http://README.md # md = mark down -git clone <url:.../<repo name>.git> # get copy from url -cd <repo name> -git config --local http://user.name "EricKooistra" -git config --local http://user.email "erkooi@gmail.com" -git remote # origin -git remote -v # full url - -# To align with remote repo -# update from remote -git status # shows also origin/master, but not live -git fetch origin -git status # shows also origin/master, now with latest remote -git merge origin/master -git pull # get latest from remote repo, combines fetch and merge - -# upload to remote -git push -git push origin master # put local repo to remote repo - -# On Github fork is a copy of the a repo in Github to get a repo on your account -git clone <url of fork> # get copy of fork repo, will be origin -git remote add upstream <url of original repo on Github> # will be upstream -git fetch upstream -git status -# commit local change on branch -# git push origin <branch name> # push to my fork repo on Github -# pull request on Github -# delete branch and fetch npstream if the pull request was accepted -git remote remove <remote name> # remove a remote repo - - -******************************************************************************* -* GIT workflow and review process using Gitlab -******************************************************************************* - -We identify two persons in this process: -- the coder -- the reviewer - -* Jira ticket defines the work to be done, e.g. L2SDP-26 -* Coder works on branch with Jira ticket number as branch name - - git checkout master # start on up to date master branch - git pull - git branch L2SDP-26 # creat branch using Jira ticket number - git branch # show branches - git checkout L2SDP-26 # change working tree and stage area to branch - -* Work on branch using git add, commit and push -* Manually run regression test to test the changes (for Casacore SW the merge - request makes github automatically issue a regression test in the cloud, for - FW we need to run the relevant testbenches manually. It is not necessary to - rerun the entire FW regression test, it is sufficient to only run the - regression test for the HDL libraries that were modified and the HDL - libraries that could be impacted by the modification) -* Push the branch to the central repository at gitlab - - git push -u origin L2SDP-26 # first time to declare the branch at the remote - - -* Coder does merge request to reviewer using the central Gitlab GUI -* gitlab will warn if the branch will lead to a merge conflict, the coder then - first has to fix the merge conflict by merging the master to the branch: - The merge can use merging or rebasing, Ger typically uses merging. On local - machine the coder resolves the merge conflict: - - git checkout master - git pull - git checkout L2SDP-26 - git merge master - git status # to see merge conflicts, edit file to solve merge conflict - git add file - git commit - git push - -* In gitlab do merge request to reviewer -* Reviewer reviews the code per line or in general comments in gitlab GUI, - so reviewer does not need to pull the branch locally and also does not need - to rerun the regression test. -* Use 'Open in Web IDE' button in gitlab GUI to see max about 10 changes, - use 'Changes' menu on same page to see all changes. Green is new file, - orange is change file, + is new lines - is removed lines. -* Coder does updates on branch until both coder and reviewer are ok, they are - notified by gitlab -* When review is done then the reviewer does the merge. -* The merge automatically deletes the branch (if selected to do so in gitlab) - locally the coder manually needs to delete the branch: - - git branch - git checkout master - git status - git branch -d L2SDP-26 - git status - -* Use Jira tag in commit message to have link between GIT and Jira. The link - was made via Settings/Intergations/Jira - -Note: -* In github a merge request is called a pull request -* Default a pull pulls the master. Typically it is not necessary to pull a - branch because the reviewer does not need to compile and run the code and - because typically only one coder works on a branch. - - -******************************************************************************* -* Confluence: -******************************************************************************* -- space tools menu links onder om secties the ordenen. -- space tools menu, content tools, custom export to PDF --> to export multiple - pages to PDF and to preserve th ASTRON logo in the export - - -******************************************************************************* -* Polarion: -******************************************************************************* - - -******************************************************************************* -* LaTeX -******************************************************************************* -- \sigma \sqrt{} -- 4.15 \cdot 10^{15} -- M = - \left[ {begin{array}{cc} - 1 & 2 & 3 & 4\\ - 5 & 6 & 7 & 8\\ - \end{array} } \right] - - - -******************************************************************************* -* Markdown -******************************************************************************* - -Text will wrap. - -Backslash is escape chararcter. - -# Heading 1 -## Heading 2 -### Heading 3 -#### Heading 4 -##### Heading 5 -###### Heading 6 - -Horizontal rules three or more of ***, ___, --- - -*italic* -_italic_ -**bold** -__bold__ -**bold and _bolditalic_** combined -`boxed` -~~strike through~~ - -Block quotes (alinea with an indent bar): -> Block text will wrap - -Unordered list using *, -, +, indent >= 1 space -* Main item 1 -* Main item 2 - * sub item 2a use 2 trailing spaces for return inside paragraph - * sub item 2b - -Ordered list -1. Main item 1 -2. Main item 2 - 2.1 sub item 2a - 2.2 sub item 2b - -Images - - -![Logo][image1] - -[image1]:web link to image file - -Links: -[ASTRON]:https://www.astron.nl - -Table: -|col1 | col2| Col3 | column titles -|---|:---:|--:| >= 3 dashes, colon for left, center, right align -| row text | row text | row text| -| row text | row text | row text| - +* RadioHDL with GIT (LOFAR2.0) +* RadioHDL with SVN (APERTIF/ARTS) +* GIT workflow +* Confluence +* Polarion +* Latex +* Markdown +* Vi + + +******************************************************************************* +* RadioHDL with GIT +******************************************************************************* + +# Setup vendor specific environment variables in .bashrc + + * bashrc defines root directories that contain one or more versions of tool installations + - define MENTOR_DIR : modelsim installations + - define ALTERA_DIR : altera installations + - define MODELSIM_ALTERA_LIBS_DIR : compiled modelsim simulation libraries for altera components + + - LM_LICENSE_FILE=<our_license@our_compagny> + +# Setup RadioHDL development environment for hdl/. The hdl/libraries, hdl/boards and hdl/applications are +# developed simultaneously and therefor in one git hdl/ repository + +> cd ~/git/hdl + +> . ./init_hdl.sh + + * init_hdl.sh defines: + - RADIOHDL_WORK directory for where the source code resides + - RADIOHDL_BUILD_DIR directory for where the targets will be build + - HDL_IOFILE_SIM_DIR=${RADIOHDL_BUILD_DIR}/sim for simulating with Modelsim using file IO + + * init_hdl.sh copies git user_components.ipx into Altera dir's + - cp ${RADIOHDL_WORK}/hdl_user_components.ipx $altera_dir/ip/altera/user_components.ipx + + * init_hdl.sh automatically also sources ../radiohdl/init_radiohdl.sh if necessary + + +source also radiohdl tools +. ../radiohdl/init_radiohdl.sh + + * init_radiohdl.sh defines: + - RADIOHDL_GEAR directory of where the init_radiohdl.sh is located + - RADIOHDL_BUILD_DIR = ${RADIOHDL_BUILD_DIR}/build if not already defined + - RADIOHDL_CONFIG = ${RADIOHDL_GEAR}/config if not already defined + + * init_radiohdl.sh extends: + - PATH with ${RADIOHDL_GEAR}/core + ${RADIOHDL_GEAR}/quartus + ${RADIOHDL_GEAR}/modelsim + - PYTHONPATH with ${RADIOHDL_GEAR}/core + ${RADIOHDL_GEAR}/components + + +> compile_altera_simlibs unb1 # creates build/unb1/hdl_libraries_ip_stratixiv.txt + # creates build/quartus/<tool version> simulation models that need to be moved + # manually to $MODELSIM_ALTERA_LIBS_DIR/<tool version> + +> generate_ip_libs unb1 # creates build/unb1/qmegawiz/ + # creates build/unb1/quartus_sh --> empty dir, why is it there? + +> quartus_config unb1 # creates build/unb1/quartus/<hdllib libraries> for synthesis + # creates build/unb1/quartus/technology_select_pkg.vhd + +> modelsim_config unb1 # creates build/unb1/modelsim/<hdllib libraries> for simulation + # creates build/unb1/modelsim/modelsim_project_files.txt for Modelsim commands.do + # creates build/unb1/modelsim/technology_select_pkg.vhd + +> run_qsys unb1 unb1_minimal_qsys # creates QSYS block in build/unb1/quartus/unb1_minimal_qsys +> run_qcomp unb1 unb1_minimal_qsys # creates + +> run_modelsim unb1 & + + +******************************************************************************* +* RadioHDL with SVN +******************************************************************************* + +echo "Uniboard trunk is selected" +export SVN=${HOME}/svnroot/UniBoard_FP7 +#Setup RadioHDL environment for UniBoard2 and and new Uniboard1 applications +. ${SVN}/RadioHDL/trunk/tools/setup_radiohdl.sh +# Support old UniBoard environment (including Aarfaac and Paasar) +. ${SVN}/RadioHDL/trunk/tools/setup_unb.sh + + + +******************************************************************************* +* GIT references +******************************************************************************* + +difftool ? +mergetool ? + +* Pro Git book by Scott Chacon: https://git-scm.com/book/en/v2 +* YouTube : David Mahler part 1,2,3 + +Part 1: + +# After GIT install +git version +git config --global http://user.name "EricKooistra" +git config --global http://user.email "erkooi@gmail.com" +git config --list +touch .gitignore # create .gitignore if it does not already exist +.gitignore # file with working tree dirs and files to ignore, must also be commited + +# To start a repo +cd ~/git +git init # start new repo at this dir, creates .git/ +git clone # get and start with existing repo +git clone git@git.astron.nl:desp/args.git +git clone git@git.astron.nl:desp/sampy.git + +git status # what is in stage area and what is modified +git status -uno # skip unversioned files + +Three areas: +* working tree # local directory tree +| git add +v +* staging area (index) +| +v git commit +* history # .git repository with entire commit graph + +# To use a repo +git add <dir>/<file> # add to stage area, set for commit. Cannot add empty dir, need empty file in it +git add . # add all new and modified to stageing area +git diff # diff between file in working tree and staging area +git diff --staged # diff between file in staging area and history +git rm <filename> # remove file from working tree and stage the delete +git checkout -- <filename> # revert a working tree change +git reset # clear stage area +git reset HEAD <filename> # revert staged change +git log -- <filename> # show history of file +git checkout <version hash> -- s2 # retrieve file from history into staged area and working tree + + +Part 2: + +git commit -m "" # commit what is in stage area +git commit -a -m "" # add to stage area and commit what is in stage area +alias graph="git log --all --decorate --oneline --graph" +git branch <branch name> # creat branch +git branch # show branches +git checkout <branch name> # change working tree and stage area to branch +git checkout master +git merge <branch name> # Fast forward merge of branch name to master if there is a direct path + # by moving master to branch name, this is when there have been no updates + # on the master branch since the branch was created. + # Three way merge combine the differences of the branch and the master + # compared to their common version, this can lead to merge conflicts if + # changes on both branches occur at same parts of a file. +git branch --merged # show branches that have been merged to master +git branch -r +git branch -a # show all local and remote branches + +git branch -d <branch name> # remove branch +git checkout <commit hash> # detached HEAD because it points to a version not a branch +git branch <branch name> # start a branch from the commit hash, HEAD is attached again + +# Stash area to store working tree +git stash save "comment" # store working tree and stage area to get a clean +git stash list # show all stashes +git stash apply <label> # restore stash +git stash apply # restore last stash + + +Part 3: Remote repositories (Github, Gitlab, Bitbucket, ...) + +create repo on Github +http://README.md # md = mark down +git clone <url:.../<repo name>.git> # get copy from url +cd <repo name> +git config --local http://user.name "EricKooistra" +git config --local http://user.email "erkooi@gmail.com" +git remote # origin +git remote -v # full url + +# To align with remote repo +# update from remote +git status # shows also origin/master, but not live +git fetch origin +git status # shows also origin/master, now with latest remote +git merge origin/master +git pull # get latest from remote repo, combines fetch and merge + +# upload to remote +git push +git push origin master # put local repo to remote repo + +# On Github fork is a copy of the a repo in Github to get a repo on your account +git clone <url of fork> # get copy of fork repo, will be origin +git remote add upstream <url of original repo on Github> # will be upstream +git fetch upstream +git status +# commit local change on branch +# git push origin <branch name> # push to my fork repo on Github +# pull request on Github +# delete branch and fetch npstream if the pull request was accepted +git remote remove <remote name> # remove a remote repo + + +******************************************************************************* +* GIT workflow and review process using Gitlab +******************************************************************************* + +We identify two persons in this process: +- the coder +- the reviewer + +* Jira ticket defines the work to be done, e.g. L2SDP-26 +* Coder works on branch with Jira ticket number as branch name + + git checkout master # start on up to date master branch + git pull + git branch L2SDP-26 # creat branch using Jira ticket number + git branch # show branches + git checkout L2SDP-26 # change working tree and stage area to branch + +* Work on branch using git add, commit and push +* Manually run regression test to test the changes (for Casacore SW the merge + request makes github automatically issue a regression test in the cloud, for + FW we need to run the relevant testbenches manually. It is not necessary to + rerun the entire FW regression test, it is sufficient to only run the + regression test for the HDL libraries that were modified and the HDL + libraries that could be impacted by the modification) +* Push the branch to the central repository at gitlab + + git push -u origin L2SDP-26 # first time to declare the branch at the remote + + +* Coder does merge request to reviewer using the central Gitlab GUI +* gitlab will warn if the branch will lead to a merge conflict, the coder then + first has to fix the merge conflict by merging the master to the branch: + The merge can use merging or rebasing, Ger typically uses merging. On local + machine the coder resolves the merge conflict: + + git checkout master + git pull + git checkout L2SDP-26 + git merge master + git status # to see merge conflicts, edit file to solve merge conflict + git add file + git commit + git push + +* In gitlab do merge request to reviewer +* Reviewer reviews the code per line or in general comments in gitlab GUI, + so reviewer does not need to pull the branch locally and also does not need + to rerun the regression test. +* Use 'Open in Web IDE' button in gitlab GUI to see max about 10 changes, + use 'Changes' menu on same page to see all changes. Green is new file, + orange is change file, + is new lines - is removed lines. +* Coder does updates on branch until both coder and reviewer are ok, they are + notified by gitlab +* When review is done then the reviewer does the merge. +* The merge automatically deletes the branch (if selected to do so in gitlab) + locally the coder manually needs to delete the branch: + + git branch + git checkout master + git status + git branch -d L2SDP-26 + git status + +* Use Jira tag in commit message to have link between GIT and Jira. The link + was made via Settings/Intergations/Jira + +Note: +* In github a merge request is called a pull request +* Default a pull pulls the master. Typically it is not necessary to pull a + branch because the reviewer does not need to compile and run the code and + because typically only one coder works on a branch. + + +******************************************************************************* +* Confluence: +******************************************************************************* +- space tools menu links onder om secties the ordenen. +- space tools menu, content tools, custom export to PDF --> to export multiple + pages to PDF and to preserve th ASTRON logo in the export + + +******************************************************************************* +* Polarion: +******************************************************************************* + + +******************************************************************************* +* LaTeX +******************************************************************************* +- \sigma \sqrt{} +- 4.15 \cdot 10^{15} +- M = + \left[ {begin{array}{cc} + 1 & 2 & 3 & 4\\ + 5 & 6 & 7 & 8\\ + \end{array} } \right] + + + +******************************************************************************* +* Markdown +******************************************************************************* + +Text will wrap. + +Backslash is escape chararcter. + +# Heading 1 +## Heading 2 +### Heading 3 +#### Heading 4 +##### Heading 5 +###### Heading 6 + +Horizontal rules three or more of ***, ___, --- + +*italic* +_italic_ +**bold** +__bold__ +**bold and _bolditalic_** combined +`boxed` +~~strike through~~ + +Block quotes (alinea with an indent bar): +> Block text will wrap + +Unordered list using *, -, +, indent >= 1 space +* Main item 1 +* Main item 2 + * sub item 2a use 2 trailing spaces for return inside paragraph + * sub item 2b + +Ordered list +1. Main item 1 +2. Main item 2 + 2.1 sub item 2a + 2.2 sub item 2b + +Images + + +![Logo][image1] + +[image1]:web link to image file + +Links: +[ASTRON]:https://www.astron.nl + +Table: +|col1 | col2| Col3 | column titles +|---|:---:|--:| >= 3 dashes, colon for left, center, right align +| row text | row text | row text| +| row text | row text | row text| + +vi +"Replaced Windows LFCR by Linux LF to avoid ^R at end of line in vi. Removed trailing spaces." +- in gvim replace \r --> nothing +- in uex save new file as Linux, save as, menu edit/preferences/line end \ No newline at end of file -- GitLab