| # README.fuchsia File Syntax | |
| `README.fuchsia` files are used to annotate third-party source libraries | |
| with some useful metadata, such as code origin, version and license. | |
| The format of these files consists of one or more directive lines, | |
| followed by unstructured description and notes. | |
| Directives consist of a directive keyword at the beginning of the line, | |
| immediately followed by a colon and a value that extends to the end of | |
| the line. The value may have surrounding whitespace, and blank lines may | |
| appear before or between directives. | |
| Several directives are described below, but other directives may appear | |
| in `README.fuchsia` files and software that consumes them should not | |
| treat the appearance of an unknown directive as an error. Similarly, | |
| such software should match directive keywords case-insensitively. | |
| Description lines are optional and follow a `Description` directive | |
| that must appear on a line by itself prior to any unstructured | |
| description text. | |
| ## Syntax | |
| ``` | |
| file := directive-line* description? | |
| directive-line := directive | blank-line | |
| directive := keyword ":" SPACE* value SPACE* EOL | |
| value := NONBLANK ANYCHAR* | |
| description := description-directive description-line* | |
| description-directive := "Description:" SPACE* EOL | |
| description-line := ANYCHAR* EOL | |
| keyword := [A-Za-z0-9][A-Za-z0-9 ]* | |
| blank-line := SPACE* EOL | |
| SPACE := any whitespace character | |
| EOL := end of line character | |
| NONBLANK := any non-whitespace, non-EOL character | |
| ANYCHAR := any character but EOL | |
| ``` | |
| ## Common directive keywords | |
| Common directive keywords include: | |
| * `Name` | |
| Descriptive name of the component. This should be included if the name | |
| is not obvious from context. | |
| ``` | |
| Name: OpenSSH | |
| ``` | |
| * `URL` | |
| The URL where the component lives. If the component is based on a | |
| specific release, then list that explicitly. | |
| ``` | |
| URL: https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/openssh-7.6.tar.gz | |
| ``` | |
| Otherwise, list the vendor's website. | |
| ``` | |
| URL: https://www.openssh.com/ | |
| ``` | |
| This directive may be repeated to include multiple URLs if necessary. | |
| * `Version` | |
| Lists a version number or commit identifier for the software. If the | |
| version is apparent from the *URL* or commit history, then this may be | |
| omitted. | |
| ``` | |
| Version: 7.6 | |
| ``` | |
| * `License` | |
| The license under which the component is distributed. Only standard forms | |
| are accepted, e.g. MIT/X11, BSD, Apache 2.0. | |
| ``` | |
| License: BSD | |
| ``` | |
| * `License File` | |
| File that contains a copy of the component's license. This must name | |
| an existing file in the repository, relative to the `README.fuchsia` | |
| file. | |
| ``` | |
| License File: LICENCE | |
| ``` | |
| This directive may be repeated to include multiple files if necessary. | |
| * `Upstream Git` | |
| Links to the upstream Git repository from which this component has | |
| been branched. This should be included for any software branched from | |
| an external Git repository. | |
| ``` | |
| Upstream Git: https://github.com/openssh/openssh-portable | |
| ``` | |
| * `Description` | |
| Marks the end of directives and the beginning of unstructured | |
| description, it must appear on a line by itself. | |
| ``` | |
| Description: | |
| A short description of what the package is and is used for. | |
| ``` | |
| * `Local Modifications` | |
| Enumerate any changes that have been made locally to the package from the | |
| shipping version listed above. | |
| ``` | |
| Local Modifications: | |
| Added README.fuchsia. | |
| Ported build rules from CMake to GN. | |
| ``` |