declare Version=2.1.6 #============================================================================== # Copyright and license info is available in the LICENSE file included with # the Server Deployment Package (SDP), and also available online: # https://swarm.workshop.perforce.com/projects/perforce-software-sdp/view/main/LICENSE #------------------------------------------------------------------------------ #============================================================================== # Standard Environment for bash scripts. # Use 'set -a' mode to export everything in this file. set -a # Require variables to be declared. set -u # Set aliaes for common commands. This is a safety/security precaution to # help ensure intended commands are run, rather than identically named # programs elsewhere in the PATH. Paths may need to adjusted if run on # different systems. alias rm=/bin/rm alias mkdir=/bin/mkdir alias mkpath="/bin/mkdir -p" alias printf="/usr/bin/printf" # Define a temporary directory. If /dev/shm (tmpfs) is available, try # to use it for optimal performance; otherwise use 'mktemp -d'. declare P4U_TMPDIR=$(mktemp -d) # Initialize GARBAGE to contain the $P4U_TMPDIR. GARBAGE contains a list # of files and/or directories to be removed (with rm -rf) upon termination # of the script. declare GARBAGE="$P4U_TMPDIR" declare RGARBAGE="" # Provide a baseline default VERBOSITY. Scripts may override this to define # a default for a specific script. Script users may override this on a per-run # basis. Scale: # 1=errors only # 2=errors and warnings # 3=normal # 4=verbose declare -i VERBOSITY=5 # Store just the name of the current script, useful for logging. declare THISSCRIPT=${0##*/} # Store the initial command line in $CMDLINE, useful for logging. declare CMDLINE="$0 $*" # Initialize the NO_OP ("no operation") test mode. If set to 1, scripts # interpret this to mean "show what would be done, without executing any # data-affecting commands." declare -i NO_OP=0 # Globals for runCmd() and run(), containing last command and its exit code. # runCmd() also stores output in $CMDOUTPUT; run() does not. declare CMDLAST="" declare -i CMDEXITCODE=0 declare CMDOUTPUT="" # Globals for runRemoteCmd() and rrun(), containing last command and its exit code. # runRemoteCmd() also stores output in $RCMDOUTPUT; rrun() does not. declare RCMDLAST="" declare -i RCMDEXITCODE=0 declare RCMDOUTPUT="" # Header, 79 characters of screen-splitting divider. declare H="\n===============================================================================" declare H1="${H}" declare H2="\n------------------------------------------------------------------------------" # At the end of this file, return to default behavior, undoing 'set -a' above. set +a
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#12 | 27722 | C. Thomas Tyler |
Refinements to @27712: * Resolved one out-of-date file (verify_sdp.sh). * Added missing adoc file for which HTML file had a change (WorkflowEnforcementTriggers.adoc). * Updated revdate/revnumber in *.adoc files. * Additional content updates in Server/Unix/p4/common/etc/cron.d/ReadMe.md. * Bumped version numbers on scripts with Version= def'n. * Generated HTML, PDF, and doc/gen files: - Most HTML and all PDF are generated using Makefiles that call an AsciiDoc utility. - HTML for Perl scripts is generated with pod2html. - doc/gen/*.man.txt files are generated with .../tools/gen_script_man_pages.sh. #review-27712 |
||
#11 | 26395 | C. Thomas Tyler | Shellcheck compliance changes. | ||
#10 | 25238 | C. Thomas Tyler |
Replaced references to /tmp with P4TMP (e.g. /p4/N/tmp) to avoid issues with SELinux incompatibility. For p4verify.sh, enhanced: * Minor performance enhancement: Added '-m1' flag to egrep that determines whether to exit code with non-zero, as we only need to detect one occurence. * Changed 'Warning:' to 'Error:' if verify errors are detected. * Removed redundant check that SDP_INSTANCE is set. * Added total time info. * Adjusted to pass 'shellcheck.sh' check. #review-25239 |
||
#9 | 22628 | C. Thomas Tyler |
Fixed minor order-of-processing bug resulting in a harmless error appearing at the end of script processing as cleanTrash() was called to clean garbage files. The run() function was called to clean garbage files/dirs just as a directory that function depended on got cleaned up. The fix was applied to scripts that used libcore.sh, including the template.sh template script. Also corrected comments in p4u_env.sh. Bypassing pre-commit review as this has been well tested. #review-22629 |
||
#8 | 22603 | C. Thomas Tyler |
Fixed minor order-of-processing bug resulting in a harmless error appearing at the end of script processing as cleanTrash() was called to clean garbage files. The run() function was called to clean garbage files/dirs just as a directory that function depended on got cleaned up. Also corrected comments in p4u_env.sh. |
||
#7 | 21962 | C. Thomas Tyler |
Updated various scripts to use run() and rrun() functions in favor of predecessor runCmd() and runRemoteCmd(). The older functions won't be removed to avoid breaking scripts that rely on their behavior and have no issues with them. The newer fuctions are more scalable and avoid erroneous "Argument list too long" from bash due to buffer overruns when used with commands with large amounts of output. Enhanced runRemoteCmd() to clean up after itself, as it generated files in /tmp that didn't get automatically cleaned up. If used in scripts called very often (e.g. every 5 minutes in a crontab), this leads to significant issues with /tmp filling up with garbage files over a period of several weeks. Enhanced test_utils.sh to test new run() and rrun() calls. |
||
#6 | 21525 | C. Thomas Tyler |
Portability fix for p4u_env.sh, used by hms_ts_setup and referenced in template.sh. Fixed to work back out a clever feature of using /dev/shm for fast temp storage, since this negatively impacts portability. Now we always use 'mkdtemp -d' for P4U_TMPDIR. |
||
#5 | 21103 | C. Thomas Tyler | Merge down to dev from main. | ||
#4 | 20382 | C. Thomas Tyler |
Tweaks to supplemental (non-core SDP) scripts p4u_env.sh, libcore.sh, template.sh: * Fixed bug relying on $USER, which is not guaranteed to be defined, preventing errors in unusual situations where it is not defined. * Streamlined temp file management, adding new P4U_TMPDIR directory, which is cleaned up automatically. It uses /dev/shm if available, otherwise 'mktemp -d'. * runCmd() and runRemoteCmd() now clean up temp files as they goes. * Added new 'captureOutputFlag' parameter to runRemoteCmd(), with similar semantics as with the same parameter in runCmd(). * Updated template.sh to illustrate new parameter in runRemoteCmd(). |
||
#3 | 16029 | C. Thomas Tyler |
Routine merge to dev from main using: p4 merge -b perforce_software-sdp-dev |
||
#2 | 13582 | C. Thomas Tyler |
Updated template.sh and associated bash libraries. Added show_versions() standard function and a standard '-V' flag to access it. Added version value definitions to all bash library files. |
||
#1 | 10638 | C. Thomas Tyler | Populate perforce_software-sdp-dev. | ||
//guest/perforce_software/sdp/main/Server/Unix/p4/common/lib/p4u_env.sh | |||||
#1 | 10148 | C. Thomas Tyler | Promoted the Perforce Server Deployment Package to The Workshop. |