2nd try: please, review the script for JDK license headers verification

Joe Darcy joe.darcy at oracle.com
Tue Jun 5 02:53:28 UTC 2012


Hello,

I've suggested to Misha in the past a design where a basic and simple 
lic_check.sh script would live in the root repository and then each 
child repo (jdk, langtools, hotspot, etc.) would have a repo-specific 
license checking script that would encode all the expected values and 
per-repo rules.

As a simple example, for langtools a first approximation of the expected 
license rules would be

     # GPL with ClassPath exception expected on normal sources...
     ../make/scripts/lic_check.sh -gplcp `find src "*.java"`

     # but GPL without ClassPath expected expected on tests
     ../make/scripts/lic_check.sh -gpl   `find tests "*.java"

(The full check of langtools would have to account for various 
exceptions, such as the tests that need to have /nodynamiccopyright/, etc.)

-Joe

On 6/4/2012 5:48 PM, Jonathan Gibbons wrote:
> Misha,
>
> "It would be nice" if you could infer the default license type from 
> the type and/or location of file.
>
> "It would be nice" if it could default the set of files to the set of 
> recently modified files, such as determined by "hg status".
>
> -- Jon
>
> On 06/04/2012 04:53 PM, Misha Bykov wrote:
>>
>> Please, review the webrev is located at:
>>
>> http://cr.openjdk.java.net/~mbykov/lic_check/webrev.00/
>>
>> INTRO
>>
>> 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 modified file.
>>
>> 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)
>>
>> SUCCESS EXAMPLE
>>
>> % ./lic_check.sh -gpl update_copyright_year.sh
>> ### Checking copyright notice in the file: update_copyright_year.sh
>> ###
>> No differences encountered
>> SUCCESS: The license header for 
>> jdk8/make/scripts/update_copyright_year.sh has been verified.
>> ###
>>
>> FAILURE EXAMPLE
>>
>> % ./lic_check.sh -gpl hgforest.sh
>> ### Checking copyright notice in the file: hgforest.sh
>> ###
>> *** /tmp/source_file.9122       Mon Jun  4 17:44:11 2012
>> --- jdk8/make/scripts/./../templates/gpl-header Wed Apr 11 08:53:09 2012
>> ***************
>> *** 1,7 ****
>>  Copyright (c) %YEARS% Oracle and/or its affiliates. All rights 
>> reserved.
>>  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>>
>> ! This code is free software; you can redistribute it and/or modify itX
>>  under the terms of the GNU General Public License version 2 only, as
>>  published by the Free Software Foundation.
>>
>> --- 1,7 ----
>>  Copyright (c) %YEARS% Oracle and/or its affiliates. All rights 
>> reserved.
>>  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>>
>> ! This code is free software; you can redistribute it and/or modify it
>>  under the terms of the GNU General Public License version 2 only, as
>>  published by the Free Software Foundation.
>>
>> ERROR: License header is not correct in 
>> /java/jle_build/headers/jdk8/make/scripts/hgforest.sh
>> See diffs above.
>> ###
>>
>>
>> NEXT STEPS
>>
>> In the future, this script will be used by special scripts to allow 
>> headers verification in the whole OpenJDK source code base.
>>
>



More information about the build-dev mailing list