= SDP Release Notes
Perforce Professional Services <consulting@perforce.com>
:revnumber: v2020.1
:revdate: 2021-01-29
:doctype: book
:icons: font
:toc:
:toclevels: 3
:sectnumlevels: 4
:xrefstyle: full
// Attribute for ifdef usage
:unix_doc: true

== Preface

*Please Give Us Feedback*

Perforce welcomes feedback from our users. Please send any suggestions for improving this document or the SDP to consulting@perforce.com.

:sectnums:

== Overview

These release notes document changes to the SDP.

There are two flavors of the SDP, Unix and Windows.

For UNIX/Linux, see: link:SDP_Guide.Unix.html[SDP Guide for UNIX/Linux]

For Windows, see: link:SDP_Guide.Windows.html[SDP Guide for Windows]

For information on upgradeing the SDP to the 2020.1 from prior releases on Linux, see the link:SDP_Legacy_Upgrades.Unix.html[SDP Legacy Upgrade Guide (for Unix)].

== What's New in SDP 2020.1.

In a nutshell, here is what the SDP r2020.1 release is all about:

* *Improved Documentation*. The SDP documentation has been reformatted to AsciiDoc. Documentation coverage has been expanded, new content added, and documentation for various scripts is now included in the main documentation.
* Publishing of xref:SDP_Guide.Unix.adoc#_the_journalprefix_standard[The journalPrefix Standard].
* Updating of the xref:SDP_Guide.Unix.adoc#_server_spec_naming_standard[Server Spec Naming Standard].
* Bug fixes and improvements to `load_checkpoint.sh`.
* Bug fixes and improvements to `p4verify.sh`. The `-recent` flag is fixed and verification of shelves has improved.
* Bug fixes and improvements to `mkrep.sh`, which adheres to documented standards.
* *Improved Helix Core Upgrades*. The `upgrade.sh` script that upgrades `p4`, `p4d`, `p4broker`, and `p4p` has been greatly improved, and a new `get_helix_binaries.sh` script added. Documentation now covers how to do Global Topology "Outer to Inner" upgrades.
* *Improved Self-Verification*. The `verify_sdp.sh` script has been improved to do many more checks. This script is also relied on by other SDP scripts to ensure things are in a good start before they start their processing. The `refresh_P4ROOT_from_offline_db.sh` and `upgrade.sh` scripts use `verify_sdp.sh`.
* The systemd interactions have been improved in a few key ways. Notably, on systems in which systemd is configured, a safety check now ensure that systemd is used, so that systemd's concept of service status is reliable. The format of the systemd unit files changes with this release.

More details is in the <<Change History>> below.

== What's Coming Next in SDP 2021.1?

A key feature of the coming SDP 2021.1 release will be addition of automation to greatly simplify upgrades of the SDP itself. This will apply to SDP versions starting from this 2020.1 release going to the 2021.1 and future releases.  Starting in the 2021.1 release, SDP ugprades will be similar to p4d upgrades in that whatever the current version is will always be able to upgrade from prior releases (going back to this 2020.1 release).

== SDP Health Checks

If you need to contact Perforce Support to analyze an SDP issue on UNIX/Linux, you can use the `sdp_health_check.sh` script. This script is not included in the SDP, but it can be used with all versions of the SDP dating back to 2007.

To gather health check information, do the following:

 cd /p4/1/tmp
 curl -s -k -O https://swarm.workshop.perforce.com/projects/perforce-software-sdp/download/tools/sdp_health_check.sh
 chmod +x sdp_health_check.sh
 ./sdp_health_check.sh

This script will produce a log file that can be provided to Perforce Support to help diagnose configuration issues and other problems.

== Change History

Released: Rev. SDP/MultiArch/2020.1/27351 (2021/01/31) - Patch 1

Jobs Fixed since change 27325 up to 27351 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-589[SDP-589] (B): Correct version checks for p4d major version.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-570[SDP-570] (F): Add upgrade.sh '-M' manual option relinking binaries w/o -xu.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-588[SDP-588] (F): Enhance verify_sdp.sh to allow skipping offline_db checks.

Released: Rev. SDP/MultiArch/2020.1/27325 (2021/01/29) - General Availability

Jobs Fixed since change 26494 up to 27325 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-245[SDP-245] (B): Prevent generation of db.* files in empty P4ROOT when sourcing p4_vars.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-246[SDP-246] (B): Sourcing p4_vars hangs if live_checkpoint.sh is running.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-373[SDP-373] (B): Typo on page 22 of guide (Section 4.2): modifed vs modified
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-397[SDP-397] (F): Support SDP hosts without p4d, p4p/p4broker or p4dtg only.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-428[SDP-428] (F): Add safety check to ensure systemd is used if required.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-432[SDP-432] (F): Enhance distinction of what is Supported and Unsupported.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-439[SDP-439] (B): DOC: SDP Guide for setting up a replica is missing key items.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-460[SDP-460] (B): Script 'broker_rotate.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-461[SDP-461] (B): Script 'edge_dump.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-462[SDP-462] (B): Script 'edge_shelf_replicate.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-463[SDP-463] (B): Script 'edge_vars' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-464[SDP-464] (B): Script 'gen_default_broker_cfg.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-465[SDP-465] (B): Script 'htd_move_logs.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-466[SDP-466] (B): Script 'journal_watch.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-467[SDP-467] (B): Script 'kill_idle.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-468[SDP-468] (B): Script 'load_checkpoint.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-469[SDP-469] (B): Script 'mkrep.sh' is not mentioned in the SDP Guide (Unix). 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-470[SDP-470] (B): Script 'p4broker_base' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-471[SDP-471] (B): Script 'p4dstate.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-472[SDP-472] (B): Script 'p4ftpd_base' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-473[SDP-473] (B): Script 'p4login-super.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-474[SDP-474] (B): Script 'p4p_base' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-475[SDP-475] (B): Script 'p4pcm.pl' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-476[SDP-476] (B): Script 'p4review2.py' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-477[SDP-477] (B): Script 'p4sanity_check.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-478[SDP-478] (B): Script 'p4web_base' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-481[SDP-481] (B): Script 'ps_functions.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-482[SDP-482] (B): Script 'purge_revisions.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-483[SDP-483] (B): Script 'recover_edge.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-484[SDP-484] (B): Script 'replica_cleanup.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-485[SDP-485] (B): Script 'replica_status.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-486[SDP-486] (B): Script 'request_replica_checkpoint.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-487[SDP-487] (B): Script 'rotate_journal.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-488[SDP-488] (B): Script 'template.pl' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-489[SDP-489] (B): Script 'template.py' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-490[SDP-490] (B): Script 'template.py.cfg' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-491[SDP-491] (B): Script 'template.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-492[SDP-492] (B): Script 'update_limits.py' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-493[SDP-493] (B): Script 'verify_sdp.sh' is not mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-495[SDP-495] (B): SDP Guide mentions now-deleted/obsolete script. 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-496[SDP-496] (B): Script 'backup_functions.sh' is mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-497[SDP-497] (B): Script 'p4d_base' is mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-498[SDP-498] (B): Script 'p4verify.sh' is mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-499[SDP-499] (B): Script 'run_if_edge.sh' is mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-500[SDP-500] (B): Script 'run_if_master.sh' is mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-501[SDP-501] (B): Script 'run_if_replica.sh' is mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-502[SDP-502] (B): Script 'sync_replica.sh' is mentioned in the SDP Guide (Unix).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-503[SDP-503] (B): SDP Guide mentions some scripts by most of the filename, not all of it. 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-504[SDP-504] (B): SDP Guide mentions "weekly_checkpoint" script under "daily_checkpoint": 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-505[SDP-505] (F): Added P4MASTERPORT checks to verify_sdp.sh
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-507[SDP-507] (B): p4d_1.service includes wrong doc link 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-508[SDP-508] (B): p4broker_1.service includes wrong doc link 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-509[SDP-509] (B): "sdp-administrator-guide.docx" needs to be removed or updated. 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-512[SDP-512] (B): upgrade.sh needs clearer documented explanation
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-523[SDP-523] (B): Missing 'failover' document
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-535[SDP-535] (B): False-positive on journal corruption check w/multi-line journal entries.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-538[SDP-538] (F): Document systemd interactions with SDP init scripts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-541[SDP-541] (F): Make 'p4d' rather than 'p4d_N' safe to run.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-543[SDP-543] (B): The configure_new_server.sh failed with unbound LOGFILE variable error.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-545[SDP-545] (B): DOC: PDF contains "Reference source not found" errors.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-546[SDP-546] (B): Documentation out of date.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-548[SDP-548] (B): Standby won't start pull if journal.NNN exists.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-554[SDP-554] (B): Incorrect Server ID when deploying an edge server.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-553[SDP-553] (B): Remove 'Operating System' from configurable rejectList.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-558[SDP-558] (B): Fix bug with '-recent' flag in p4verify.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-559[SDP-559] (B): Fix load_checkpoint.sh init issue if '-s <ServerID>' is used.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-564[SDP-564] (F): Normalized SDP Versioning will start in the SDP r20.1 release.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-565[SDP-565] (F): Enhance verify_sdp.sh to allow optional skip of some tests.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-566[SDP-566] (F): Add Support-recommended sysctl settings to SDP.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-567[SDP-567] (F): Add setting for server.extensions.dir.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-569[SDP-569] (F): Rename upcoming /p4/sdp/exes to /p4/sdp/helix_binaries
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-572[SDP-572] (B): Fixed issue where No Checkpoints reported if 'find' doesn't support '-printf'.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-573[SDP-573] (B): mkdirs.sh is not respecting MASTER_ID from config file
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-574[SDP-574] (B): daily_checkpoint.sh hangs if journalPrefix is wrong.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-575[SDP-575] (B): The stop_p4d() function reports 'missing server.pid' error with systemd.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-576[SDP-576] (F): Added documentation for handling multiple broker configs with systemd.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-578[SDP-578] (B): The offline_db_usable.txt file is not updated when rotate_journal.sh is used.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-579[SDP-579] (B): Edge recover script fails to run if p4_vars not sourced first.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-581[SDP-581] (F): Added optional check that P4MASTER_ID starts with 'master' to verify_sdp.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-583[SDP-583] (E): Enhance verify_sdp.sh and upgrade.sh to handle proxy-only and broker-only machines.

Released: Rev. SDP/MultiArch/2019.3/26494 (2020/04/23).

Jobs Fixed since change 26478 up to 26494 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-529[SDP-529] (F): Add ability to limit specific commands to one-per-user, e.g. populate.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-531[SDP-531] (B): The recover_edge.sh script needed updating to use new start/stop functions.

Released: Rev. SDP/MultiArch/2019.3/26478 (2020/04/12).

Jobs Fixed since change 26472 up to 26478 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-527[SDP-527] (B): Patch to rotate_journal.sh and add test coverage for it.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-528[SDP-528] (F): Enhance dynamic check to work with replicas that do not set journalPrefix.

Released: Rev. SDP/MultiArch/2019.3/26472 (2020/04/10).

Jobs Fixed since change 26468 up to 26472 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-526[SDP-526] (F): Use dynamic journalPrefix detection for non-master servers.

Released: Rev. SDP/MultiArch/2019.3/26468 (2020/04/10).

Jobs Fixed since change 26407 up to 26468 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-446[SDP-446] (B): wrong variables used in recreate_offline_db_files
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-519[SDP-519] (B): Fixed missing variable initialization in load_checkpoint.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-520[SDP-520] (F): Add login and trust logic to load_checkpoint.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-521[SDP-521] (F): Have load_checkpoint.sh handle P4SSLDIR and cert creation automatically.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-522[SDP-522] (F): Have load_checkpoint.sh check for a license file.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-524[SDP-524] (B): Fix refresh_P4ROOT_from_offline_db.sh to work on a non-edge replica.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-525[SDP-525] (B): Remove parallel checkpoint scripts temporarily.

Released: Rev. SDP/MultiArch/2019.3/26407 (2020/03/28).

Jobs Fixed since change 26400 up to 26407 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-427[SDP-427] (F): Use systemd consistently if availabile for p4d start/stop.

Released: Rev. SDP/MultiArch/2019.3/26400 (2020/03/28).

Jobs Fixed since change 26239 up to 26400 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-427[SDP-427] (F): Use systemd consistently if availabile for p4d start/stop.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-431[SDP-431] (F): Make p4d startup resistant to timing issues for reboots & fast
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-436[SDP-436] (F): Provide snapshot hook for daily_checkpoint.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-444[SDP-444] (F): Add script to safely refresh P4ROOT db.* from offline_db.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-451[SDP-451] (F): Added '-f <P4TARGET>' flag to mkrep.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-452[SDP-452] (F): Enhance mkrep.sh to instruct using edge_dump.sh for edge servers.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-453[SDP-453] (F): For filtered replicas, have mkrep.sh instruct using '-P ServerID'.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-454[SDP-454] (B): verify_sdp.sh should handle being run as root
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-455[SDP-455] (F): Add license expiration check to verify_sdp.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-510[SDP-510] (B): Fix issue with 'clean start' test suite run due to Python symlink issues.

Released: Rev. SDP/MultiArch/2019.3/26239 (2020/01/08).

Jobs Fixed since change 26159 up to 26239 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-423[SDP-423] (B): slight typo in comment /p4/INSTANCe/checkpoints
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-430[SDP-430] (B): Fixed typo causing os_tweaks.sh not to recognize Ubuntu 18.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-437[SDP-437] (F): Enhance mkdirs.sh for standby replicas to match other replica types.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-441[SDP-441] (B): Upgrade.ps1 fails with error for Windows SDP
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-443[SDP-443] (B): Fix in maint scripts to pickup SDP_INSTANCE if no arg passed.

Released: Rev. SDP/MultiArch/2019.3/26159 (2019/11/06).

Jobs Fixed since change 25949 up to 26159 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-448[SDP-448] (F): Enable 'p4 submit -b' by setting submit.allowbgtransfer=1 for P4D 2019.1.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-352[SDP-352] (F): Eliminate excessive journal rotations on p4d startup.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-412[SDP-412] (B): Backup failing as logs cannot be rotated as the server is too busy.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-424[SDP-424] (B): sync_replica.sh fails on standby replica w/rpl.journalcopy.location=1.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-425[SDP-425] (B): mkrep.sh fails for replica of replica due to ReplicatingFrom field hard coded to master.1
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-426[SDP-426] (F): Add -f flag to p4d -jr on SDP for Windows.

Released: Rev. SDP/MultiArch/2019.2/25949 (2019/08/12).

Jobs Fixed since change 25938 up to 25949 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-415[SDP-415] (B): Fixed typo in scripts for handling edge servers.

Released: Rev. SDP/MultiArch/2019.2/25938 (2019/08/05).

Jobs Fixed since change 25923 up to 25938 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-414[SDP-414] (B): Fixed issue with safety check in edge processing scripts.

Released: Rev. SDP/MultiArch/2019.2/25923 (2019/08/05).

Jobs Fixed since change 25594 up to 25923 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-398[SDP-398] (F): Disallow replicas from being initially mandatory per P4D 2019.1 requirement.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-400[SDP-400] (B): Fixed p4login bug where P4PORT value can have a value of Unset.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-401[SDP-401] (F): Enanced replica_status.sh to check archive replication.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-403[SDP-403] (B): Fixed root-owned symlinks in /p4/N after running mkdirs.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-404[SDP-404] (F): Update edge scripts to support 2019.1+ changes to edge servers.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-405[SDP-405] (F): Enhanced load_checkpoint.sh to handle case-insensitive checkpoints.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-410[SDP-410] (B): [R]CMDEXITCODE not set when [r]run() called with 'grep string' parameter.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-413[SDP-413] (F): Add script to request checkpoint on edge/replica.

Released: Rev. SDP/MultiArch/2019.2/25594 (2019/05/02).

Jobs Fixed since change 25480 up to 25594 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-356[SDP-356] (F): Reduce SDP Core to contain only software supported by Perforce Support.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-369[SDP-369] (F): Added flags to p4verify.sh to verify by type like shelved.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-374[SDP-374] (B): Fixed off-by-three-orders-of-magnitude error in proxy cleanup script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-378[SDP-378] (F): Removed journalPrefix as command line paramter during journal rotation, deferring to db.config values.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-380[SDP-380] (F): Removed journalPrefix as command line paramter during journal rotation, deferring to db.config values.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-383[SDP-383] (F): Added '-a' flag meant to be equivalent of most common set of flags.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-384[SDP-384] (B): Fixed failure to cleanup old logs in sdp_sync.sh on Ubuntu Linux.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-392[SDP-392] (B): upgrade.sh must handle new 19.1 features
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-393[SDP-393] (B): Fixed perms on purge_revisions.sh and journal_watch.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-394[SDP-394] (F): Added support for wildcards/globbing to purge_revisions.sh scripts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-395[SDP-395] (F): Added support for 2019.1 upgrades and testing of same.

Released: Rev. SDP/MultiArch/2019.1/25480 (2019/04/11).

Jobs Fixed since change 25386 up to 25480 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-382[SDP-382] (B): Fixed missing 'exit 1' in p4d_base after 'p4d -xvU' check failure.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-387[SDP-387] (F): Test harness should run verify_sdp.sh and look for errors.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-390[SDP-390] (B): Removed crontab refs to deleted scripts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-391[SDP-391] (B): In mkdir.sh, fixed root ownership of generated crontab file.

Released: Rev. SDP/MultiArch/2019.1/25386 (2019/03/21).

Jobs Fixed since change 25374 up to 25386 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-379[SDP-379] (B): Fixed mkdirs.sh issue with SSL-enabled installs due to chown issue.

Released: Rev. SDP/MultiArch/2019.1/25374 (2019/03/21).

Jobs Fixed since change 25320 up to 25374 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-302[SDP-302] (F): Parallelized checkpoint processing to reduce duration.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-375[SDP-375] (B): Fix ownership and missing symlink issues in mkdirs.sh.

Released: Rev. SDP/MultiArch/2019.1/25320 (2019/03/08).

Jobs Fixed since change 25309 up to 25320 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-372[SDP-372] (B): Fixed breaking test - logic around $CN was misunderstood.

Released: Rev. SDP/MultiArch/2019.1/25309 (2019/03/07).

Jobs Fixed since change 25276 up to 25309 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-370[SDP-370] (B): Fix issue with mkdirs.sh -test mode.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-371[SDP-371] (B): Fixed install_sdp_perl to work with updated P4Perl.

Released: Rev. SDP/MultiArch/2019.1/25276 (2019/03/06).

Jobs Fixed since change 25238 up to 25276 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-368[SDP-368] (B): Fix syntax errors for SDP_ADMIN_PASSWORD_FILE in backup_functions.sh.

Released: Rev. SDP/MultiArch/2019.1/25238 (2019/03/02).

Jobs Fixed since change 23583 up to 25238 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-198[SDP-198] (B): DOC: SDP Guide needs more detail on SDP-controlled replica setup.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-247[SDP-247] (B): Need a validation script to check current status, especially after an upgrade from older version of SDP.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-255[SDP-255] (B): Update SDP documentation to deal with SSL enabled servers.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-256[SDP-256] (B): Update documentation to include mkdirs.cfg instead of updating mkdirs.sh
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-269[SDP-269] (F): Optimize journalPrefix values for master, edge, standby, replica.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-296[SDP-296] (B): Fixed bug where updates to os_tweaks.sh dropped support for RHEL 6.5.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-297[SDP-297] (B): Fixed handling of unlaod depots in p4verify.sh
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-298[SDP-298] (B): Avoid checking for shelved files in spec depot.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-299[SDP-299] (F): Enhanced HMS failover for standby/journalcopy replicas to use 'p4 admin end-journal'
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-300[SDP-300] (F): Set rpl.journalcopy.location=1 for p4d 2018.1+ servers.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-301[SDP-301] (B): Crontab spamming emails if configurable track=1
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-304[SDP-304] (B): Fixed issues with hms status for SSL-enabled servers, etc.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-305[SDP-305] (F): Enhancemnts in libcore.sh bail(), errmsg(), initlog(), and stoplog() functions.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-306[SDP-306] (B): Moved cset of P4JOURNAL so it's done only on masteror edge server.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-307[SDP-307] (F): Changed hms remote spec for the Public Depot to be the default 'origin'.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-308[SDP-308] (F): Set rpl.journalcopy.location=1 for 2018.1+ standby replicas.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-311[SDP-311] (B): Avoid unnecessary removal of rdb.lbr in db swap.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-313[SDP-313] (F): Batch of validate_sdp.sh enhancements.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-314[SDP-314] (B): Fixed scary but otherwise harmless error in Cmd.pm
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-315[SDP-315] (F): Reformat protections table comment format during upgrades.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-316[SDP-316] (F): Added script to rotate live journal due low disk space
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-317[SDP-317] (B): Fixed issue preventing failover from an edge servder.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-318[SDP-318] (B): Removed HMS references to /usr/local/bin/bash.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-319[SDP-319] (F): Use 'p4 monitor terminate' rather than 'kill' for idle pids.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-325[SDP-325] (F): Enhanced rejectList setting for P4EXP.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-326[SDP-326] (F): Enhanced rejectList setting for P4EXP.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-327[SDP-327] (B): DOC: must I create /hx*?
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-328[SDP-328] (B): DOC: mismatch between setup instructions and setup script
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-329[SDP-329] (B): DOC: folder permissions
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-330[SDP-330] (B): DOC: to where should we copy the tgz file?
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-331[SDP-331] (B): DOC: lack of clarity on folder ownership.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-332[SDP-332] (B): DOC: setting executable bit on p4 etc.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-333[SDP-333] (B): DOC: reorder the create user/group sequence on Linux.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-334[SDP-334] (B): DOC: no comment on mkdirs.N.cfg, referenced in the mkdirs.sh script. 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-335[SDP-335] (B): DOC: no comment on ssl certificate generation. 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-337[SDP-337] (B): The upgrade.sh script, used to update your p4/p4d executables and corresponding database, starts with the message: 
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-338[SDP-338] (F): DOC: server upgrades and checkpoint
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-339[SDP-339] (B): DOC: non-existent script referenced in docs
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-341[SDP-341] (B): Critical recreate_db_checkpoint.sh bug with shared /hxdepots shared.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-342[SDP-342] (B): Fixed issue with P4Triggers.py impacting CheckCaseTrigger.py, etc.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-345[SDP-345] (B): Implemented '-r' flag to clean up old logs in global_replica_status.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-347[SDP-347] (F): Enhance CaseCheckTrigger to work even if defaultChangeType is set to restricted.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-348[SDP-348] (F): Enhanced CheckCaseTrigger.py to enable bypass.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-350[SDP-350] (F): Support SELinux ("Security Enhanced Linux)") in enforcing mode.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-353[SDP-353] (F): Avoid doing 'p4d -cset' for P4JOURNAL, but preserve safety feature.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-362[SDP-362] (B): p4verify.sh -remote ignores SDP_RECENT_CHANGES_TO_VERIFY.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-366[SDP-366] (F): Optimize display of Support messaging.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-367[SDP-367] (B): p4verify.sh should also specify the -t (transfer) option for edge servers like it currently does for replicas.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-49[SDP-49] (B): SDP Guide: inconsistent user name used in setup instructions. Page 9 of the pdf, step 1 says create user 'p4admin'. The rest of the guide that I've read, and the mkdirs.sh script, all refer to user 'perforce'.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-73[SDP-73] (F): Add Evil Twin detector/prevention trigger.

Released: Rev. SDP/MultiArch/2018.1/23583.p2 (2019/01/23).

Jobs Fixed since change 23583.p1 up to 23583.p2 (F=Feature, B=Bug):
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-366[SDP-366] (F): Optimize display of Support messaging.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-341[SDP-341] (B): Critical recreate_db_sync_replica.sh bug with shared /hxdepots shared.

Released: Rev. SDP/MultiArch/2018.1/23583.p1 (2018/07/13).

PATCH release fixes * https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-341[SDP-341].
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-341[SDP-341] (B): Critical recreate_db_checkpoint.sh bug with shared /hxdepots shared.

Released: Rev. SDP/MultiArch/2018.1/23583 (2018/02/08).

Jobs Fixed since change 23504 up to 23583 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-287[SDP-287] (B): Fixed mkdirs.sh bug fixing ownership of wrong dir. 2nd fx for * https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-287[SDP-287].

Released: Rev. SDP/MultiArch/2018.1/23504 (2018/01/19).

Jobs Fixed since change 23354 up to 23504 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-285[SDP-285] (B): The use of "tee" in p4d_base causes start to hang on some systems with 2016.2 p4d
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-286[SDP-286] (B): Fixed: In configure_new_server.*, super user not logged in after restart.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-287[SDP-287] (B): Fixed mkdirs.sh bug fixing ownership of wrong dir.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-290[SDP-290] (F): Added SDP-standard Ruby to PATH.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-291[SDP-291] (F): Added workflow support triggers.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-292[SDP-292] (F): Enhancements to p4dstate.sh.

Released: Rev. SDP/MultiArch/2017.4/23354 (2017/12/08).

Jobs Fixed since change 23329 up to 23354 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-281[SDP-281] (B): Fixed journalPrefix logic in mkdirs.sh

Released: Rev. SDP/MultiArch/2017.4/23329 (2017/12/05).

Jobs Fixed since change 23041 up to 23329 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-265[SDP-265] (B): sync_replica.sh and recreate_db_sync_replica.sh should avoid rsync compression
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-266[SDP-266] (B): Fixed logging issue with sync_replica.sh and recreate_db_sync_replica.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-267[SDP-267] (B): Fixed issue detecting an edge server; wrong EDGESERVER value.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-268[SDP-268] (F): Added basic comments to all functions in backup_functions.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-269[SDP-269] (F): Optimize journalPrefix values for master, edge, standby, replica.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-270[SDP-270] (F): Added trigger script to create Swarm reviews (and unit test).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-271[SDP-271] (F): Refactor to push common arg_parse into P4Triggers.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-272[SDP-272] (F): Enhance p4login info in error output, added -d debug flag.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-273[SDP-273] (F): New RequireJob pre-submit trigger.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-274[SDP-274] (F): Added trigger to validate contents YAML files.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-276[SDP-276] (B): Make mkrep.sh work when /p4/hms instance does not exist.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-277[SDP-277] (F): Added license time remaining check script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-278[SDP-278] (F): Enhance upgrade.sh run on machines with only broker/proxy.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-279[SDP-279] (F): Added filetype.bypasslock=1 configurable, recommended for Swarm.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-280[SDP-280] (F): Updated Support coverage info and enhanced other info in SDP README file.

Released: Rev. SDP/MultiArch/2017.3/23041 (2017/10/24).

Jobs Fixed since change 23003 up to 23041 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-143[SDP-143] (F): Enhance init scripts to display usage with no args.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-259[SDP-259] (B): Fixed logging issue in upgrade.sh - p4broker/p4p start/stop not captured.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-260[SDP-260] (F): Simplified stop_p4d() in backup function due to logic now in p4d_base.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-261[SDP-261] (B): Fixed minor issue message about rotating journal escaping log capture.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-262[SDP-262] (F): Take advantage of '--daemonsafe' arg in P4D 2017.1.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-263[SDP-263] (B): Fixed login count in p4login script.

Released: Rev. SDP/MultiArch/2017.3/23003 (2017/10/19).

Jobs Fixed since change 22201 up to 23003 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-223[SDP-223] (B): Fix EDGESERVER check in p4d_base regression.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-224[SDP-224] (B): Fix os_tweaks.sh to work on RHEL/CentOS 6.9.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-225[SDP-225] (B): Updated hms_ts_setup.sh to adapt to mkdirs.cfg changes.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-226[SDP-226] (B): Fixed typo in variable name in libcore.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-227[SDP-227] (B): install_sdp_perl.sh: Added DVCS environment isolation safety feature.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-228[SDP-228] (F): install_sdp_perl.sh: Now uses r17.1 API.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-232[SDP-232] (F): Re-establish autologinprompt default behavior.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-233[SDP-233] (B): Fix bug in sdp_sync.sh related to args passed to rrun function.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-234[SDP-234] (B): Change Unix default server.id to be unique to support remote depots
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-236[SDP-236] (B): Avoid issues interacting with incompatible local Perl.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-237[SDP-237] (B): Scripts using libcore.sh display a harmless but scary error after all processing completes.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-239[SDP-239] (F): Renamed crontab templates files to be template.job.p4s rather than *.template.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-240[SDP-240] (B): Fixed cosmetic logging bug affecting several scripts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-241[SDP-241] (B): Update systemd templates to add new wait targets.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-242[SDP-242] (B): Corrected filetypes on some scripts to chmod +x.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-248[SDP-248] (F): Provide an override for diff between proxy listen and target ports.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-249[SDP-249] (F): Extended P4IGNORE for more Mac files.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-250[SDP-250] (F): Add value for db.monitor.shared configurable.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-251[SDP-251] (F): Tweaked versions for which net.tcpsize=0 is set.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-252[SDP-252] (B): SetWsOptionsAndView.py trigger should exit 0 when p4 client used w/ -t <template>.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-253[SDP-253] (F): Various Windows SDP enhancements.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-254[SDP-254] (F): Added SDP Overview slide preso to SDP.

Released: Rev. SDP/MultiArch/2017.2/22201 (2017/05/18).

Jobs Fixed since change 22177 up to 22201 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-222[SDP-222] (B): Fixed issue with testing mkdirs.sh on Mac.

Released: Rev. SDP/MultiArch/2017.2/22177 (2017/05/17).

Jobs Fixed since change 21808 up to 22177 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-153[SDP-153] (B): Maintenance script unload_clients_with_delete.py needs to ignore swarm workspaces to avoid losing data.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-195[SDP-195] (F): Added new configurable setting: 'filesys.bufsize=1M'.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-196[SDP-196] (B): Fixed bug in unload_labels.py, weeks passed in as days.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-197[SDP-197] (B): Fixed bug in Windows Powershell p4verify.ps1 script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-200[SDP-200] (B): Fixed issue with /tmp getting polluted with temp files.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-201[SDP-201] (F): Various scripts favor more scalable run()/rrun() over
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-202[SDP-202] (F): HMS scripts normalize to /bin/bash, check BASH_VERSION
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-203[SDP-203] (F): Added new JobIncrement trigger to simplify custom job name usage.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-210[SDP-210] (F): Enhanced P4DTG init script reliability.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-215[SDP-215] (F): Added new configurable setting: 'dm.user.loginattempts=7'.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-216[SDP-216] (F): Refactored mkdirs.sh extracting user-config into mkdirs.cfg.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-219[SDP-219] (B): Corrected logic on skipping the swarm user in remove_empty_pending_changes.py
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-220[SDP-220] (F): Added triggers using alternative file transfer for submit/pull.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-221[SDP-221] (F): Enhanced to rotate p4verify.log like other logs.

Released: Rev. SDP/MultiArch/2017.1/21808 (2017/03/08).

Jobs Fixed since change 21720 up to 21808 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-191[SDP-191] (B): Fixed default threshholds values in proxy cache cleaner.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-192[SDP-192] (B): User deletion maint script handles usernames with backslash.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-193[SDP-193] (F): Enhance proxy init script to incorporate monitoring, adding default value in p4_vars.

Released: Rev. SDP/MultiArch/2017.1/21720 (2017/02/17).

Jobs Fixed since change 21528 up to 21720 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-179[SDP-179] (F): Enhanced install_sdp_perl.sh to build with P4Perl from The Workshop
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-181[SDP-181] (B): Fixed issue keeping recreate_db_sync_replca.sh from fixing a replica out-of-sync issue.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-182[SDP-182] (F): Enhanced and updated install_sdp_perl.sh
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-183[SDP-183] (B): In recreate_db_sync_replica.sh, ensure P4ROOT and OFFLINE_DB are cleaned.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-184[SDP-184] (B): Fixed bug resulting in error sending email on Ubuntu.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-185[SDP-185] (F): Added PowerShell script p4verify.ps1 to verify on Windows.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-186[SDP-186] (F): Simplified Windows setup with batch wrappers to PowerShell scripts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-187[SDP-187] (F): General Unix doc enhancements.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-188[SDP-188] (F): Enhanced Perl library modules.
SDP0190 (B): Fixed hms failover bug targeting wrong host with multiple possible targets.

Released: Rev. SDP/MultiArch/2016.2/21528 (2017/01/14).

Jobs Fixed since change 21489 up to 21528 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-160[SDP-160] (F): Enhanced P4Triggers.py to print exceptions encountered.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-175[SDP-175] (F): Added more exclusions to /p4/.pignore.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-176[SDP-176] (B): Fixed issues with hms_ts_setup.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-177[SDP-177] (B): Backed out clever tempdir feature that negatively impacted portability.

Released: Rev. SDP/MultiArch/2016.2/21489 (2017/01/11).

Jobs Fixed since change 21480 up to 21489 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-174[SDP-174] (B): Added Suffix field to spec depot in new servers.

Released: Rev. SDP/MultiArch/2016.2/21480 (2017/01/11).

Jobs Fixed since change 21379 up to 21480 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-167[SDP-167] (F): Added server.start.unlicensed configurable.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-168[SDP-168] (F): Work around RHEL/CentOS 7 command completion issue.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-169[SDP-169] (B): Fixed install_sdp_python.sh issue with building P4Python for SSL-enabled server.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-170[SDP-170] (F): Added script to lowercase a directory tree.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-171[SDP-171] (F): Added SSL support in hms_ts_setup.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-172[SDP-172] (B): Fixed bug in upgrade.sh introduced when truncate journal was changed to use p4 admin journal.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-173[SDP-173] (F): Enhanced SSL support in install_sdp_python.sh to account for varied OpenSSL installations.

Released: Rev. SDP/MultiArch/2016.2/21379 (2016/12/20).

Jobs Fixed since change 21328 up to 21379 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-165[SDP-165] (F): Simplified SSL autogen cert generation.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-166[SDP-166] (B): Re-login after setting auth.id, restart at end of script.

Released: Rev. SDP/MultiArch/2016.2/21328 (2016/12/16).

Jobs Fixed since change 21239 up to 21328 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-157[SDP-157] (F): Added sample /Users/perforce/.mailrc.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-158[SDP-158] (F): SDP-ified log, moving p4triggers.log to ${LOGS}.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-159[SDP-159] (F): Updated to hms tight ship setup script, still WIP.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-161[SDP-161] (F): Added script to lowercase a dir tree.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-162[SDP-162] (F): Added initial HMS tight ship script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-163[SDP-163] (F): Standardized doc format to docx.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-164[SDP-164] (F): Enhanced to support enterprise environments with two metadata volumes.

Released: Rev. SDP/MultiArch/2016.2/21239 (2016/12/06).

Jobs Fixed since change 21193 up to 21239 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-154[SDP-154] (F): Enable auth.id for P4D 2016.1+ servers.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-155[SDP-155] (F): Suppress known-harmless errors in p4verify.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-156[SDP-156] (F): Enhance install_sdp_p* scripts to remove hard-coded dependency on an instance 1.

Released: Rev. SDP/MultiArch/2016.2/21193 (2016/12/2).

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-138[SDP-138] (F): Take advantage of new 2016.2 configurables.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-147[SDP-147] (F): Add CentOS 7 support to os_tweaks.sh
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-148[SDP-148] (F): Update SDP Python/Perl install to use 'http:' rather than 'ftp:' in URLs.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-150[SDP-150] (B): Correct cp path for ssl dir.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-151[SDP-151] (F): Enhance Windows SDP install to server.depot.root.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-152[SDP-152] (F): Enhance to support 2 volumes for root/offline_db.  Modified
directory structure and scripts to support storing root and offline database
on two different volumes. This is actually a preferred configuration now for
performance and safety.

Released: Rev. SDP/MultiArch/2016.2/21123 (2016/11/22).

Jobs Fixed since change 21103 up to 21123 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-149[SDP-149] (B): Fix shebang line for case check trigger.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-150[SDP-150] (B): Correct cp path for ssl dir.

Released: Rev. SDP/MultiArch/2016.2/21103 (2016/11/21).

Jobs Fixed since change 21101 up to 21103 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-146[SDP-146] (F): Added doc-only hms setup scripts.

Released: Rev. SDP/MultiArch/2016.2/21101 (2016/11/21).

Jobs Fixed since change 21033 up to 21101 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-144[SDP-144] (F): Add CheckCaseTrigger.p to the SDP.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-145[SDP-145] (F): Various doc update for hms and failover.

Released: Rev. SDP/MultiArch/2016.2/21033 (2016/11/10).

Jobs Fixed since change 20995 up to 21033 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-139[SDP-139] (B): mkrep.sh: Add missing journalcopy to standby replicas.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-140[SDP-140] (B): hms: Fixed issues with script hang on local failover.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-141[SDP-141] (F): hms: Replaced hard-coded master ServerID value with configured value.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-142[SDP-142] (B): Fix p4verify.sh bug when -recent flag is used.

Released: Rev. SDP/MultiArch/2016.2/20995 (2016/11/07).

Jobs Fixed since change 20972 up to 20995 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-134[SDP-134] (B): p4verify.sh is currently broken - use of an unbounded variable ($d);  use of the -recent option fails as for verify -S you cannot specify a range (only @= is supported) ;  stripping out archive,unload+remote depots also not working. get_verofy_rev_range used depot name incorrectly in changes
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-136[SDP-136] (B): Tweaked maint scripts to handle oddly named groups.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-137[SDP-137] (F): Added new CN setting for /p4/common to test folder paths.

Released: Rev. SDP/MultiArch/2016.2/20972 (2016/11/01).

Jobs Fixed since change 20856 up to 20970 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-120[SDP-120] (F): Add -recent flag to p4verify.sh to verify recent changes.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-126[SDP-126] (B): p4login.*.log files are not being cleaned up by the standard clean-up mechanism (remove_old_logs in backup_function.sh).
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-127[SDP-127] (F): Allow for multiple depot volumes.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-128[SDP-128] (B): Fixed missing LOGFILE varialbe issue in p4verify.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-129[SDP-129] (B): Fix formatting of logs to use simple HTML line breaks for Windows SDP.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-130[SDP-130] (B): Various test suite improvements.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-131[SDP-131] (B): fixed issue with broken def'n of P4PORT with multiple SSL prefixes.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-132[SDP-132] (F): Enhanced two-factor auth mechanims.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-133[SDP-133] (F): Tweak to slightly reduce mkdirs.sh configuration.

Released: Rev. SDP/MultiArch/2016.2/20856 (2016/10/04).

Jobs Fixed since change 20805 up to 20856 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-121[SDP-121] (F): Enhanced logic to favor init scripts in /p4/N/bin over /etc/init.d.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-122[SDP-122] (B): Fixed quoting bug in p4login.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-123[SDP-123] (F): hms checks for cfg files in /p4/common/config.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-124[SDP-124] (B): Fixed hms bug re: wrong master host discovered in failback testing

Released: Rev. SDP/MultiArch/2016.2/20805 (2016/10/02).

Jobs Fixed since change 20790 up to 20805 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-116[SDP-116] (B): Fixed ssh hang issues with hms scripts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-117[SDP-117] (F): Implemented global/central start stop.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-118[SDP-118] (F): mkrep.sh: Added more replica types and journalcopy support.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-119[SDP-119] (F): Implement checkauth feature in HMS broker_wrapper.

Released: Rev. SDP/MultiArch/2016.2/20790 (2016/09/30).

Jobs Fixed since change 20755 up to 20790 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-112[SDP-112] (B): Minor p4 login fix to show P4TICKETS output reliably.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-113[SDP-113] (B): Fix mkrep.sh to use $P4BIN instead of p4.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-114[SDP-114] (F): Added basic p4login-super.sh script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-115[SDP-115] (B): Added hms dir to mkdirs.sh.

Released: Rev. SDP/MultiArch/2016.2/20755 (2016/09/29).

Jobs Fixed since change 20559 up to 20755 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-64[SDP-64] (F): Add option to install_sdp_python.sh to build P4Python with SSL.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-103[SDP-103] (B): Fix attempted login count in p4login.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-104[SDP-104] (B): Fixed order-of-operations issue that caused some log files to be lost on rotation.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-105[SDP-105] (B): Cosmetic fix to broker init script with 'status all' run w/no config files.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-106[SDP-106] (F): Add Helix Management System (HMS) files to SDP.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-107[SDP-107] (F): Enhance p4login to avoid hang issue with auth.id set.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-108[SDP-108] (F): Further test suite docker environment updates.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-109[SDP-109] (F): Add Two Factor Authentication sample auth script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-110[SDP-110] (B): Correct crontab to run sync_replica.sh every day.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-111[SDP-111] (B): Fix bugs in convert_label_to_autoreload.py.

Jobs Fixed since change 20491 up to 20559 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-100[SDP-100] (B): Fix recent regression with 'restart' option in init scripts.

Released: Rev. SDP/MultiArch/2016.1/20491 (2016/09/09).

Jobs Fixed since change 20460 up to 20491 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-99[SDP-99] (B): Fix special case env insulation bug running init scripts as root.

Released: Rev. SDP/MultiArch/2016.1/20460 (2016/09/08).

Jobs Fixed since change 20395 up to 20460 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-94[SDP-94] (B): Fixed a typo inserted in mkdirs.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-98[SDP-98] (B): chmod +x fix on some scripts.

Released: Rev. SDP/MultiArch/2016.1/20395 (2016/09/04).

Jobs Fixed between changelists 20387 and 20395 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-94[SDP-94] (B): Fixed a typo inserted in mkdirs.sh.

Released: Rev. SDP/MultiArch/2016.1/20387 (2016/09/04).

Jobs Fixed between changelists 20348 and 20387 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-89[SDP-89] (B): Fixed several issues in email.sh maint script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-92[SDP-92] (B): Fixed using with runRemoteCmd getting error if USER not defined in non-core SDP script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-93[SDP-93] (B): Removed references to legacy names for checkpoint scripts (non-functional change).

Jobs Fixed between changelists 20028 and 20348 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-64[SDP-64] (F): Add option to install_sdp_python.sh to build P4Python with SSL.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-74[SDP-74] (F): Add p4sanity_check.sh script from Battle School.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-75[SDP-75] (B): Fix missing echo of command into log file in p4verify.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-77[SDP-77] (F): Change adminspass to use hidden, and now instance-specific, password files
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-78[SDP-78] (F): Add mkrep script to simplify replica creation.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-79[SDP-79] (F): Update p4verify.sh to verify shelves on master/replicas.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-80[SDP-80] (F): Add script to convert labels to autoreload.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-81[SDP-81] (F): Add Evil Twin Detector maintenance script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-85[SDP-85] (F): Add script to simplify adoption of OS-level best practices recommended by Support.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-97[SDP-97] (B): Eliminate syntax error if user forgets start/stop/status arg; just display status.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-88[SDP-88] (F): Use pid to shutdown p4d rather than 'p4 admin stop' to enhance reliability.

Released: Rev. SDP/MultiArch/2016.1/20028 (2016/08/03).

Jobs Fixed between changelists 19888 and 20028 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-67[SDP-67] (F): Defend against environment hijacking of P4ENVIRO.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-72[SDP-72] (F): Revive external auth LDAP group mirror scripts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-69[SDP-69] (B): sdp_sync.sh v2.1.7: Fixed environment bug (missing defs), HMS support.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-70[SDP-70] (F): Simplify login ticket handling for sophisticated topologies.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-71[SDP-71] (F): Prevent cross-instance contamination if p4_vars is loaded multiple times.

Released: Rev. SDP/MultiArch/2016.1/19888 (2016/07/07).

Jobs Fixed between changelists 19838 and 19888 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-6[SDP-6] (B): SDP trigger breaks with Streams workspaces in P4V.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-66[SDP-66] (B): Daily/weekly_backup can fail leaving lock file present requiring manual intervention
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-67[SDP-67] (F): Defend against environment hijacking of P4ENVIRO.

Released: Rev. SDP/MultiArch/2016.1/19838 (2016/06/26).

Jobs Fixed between changelists 19768 and 19838 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-6[SDP-6] (B): SDP triggers break with Streams workspaces in P4V.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-65[SDP-65] (F): Add defense against known-misbehaving client versions.

Released: Rev. SDP/MultiArch/2016.1/19768 (2016/06/24).

Jobs Fixed between changelists 19661 and 19768 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-62[SDP-62] (F): Change to best-practice configurables; auth.autologinprompt=0.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-63[SDP-63] (B): p4master_run operates incorrectly as root.

Released: Rev. SDP/MultiArch/2016.1/19661 (2016/06/08).

Jobs Fixed between changelists 19410 and 19661 (F=Feature, B=Bug):

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-59[SDP-59] (F): Add KEEPJNLS to allow keeping more jnls than ckps.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-60[SDP-60] (F): Rename replica scripts to be consistent with earlier rename of checkpoint scripts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-61[SDP-61] (F): Enhance error checkong and logging replica handling scripts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-62[SDP-62] (F): Change to best-practice configurables; auth.autologinprompt=0.

Released: SDP/MultiArch/2016.1/19410 (2016/05/17).

Jobs Fixed between changelists 18958 and 19410:

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-50[SDP-50]: Work with license check in P4D 2016.1.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-51[SDP-51]: Change p4verify.sh to use -S to verify shelves on a replica instead
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-52[SDP-52]: Removed the HOST_IP settings from mkdirs and instance_vars since it
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-53[SDP-53]: Dockerify SDP test suite.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-54[SDP-54]: Add replica cleanup script on Windows.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-55[SDP-55]: Get p4verify.sh to check SHAREDDATA on replicas.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-56[SDP-56]: Avoid chmod on a replica if it shares data with the master.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-57[SDP-57]: Use 'p4 admin journal' on master to rotate journal.

Released: SDP/MultiArch/2016.1/18958 (2016/04/08).

Jobs Fixed between changelists 18619 and 18958:

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-39[SDP-39]: Proxy status init script can show proxy is up when it is not.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-41[SDP-41]: Moved ckp_running.txt to LOGS dir.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-42[SDP-42]: Fix missing LOGFILE= in replica_cleanup.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-43[SDP-43]: De-emphasized changeType=restricted.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-44[SDP-44]: Update Perl/P4Perl Python/P4Python
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-45[SDP-45]: Support multiple broker configs.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-46[SDP-46]: Enhanced p4_vars.template to support non-p4d hosts.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-47[SDP-47]: SDP-ify P4DTG init script.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-48[SDP-48]: Enhanced p4deleteuser.py to check for shelves, double-deletes.

Released: SDP/MultiArch/2016.1/18619 (2016/03/10).

Jobs Fixed between changelists 17297 and 18619:

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-30[SDP-30] on 2015/12/15 by ttyler *closed* 'Enhanced offline_db 'stale data'

Jobs Fixed between changelists 16784 and 17297:

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-32[SDP-32]: Support $MAILTO values with'#' char in gen_default_broker_cfg.sh.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-34[SDP-34]: sdp_sync.sh: Fix 'null crontab' bug.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-35[SDP-35]: p4d_base: When stopping p4d, send stderr to /dev/null.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-36[SDP-36]: global_replica_status.sh: Support instance-specifc host config.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-37[SDP-37]: Support email addresses starting with '#'.

Released: SDP/MultiArch/2016.1/16784 (2016/01/12).

Jobs Fixed recently:

* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-31[SDP-31]: Add documentation for sdp_sync.sh to SDP Guide.
* https://swarm.workshop.perforce.com/projects/perforce-software-sdp/jobs/SDP-32[SDP-32]: Support $MAILTO values with'#' char in gen_default_broker_cfg.sh.

