================================================================================
RAT_README

This file contains the list of excluded files that do not contain Apache 
headers, what these files are used for, and why they don't have Apache headers
================================================================================


To run the RAT report:

1. Install Apache Rat download version 0.11 from  http://creadur.apache.org/rat/
2. Change to the Apache Trafodion source directory
3. Source in env.sh
4. Run rat as follows
  java -jar apache-rat-0.11.jar  -E $MY_SQROOT/../../.rat-excludes \ 
       -d $MY_SQROOT/../.. > <RAT output log file>
5. Look at output in <RAT output log file> for issues

================================================================================


Results for Apache Trafodion release 1.3.0:

--------------------------------------------------------------------------------
FILE             :  what the file is used for
                 -> reason why file is excluded
--------------------------------------------------------------------------------
          
.gitignore       :  found in several directories, these files contains patterns 
                    for untracked files that git ignores
                 -> git does not allow these files to contain comments

.rat-excludes    :  file used by RAT to exclude files 
                 -> rat does not allow this file to contain comments

$MY_SQROOT/build-scripts/package.exclude*  
                 :  list of files to exclude from packaging 
                 -> make does not handle comments

$MY_SQROOT/export/limited-support-tools/eclipse.*project*  
                 :  Eclipse related project file
                 -> Eclipse does not handle comments

$MY_SQROOT/export/limited-support-tools/QPDrawer/usage.csv 
                 :  Macro file cannot have comments.
                 -> cvs files do not handle comments

$MY_SQROOT/src/seatrans/hbase-trx/hbase-protocol/src/main/java/org/apache/hadoop/hbase/protobuf/generated/* 
                 :  Generated from google protobuf compiler
                 -> generated files do not contain Apache license information

$MY_SQROOT/src/seatrans/hbase-trx/src/main/cpp/gen-cpp/Hbase_server.skeleton.cpp  
                 :  Autogenerated skeleton file copied from hbase 
                 -> generated files do not contain Apache license information

$MY_SQROOT/src/seatranshbase-trx/src/main/python/thrift1/gen-py/hbase/__init__.py 
                 :  Autogenerated python file copied from hbase  
                 -> generated files doe not contain Apache license information

$MY_SQROOT/src/tm/*.pb.cc 
                 :  Generated from google protobuf compiler
                 -> generated files do not contain Apache license information

$MY_SQROOT/../sql/SqlCompilerDebugger/Resource.qrc 
                 :  Generated file 
                 -> generated files do not contain Apache license information

$MY_SQROOT/../sql/sqludr/doxygen_*.1.6.config 
                 :  Generated file by Doxygen 
                 -> generated files do not contain Apache license information

$MY_SQROOT/../sql/bin/SqlciErrors.txt
                 :  file containing all the messages used by Trafodion
                 -> this file does not handle comments

$MY_SQROOT/monitor/linux/montest_readme.txt

dcs/conf/servers :  DCS default configuration file
                 -> does not handle comments in these files

dcs/conf/backup-masters 
                 :  DCS default configuraiotn file
                 -> configuration files do not handle comments

dcs/src/main/resources/dcs-webapps/master/css/stylesheet.css 
                 :  header acknowledges Codify Design Studio. 
                 -> we cannot add our own copyright to this 

-------------------------------------------------------------------------------

The following files are testware, they need to be in specified formats
-> do not support support comment headers

$MY_SQROOT/../sql/regress/*/EXPECTED* 
$MY_SQROOT/../sql/regress/*/COMPARE* 
$MY_SQROOT/../sql/regress/*/DIFF* 
$MY_SQROOT/../sql/regress/executor/lob_input*.txt 
$MY_SQROOT/../sql/regress/udr/romeo*.txt 
dcs/src/test/pytests/test-requirements.txt

-------------------------------------------------------------------------------

The following files in the win-odbc directory are Visual Studio generated 
project files. 
-> generated files do not contain Apache license information

*.rc
*.vcxproj*
*.props
*.sln
*.ism
resource.h
*.rc2
*.RC

-------------------------------------------------------------------------------

The files in the following directory have Thai Open Source Software Center Ltd
copyrights which are covered by MIT
-> cannot overwrite copyright information, license has been added to 
   LICENSE.txt

 $MY_SQROOT/../sql/qmscommon/expat/* 


-------------------------------------------------------------------

The following files in dcs directory have their own BSD license 
--> cannot overwrite copyright information, license has been added to
    LICENSE.txt
 
 dcs/src/main/resources/dcs-webapps/master/datatables/license-bsd.txt
 dcs/src/main/resources/dcs-webapps/master/datatables/license-gpl2.txt
 dcs/src/main/resources/dcs-webapps/master/datatables/css/demo_page.css
 dcs/src/main/resources/dcs-webapps/master/datatables/css/demo_table.css
 dcs/src/main/resources/dcs-webapps/master/datatables/css/demo_table_jui.css
 dcs/src/main/resources/dcs-webapps/master/datatables/css/jquery.dataTables.css
 dcs/src/main/resources/dcs-webapps/master/datatables/css/jquery.dataTables_themeroller.css
 dcs/src/main/resources/dcs-webapps/master/datatables/images/Sorting icons.psd
 dcs/src/main/resources/dcs-webapps/master/datatables/js/jquery.dataTables.js
 dcs/src/main/resources/dcs-webapps/master/jquery-ui/jquery-ui.css
 dcs/src/main/resources/dcs-webapps/master/jquery-ui/jquery-ui.js
 dcs/src/main/resources/dcs-webapps/master/jquery-ui/jquery-ui.structure.css
 dcs/src/main/resources/dcs-webapps/master/jquery-ui/jquery-ui.theme.css
 dcs/src/main/resources/dcs-webapps/master/js/lib/jquery-1.11.0.js
