Hi Misha,
I think including this kind of script in the JDK is a great idea.
Follow-up work could include adding a script that would use this first
script to verify the source files had the expected license. Such a
check could be a make target run as part of the build.
Cheers,
-Joe
On 3/5/2012 4:20 PM, Misha Bykov wrote:
I need a reviewer for a new attached script for JDK8 infrastructure.
SUMMARY
Most of JDK source files are required to contain a legal approved
license header. The content and the format of the header is
pre-defined by legal and any alteration is not permitted.
At the moment JDK8 contains three templates for source license
headers: gpl, gpl-cp and bsd.
The templates are located in $ROOT/make/templates directory:
$ ls $ROOT/make/templates
bsd-header gpl-cp-header gpl-header
$
It's recommended for a developer, when he introduced or modified
source code files, to check whether a license header is precisely
correct for every file he worked on.
The new script allows a JDK developer to check if the specified
license header for a given file (or a set of files) matches the right
header template.
NAME
lic_check.sh - JDK source code legal headers conformance verification
SYNOPSIS
lic_check.sh [-gpl] or [-gplcp] or [-bsd] file(s)
DESCRIPTION
The script for OpenJDK distribution to verify legal notices in a
particular source file or a set of files.
The script must be located in the directory:
$ROOT/make/scripts
It uses templates from:
$ROOT/make/templates
The successful output example:
###
### Checking copyright notice in the file: filename.java
###
No differences encountered
SUCCESS: The license header for filename.java has been verified.
The unsuccessful output example if Oracle copyright string is missing
or copyright years are not correct :
###
### Checking copyright notice in the file: filename.java
###
ERROR: Copyright string is not correct or missing in filename.java.
If the copyright string is correct, but the license header is not
correct, the script should produce the
"diff" output between a template in $ROOT/make/templates and the
license header from the given file.
HOW TO TEST
1. Place the script into $ROOT/make/scripts in JDK8 source repository
(otherwise it will not find $ROOT/make/templates and produce an error).
2. cd to the directory with the files to check license headers
3. $ROOT/make/scripts/lic_check.sh [-gpl] or [-gplcp] or [-bsd]
filename(s)
Any questions or comments about bugs in the script, improvement
suggestions, script style, etc. would be appreciated.
Thanks,
Misha