| <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <project basedir="." name="apache-cassandra--rat-tasks" |
| xmlns:rat="antlib:org.apache.rat.anttasks"> |
| |
| <!-- |
| License audit tool |
| --> |
| |
| <target name="_rat_init" depends="resolver-init"> |
| <typedef uri="antlib:org.apache.rat.anttasks" classpathref="rat.classpath"/> |
| </target> |
| |
| <target name="_build_ratinclude" depends="_rat_init"> |
| <exec executable="git" failifexecutionfails="false" failonerror="false" resultproperty="git.success" output="${build.dir}/.versioned_files"> |
| <arg line="ls-tree -r HEAD --name-only"/> |
| </exec> |
| <condition property="rat.skip" value="true"> |
| <not> |
| <equals arg1="${git.success}" arg2="0"/> |
| </not> |
| </condition> |
| </target> |
| |
| <target name="_rat_copy_versioned_files" depends="_build_ratinclude" unless="${rat.skip}"> |
| <copy file="${build.dir}/.versioned_files" tofile="${build.dir}/.ratinclude"> |
| <filterchain> |
| <linecontainsregexp> |
| <regexp pattern=".*\.(java|py|sh|xml|spec|md|iml|bat|btm|cql|css|g|html|jflex|jks|mod|name|pom|textile|yml|yaml|MIDRES|HIGHRES|LOWRES)$"/> |
| </linecontainsregexp> |
| </filterchain> |
| </copy> |
| </target> |
| |
| <target name="rat-check" depends="_rat_copy_versioned_files" unless="${rat.skip}" description="License checks on source" > |
| <rat:report reportFile="${build.dir}/rat.txt"> |
| <fileset dir="." includesfile="${build.dir}/.ratinclude"> |
| <!-- Config files with not much creativity --> |
| <exclude name="**/.asf.yaml"/> |
| <exclude name="**/ide/**/*"/> |
| <exclude name="**/metrics-reporter-config-sample.yaml"/> |
| <exclude name="**/cassandra.yaml"/> |
| <exclude name="**/cassandra-murmur.yaml"/> |
| <exclude name="**/cassandra-seeds.yaml"/> |
| <exclude name="**/harry-generic.yaml"/> |
| <exclude NAME="**/doc/antora.yml"/> |
| <exclude name="**/test/conf/cassandra.yaml"/> |
| <exclude name="**/test/conf/cassandra-old.yaml"/> |
| <exclude name="**/test/conf/cassandra-converters-special-cases-old-names.yaml"/> |
| <exclude name="**/test/conf/cassandra-converters-special-cases.yaml"/> |
| <exclude name="**/test/conf/cassandra_encryption.yaml"/> |
| <exclude name="**/test/conf/cdc.yaml"/> |
| <exclude name="**/test/conf/commitlog_compression_LZ4.yaml"/> |
| <exclude name="**/test/conf/commitlog_compression_Zstd.yaml"/> |
| <exclude name="**/test/conf/system_keyspaces_directory.yaml"/> |
| <exclude name="**/test/conf/sstableloader_with_encryption.yaml"/> |
| <exclude name="**/test/conf/unit-test-conf/test-native-port.yaml"/> |
| <exclude name="**/test/data/jmxdump/cassandra-3.0-jmx.yaml"/> |
| <exclude name="**/test/data/jmxdump/cassandra-3.11-jmx.yaml"/> |
| <exclude name="**/test/data/jmxdump/cassandra-4.0-jmx.yaml"/> |
| <exclude name="**/test/data/jmxdump/cassandra-4.1-jmx.yaml"/> |
| <exclude name="**/test/data/config/version=3.0.0-alpha1.yml"/> |
| <exclude name="**/test/data/config/version=3.11.0.yml"/> |
| <exclude name="**/test/data/config/version=4.0-alpha1.yml"/> |
| <exclude name="**/test/resources/data/config/YamlConfigurationLoaderTest/shared_client_error_reporting_exclusions.yaml"/> |
| <exclude name="**/tools/cqlstress-counter-example.yaml"/> |
| <exclude name="**/tools/cqlstress-example.yaml"/> |
| <exclude name="**/tools/cqlstress-insanity-example.yaml"/> |
| <exclude name="**/tools/cqlstress-lwt-example.yaml"/> |
| <!-- Documentation files --> |
| <exclude NAME="**/doc/modules/**/*"/> |
| <exclude NAME="**/src/java/**/*.md"/> |
| <!-- NOTICE files --> |
| <exclude NAME="**/NOTICE.md"/> |
| <!-- LICENSE files --> |
| <exclude NAME="**/LICENSE.md"/> |
| </fileset> |
| </rat:report> |
| <exec executable="grep" outputproperty="rat.failed.files" failifexecutionfails="false"> |
| <arg line="-A5 'Unapproved licenses' ${build.dir}/rat.txt"/> |
| </exec> |
| <fail message="Some files have missing or incorrect license information. Check RAT report in ${build.dir}/rat.txt for more details! \n ${rat.failed.files}"> |
| <condition> |
| <and> |
| <not> |
| <resourcecontains resource="${build.dir}/rat.txt" substring="0 Unknown Licenses" casesensitive="false" /> |
| </not> |
| </and> |
| </condition> |
| </fail> |
| </target> |
| |
| <target name="_assert_rat_output"> |
| <fail message="The rat report at build/rat.txt was not generated. Please ensure that the rat-check task is able to run successfully. For dev builds only, touch build/rat.txt to skip this check"> |
| <condition> |
| <not> |
| <available file="${build.dir}/rat.txt" /> |
| </not> |
| </condition> |
| </fail> |
| </target> |
| |
| </project> |