Navigation Menu

Skip to content

Commit

Permalink
Leave the filesys.utf8bom property unset.
Browse files Browse the repository at this point in the history
Updated docs to explain how to set the undoc configurable for builds
slaves.

JENKINS-49141
  • Loading branch information
p4paul committed Mar 20, 2018
1 parent 75382de commit b45fa1f
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 3 deletions.
41 changes: 41 additions & 0 deletions UNICODE.md
@@ -0,0 +1,41 @@
# UNICODE

This section covers specific issues and configuration settings for a Unicode enabled Perforce Server and the
Jenkins build environment.

## Charsets

A Perforce Client Workspace must specify a Charset specific to the platform (Windows, Linux, etc...) when accessing
files from a Unicode enabled Perforce Server. The Workspace configuration provides a CHARSET dropdown (with a default
of 'none' for non-unicode Perforce Servers). For more information in Perforce Character sets please refer to our
[internationalisation notes](https://www.perforce.com/perforce/doc.current/user/i18nnotes.txt).

## UTF8 BOM

The UTF8 charset supports an optional BOM (Byte Order Mark) at the start of the file, represented by the byte
sequence `0xEF 0xBB 0xBF`. If a file has been added to Perforce with the type set to `utf8`, then the default
behaviour is to sync the file with a BOM even if the file did not originally have the BOM sequence in the file.

There is an undocumented Perforce configurable `filesys.utf8bom` which can be modified to change the default
behaviour:

filesys.utf8bom (default 1) Set to 0 to prevent writing utf8 files BOM
Set to 1 to write utf8 files with a BOM
Set to 2 to write utf8 BOM only on Windows
For Jenkins to make use of the configurable you need to set the JVM property on the Jenkins Master or Build Slave.
For example:

-Dcom.perforce.p4java.filesys.utf8bom=0
For most use-cases you will need set the JVM option for the slave build node:

- Jenkins > Manage Jenkins > Manage Nodes > New Node or select Node and Configure

- Select `Advanced`

![configuration](docs/images/node-advanced.png)

- Add the `-D` property to the `JVM Options`.

![configuration](docs/images/node-jvmoptions.png)
Binary file added docs/images/node-advanced.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/node-jvmoptions.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Expand Up @@ -118,9 +118,6 @@ private static IOptionsServer getRawConnection(ConnectionConfig config)
props.put(PropertyDefs.ENABLE_GRAPH_SHORT_FORM, "true");
props.put(PropertyDefs.ENABLE_ANDMAPS_SHORT_FORM, "true");

// disable BOM addition to UTF8 files
props.put(PropertyDefs.FILESYS_UTF8BOM_SHORT_FORM, "0");

// Set P4HOST if defined
UsageOptions opts = new UsageOptions(props);
String p4host = config.getP4Host();
Expand Down

0 comments on commit b45fa1f

Please sign in to comment.