= The PALM build script = The script to compile PALM and its [utility (pre-/postprocessing) programs] is called {{{palmbuild}}}. It resides under {{{trunk/SCRIPTS}}} and is invoked by the [wiki:doc/install/automatic automatic installer] as part of the installation process. It can also be executed manually, e.g. in case of a [#svnupdate PALM code update] from the svn repository, or code modifications by the user. Each modifications of the source code requires new compilation.\\\\ {{{palmbuild}}}\\\\ * is steered by settings, e.g. about compiler options, in the [wiki:doc/app/palm_config configuration file] .palm.config.,\\\\ * compiles code based on the unix makefile mechanism,\\\\ * adds the created binaries to the directory MAKE_DEPOSITORY_,\\\\ * is automatically invoked by the PALM run script [wiki:doc/app/palmrun palmrun] in case this doesn't find the respective MAKE_DEPOSITORY_. \\ == Execute {{{palmbuild}}} == Assuming a configuration file named {{{.palm.config.default}}}, you need to type the command {{{ palmbuild -c default }}} Since you can have different configuration files (for different compilers, compiler options, or hosts), you need to specify the configuration file to be used by the option {{{-c}}}. The suffix {{{default}}} in this example is the , which can be an arbitrary ASCII-character string.\\ After entering the command, informative messages will appear in the terminal: {{{ #------------------------------------------------------------------------# | palmbuild 1.0 Rev: 3210 $ Thu Aug 30 09:29:56 CEST 2018 | | PALM code Rev: 3220 | | | | called on: bora (IP:130.75.105.103) | | config file: /home/raasch/palm/current_version/.palm.config.abcde | | makefile: /home/raasch/palm/current_version/trunk/SOURCE/Makefile | | source path: /home/raasch/palm/current_version/trunk/SOURCE | | | | config. identifier: abcde | | local depository: /home/raasch/palm/current_version/MAKE_DEPOSITORY_ | | abcde | | username: raasch | | address: 130.75.105.103 | | compiler: mpif90 | | serial compiler: ifort | | make options: -j 8 | | cpp options: -cpp -D__parallel ...... | | compiler options: -fpe0 -O3 ...... | | linker options: -fpe0 -O3 ...... | #------------------------------------------------------------------------# >>> continue (y(es)/c(ontinue)/a(bort)) ? }}} If {{{y}}} is entered, compilation will be started and compiler messages will appear. After successful completion, you will find the binaries in the directory given in the configuration file by {{{base_directory}}} under the folder name {{{MAKE_DEPOSITORY_abcde}}}. In case of a configuration file for PALM runs on a remote host, sources are copied via {{{scp}}} to the remote host and the compiler is called via {{{ssh}}} on the remote host too. Folder {{{MAKE_DEPOSITORY_abcde}}} is created under {{{base_directory}}} on the remote host. [=#svnupdate In case you have updated the PALM code, you need to call {{{palmbuild}}} again:] {{{ cd ~/palm/current_version svn update trunk palmbuild -c abcde }}} If you have changed the compiler options in the configuration file and like to re-compile the PALM code with the new options, you need to touch the source code files in your working copy of the repository first, {{{ touch trunk/SOURCE/*.f90 palmbuild -c abcde }}} because otherwise the make mechanism would see no changes in the source code and would not compile at all (message {{{make: Nothing to be done}}}). Alternatively, you may delete the MAKE_DEPOSITORY folder: {{{ rm -rf MAKE_DEPOSITORY_abcde palmbuild -c abcde }}} If you have more than one configuration file, you need to call {{{palmbuild}}} separately for each configuration. \\ == Automatic calls of {{{palmbuild}}} from {{{palmrun}}} == {{{palmbuild}}} is automatically called by {{{palmrun}}}, but only if {{{palmrun}}} has been manually called (i.e. if the {{{palmrun}}} call has been entered by the user in a terminal). There are two different calls for two different purposes: 1. If {{{palmrun}}} does not find a MAKE_DEPOSITORY folder, it calls {{{palmbuild}}} with the respective configuration identifier (e.g. {{{palmbuild -c abcde}}} in order to pre-compile PALM. 2. {{{palmbuild}}} is called to compile sources for the specific PALM run. This may be user-interface code (if there is any), or modified code from the working copy (i.e. from {{{.../trunk/SOURCE}}}) that has been specified by {{{palmrun}}} option {{{-s}}}. {{{palmrun}}} has put the respective source files (plus all other files from the MAKE_DEPOSITORY) into a newly created folder named {{{SOURCES_FOR_RUN__}}}, where {{{}}} is the configuration identifier and {{{}}} is the run identifier that have been specified with {{{palmrun}}} options {{{-c}}} and {{{-r}}}. This SOURCES_FOR_RUN-folder is created in the directory that has been specified by variable {{{base_directory}}} in the configuration file. {{{palmbuild}}} copies this folder to directory {{{$fast_io_catalog/SOURCES_FOR_RUN__}}} and compiles the user-interface or/and modified sources (if there are any). Variable {{{fast_io_catalog}}} is also defined in the configuration file. In case of remote jobs, the SOURCES_FOR_RUN folder is copied via {{{scp}}} and the compiler is invoked via {{{ssh}}}. The internal {{{palmbuild}}} call generally looks like {{{ palmbuild -v -c -r }}} where {{{