This is an automated email from the git hooks/post-receive script. js pushed a commit to branch master in repository licensecheck.
commit 5144bc16239a7e6646c7a5ede3747248aa69a606 Author: Jonas Smedegaard <d...@jones.dk> Date: Tue Nov 29 04:22:13 2016 +0100 Improve license patterns cube eurosym libpng zlib zlib_acknowledgement. Reorganize Regexp::Pattern::License::Pattern. --- lib/App/Licensecheck.pm | 32 +-- lib/Regexp/Pattern/License.pm | 67 +++--- lib/Regexp/Pattern/License/Parts.pm | 398 +++++++++++++----------------------- t/SPDX.t | 1 + 4 files changed, 185 insertions(+), 313 deletions(-) diff --git a/lib/App/Licensecheck.pm b/lib/App/Licensecheck.pm index b31b2b5..f7afbfb 100755 --- a/lib/App/Licensecheck.pm +++ b/lib/App/Licensecheck.pm @@ -785,28 +785,6 @@ sub parse_license $gen_license->( 'BSL', $1, $2 ); } } - - # Zlib/Libpng - given ($licensetext) { - when ( /$L{re}{'zlib_acknowledgement'}/ ) { - $gen_license->('zlib_acknowledgement'); - } - when ( /$L{re}{cube}/ ) { - $gen_license->('cube'); - } - when ( /$L{re}{eurosym}/ ) { - $gen_license->('eurosym'); - } - when ( /$L{re}{zlib}/ ) { - $gen_license->('zlib'); - } - when ( /see copyright notice in zlib\.h/ ) { - $gen_license->('zlib'); - } - when ( /This code is released under $L{re}{libpng}/ ) { - $gen_license->('libpng'); - } - } #>>> given ($licensetext) { @@ -829,13 +807,19 @@ sub parse_license foreach my $id ( qw( adobe_2006 adobe_glyph aladdin apafml - beerware curl fsfap ftl icu isc llgpl + beerware cube curl eurosym fsfap ftl icu isc libpng llgpl mit_advertising mit_enna mit_feh mit_new mit_old mit_oldstyle mit_oldstyle_disclaimer mit_oldstyle_permission - ms_pl ms_rl postgresql unicode_strict unicode_tou) + ms_pl ms_rl postgresql unicode_strict unicode_tou + zlib zlib_acknowledgement) ) { when (/$L{re}{$id}/) { + + # skip embedded license + if ( 'zlib' eq $id and $licensetext =~ /$L{re}{cube}/ ) { + continue; + } $gen_license->($id); continue; } diff --git a/lib/Regexp/Pattern/License.pm b/lib/Regexp/Pattern/License.pm index bb5ee21..6c4f1ef 100644 --- a/lib/Regexp/Pattern/License.pm +++ b/lib/Regexp/Pattern/License.pm @@ -248,7 +248,7 @@ our %RE = ( caption => 'BSD (2 clause)', tags => ['bsd'], pat => - qr/$P{note_repro_notice_cond_discl}\b[^a-zA-Z]+$P{asis_sw_by_name}/, + qr/$P{repro_copr_cond_discl}\W+$P{asis_sw_by_name}/, }, bsd_3_clause => { name => 'BSD-3-Clause', @@ -256,14 +256,14 @@ our %RE = ( caption => 'BSD (3 clause)', tags => ['bsd'], pat => - qr/$P{note_repro_notice_cond_discl}\b[^a-zA-Z]+$P{nopromo_neither}/, + qr/$P{repro_copr_cond_discl}\W+$P{nopromo_neither}/, }, bsd_4_clause => { name => 'BSD-4-Clause', 'name.alt.org.debian' => 'BSD-4-clause', caption => 'BSD (4 clause)', tags => ['bsd'], - pat => qr/$P{ad_verbatim}/, + pat => qr/$P{ad_mat_ack_this}/, }, cc_by => { name => 'CC-BY', @@ -383,11 +383,11 @@ our %RE = ( name => 'Cube', tags => ['zlib'], pat => - qr/$P{origin_no_misrepresent}.*?$P{derive_altermark}.*?$P{note_invar}.*?$P{derive_no_relicense}/, + qr/$P{origin_sw_no_misrepresent}; $P{you_not_claim_wrote}\. $P{use_ack_nonreq}\. $P{altered_srcver_mark}\. $P{notice_no_alter_any}\. additional clause specific to Cube:? $P{src_no_relicense}/, }, curl => { tags => ['mit'], - pat => qr/$P{note_cpyr_perm}\.\s+$P{asis_sw_warranty}/, + pat => qr/$P{note_copr_perm}\.\s+$P{asis_sw_warranty}/, }, dsdp => { name => 'DSDP', @@ -404,7 +404,7 @@ our %RE = ( name => 'Eurosym', tags => ['zlib'], pat => - qr/$P{origin_no_misrepresent}.*?$P{derive_altermark}.*?$P{derive_share}.*?$P{note_invar}/, + qr/$P{origin_sw_no_misrepresent}.*?$P{altered_srcver_mark}.*?$P{change_redist_share}.*?$P{notice_no_alter}/, }, fsfap => { name => 'FSFAP', @@ -450,13 +450,13 @@ our %RE = ( isc => { name => 'ISC', tags => ['mit'], - pat => qr/$P{note_cpyr_perm}\.\s+$P{asis_sw_name_discl}/, + pat => qr/$P{note_copr_perm}\.\s+$P{asis_sw_name_discl}/, }, icu => { name => 'ICU', tags => ['mit'], pat => - qr/$P{note_cpyr_perm} of the Software and that $P{note_cpyr_perm_doc}\.\s+$P{asis_sw_warranty}(?:[^.]+\.\s+){2}$P{nopromo_except}/, + qr/$P{note_copr_perm} of the Software and that $P{note_copr_perm_doc}\.\s+$P{asis_sw_warranty}(?:[^.]+\.\s+){2}$P{nopromo_except}/, }, lgpl => { name => 'LGPL', @@ -471,25 +471,26 @@ our %RE = ( }, libpng => { name => 'Libpng', - pat => qr/$the?libpng license/, + pat => + qr/$P{origin_src_no_misrepresent}\. $P{altered_ver_mark}\. $P{copr_no_alter}/, }, mit_advertising => { name => 'MIT-advertising', caption => 'MIT (advertising)', tags => ['mit'], - pat => qr/$P{note_marketing}\b[^.,]+, and $P{ad_ack_doc_sw}/, + pat => qr/$P{note_marketing}\b[^.,]+, and $P{ack_doc_mat_pkg_use}/, }, mit_enna => { name => 'MIT-enna', caption => 'MIT (enna)', tags => ['mit'], - pat => qr/$P{ad_pub_ack_nosrc}/, + pat => qr/$P{ack_pub_use_nosrc}/, }, mit_feh => { name => 'MIT-feh', caption => 'MIT (feh)', tags => ['mit'], - pat => qr/$P{ad_ack_doc_pkg}/, + pat => qr/$P{ack_doc_pkg_use}/, }, mit_new => { 'name.alt.org.spdx' => 'MIT', @@ -498,21 +499,22 @@ our %RE = ( 'caption.alt.org.debian' => 'MIT/X11 (BSD like)', 'caption.alt.org.fedora' => 'MIT (Modern Style with sublicense)', tags => ['mit'], - pat => qr/$P{right_mod_sublic}\b[^.]+\s+$P{note_cpyr_perm_subst}/, + pat => + qr/$P{to_mod_sublic} $P{sw}\b[^.]+\s+$P{retain_copr_perm_subst}/, }, mit_new_materials => { 'name.alt.org.debian' => 'MIT~Khronos', caption => 'MIT (Khronos)', tags => ['mit'], pat => - qr/$P{permission_person_materials}, $P{permission_use_deal_materials}/, + qr/$P{perm_granted}, $P{free_charge}, $P{to_pers} $P{the_material}, $P{to_deal_mat}/, }, mit_old => { 'name.alt.org.debian' => 'MIT~old', 'name.alt.org.gentoo' => 'Old-MIT', caption => 'MIT (old)', tags => ['mit'], - pat => qr/$P{permission_granted_agree_fee}/, + pat => qr/$P{perm_granted}, $P{free_agree_fee}/, }, mit_oldstyle => { 'name.alt.org.debian' => 'MIT~oldstyle', @@ -532,7 +534,7 @@ END mit_oldstyle_permission => { 'name.alt.org.debian' => 'MIT~oldstyle~permission', tags => ['mit'], - pat => qr/$P{nopromo_written_prior}\.\s+$P{asis_name_sw}/, + pat => qr/$P{without_written_prior}\.\s+$P{asis_name_sw}/, }, mpl => { name => 'MPL', @@ -566,7 +568,7 @@ END openssl => { name => 'OpenSSL', summary => 'OpenSSL License', - pat => qr/$P{ad_always}/, + pat => qr/$P{redist_ack_this}/, }, postgresql => { name => 'PostgreSQL', @@ -630,13 +632,14 @@ END caption => 'zlib/libpng', tags => ['zlib'], pat => - qr/$P{origin_no_misrepresent}.*?$P{derive_altermark}.*?$P{note_invar}/, + qr/$P{origin_sw_no_misrepresent}; $P{you_not_claim_wrote}\. $P{use_ack_nonreq}\. $P{altered_srcver_mark}\. $P{notice_no_alter}/, }, zlib_acknowledgement => { - name => 'zlib-acknowledgement', - caption => 'zlib/libpng with Acknowledgement', - tags => ['zlib'], - pat => qr/$P{origin_no_misrepresent_ack}/, + name => 'NUnit', + 'name.alt.org.SPDF' => 'zlib-acknowledgement', + tags => ['zlib'], + pat => + qr/$P{origin_sw_no_misrepresent}; $P{you_not_claim_wrote}\. $P{use_ack_req}\. Portions Copyright \S+ [\d-]+ Charlie Poole or Copyright \S+ [\d-]+ James W\. Newkirk, Michael C\. Two, Alexei A\. Vorontsov or Copyright \S+ [\d-]+ Philip A\. Craig $P{altered_srcver_mark}\. $P{notice_no_alter}/, }, ); @@ -677,25 +680,25 @@ Patterns each covering a single trait occuring in licenses. $RE{'clause_retention'} = { caption => 'retention clause', tags => ['trait'], - pat => qr/$P{note_retain_notice_cond_discl}/, + pat => qr/$P{retain_notice_cond_discl}/, }; $RE{'clause_reproduction'} = { caption => 'reproduction clause', tags => ['trait'], - pat => qr/$P{note_repro_notice_cond_discl}/, + pat => qr/$P{repro_copr_cond_discl}/, }; $RE{'clause_advertising'} = { caption => 'advertising clause', tags => ['trait'], - pat => qr/$P{ad_verbatim}/, + pat => qr/$P{ad_mat_ack_this}/, }; $RE{'clause_advertising_always'} = { caption => 'advertising clause (always)', tags => ['trait'], - pat => qr/$P{ad_always}/, + pat => qr/$P{redist_ack_this}/, }; $RE{'clause_non_endorsement'} = { @@ -717,31 +720,31 @@ $RE{'fsf_unlimited_retention'} = { $RE{'version_later'} = { caption => 'version "or later"', tags => ['trait'], - pat => qr/,? $P{version_later_postfix}|\. $P{version_later_para}/, + pat => qr/,? $P{ver_later_postfix}|\. $P{ver_later_para}/, }; $RE{'version_later_paragraph'} = { caption => 'version "or later" postfix (paragraphs)', tags => ['trait'], - pat => qr/$P{version_later_para}/, + pat => qr/$P{ver_later_para}/, }; $RE{'version_later_postfix'} = { caption => 'version "or later" (postfix)', tags => ['trait'], - pat => qr/$P{version_later_postfix}/, + pat => qr/$P{ver_later_postfix}/, }; $RE{'version_number'} = { caption => 'version number', tags => ['trait'], - pat => qr/$P{version_number}/, + pat => qr/$P{ver_number}/, }; $RE{'version_prefix'} = { caption => 'version prefix', tags => ['trait'], - pat => qr/$P{version_prefix}/, + pat => qr/$P{ver_prefix}/, }; =head2 License combinations @@ -785,7 +788,7 @@ $RE{'bsd'} = { caption => 'BSD (unspecified)', tags => ['group'], pat => - qr/$P{note_repro_notice_cond_discl}(?:(?:[^a-zA-Z]+$P{ad_verbatim}.*)?[^a-zA-Z]+$P{nopromo_neither})?/, + qr/$P{repro_copr_cond_discl}(?:(?:[\d\W]+$P{ad_mat_ack_this}.*)?[\d\W]+$P{nopromo_neither})?/, }; $RE{'gnu'} = { diff --git a/lib/Regexp/Pattern/License/Parts.pm b/lib/Regexp/Pattern/License/Parts.pm index 41cff54..65f104c 100644 --- a/lib/Regexp/Pattern/License/Parts.pm +++ b/lib/Regexp/Pattern/License/Parts.pm @@ -30,311 +30,195 @@ It is a class of internally used patterns. my $D = qr/[-–]/; # dash my $SD = qr/[ -–]/; # space or dash -# permission clause -my $granted = qr/Permission is hereby granted/; - -# purpose -my $to_use = qr/to use, copy, modify, and distribute/; -my $to_deal_sw = qr/to deal in the Software without restriction/; -my $to_deal_mat = qr/to deal in the Materials without restriction/; -my $any_purpose = qr/for any purpose/; -my $redist_src = qr/Redistributions of source code/; -my $redist_bin = qr/Redistributions in binary form/; -my $redist_any = qr/Redistributions of any form whatsoever/; -my $promote = qr/endorse or promote products derived from this software/; - -# text -my $notice = qr/the above copyright notice/; -my $cond = qr/this list of conditions/; -my $discl = qr/the following disclaimer/; -my $no_agreement = qr/without written agreement/; -my $no_permit = qr/without specific prior written permission/; -my $ack = qr/the following acknowledge?ment/; -my $product_by = qr/This product includes software developed by/; - -# money -my $no_charge = qr/free of charge/; -my $no_fee = qr/without fee/; -my $no_fees = qr/without license or royalty fees/; - -# asset -my $sw_doc = qr/this software and its documentation/; -my $sw_docfiles = qr/this software and associated documentation files/; -my $doc = qr/the documentation/; -my $other_mat = qr/other materials provided with the distribution/; -my $ad_mat - = qr/All advertising materials mentioning features or use of this software/; - -# agent -my $to_person = qr/to any person obtaining a copy/; -my $no_authors - = qr/Neither the (?:names? .*|authors?) nor the names of(?: (?:its|their|other|any))? contributors/; - -# origin -my $origin_no_misrepresent = qr/must not be misrepresented/; -my $origin_ack = qr/an acknowledgment \(see the following\)/; - -# forking -my $derive_altermark - = qr/Altered source versions must be plainly marked as such/; - -# invariant parts -my $invariant_notice = qr/This notice may not be removed or altered/; +#my $I = qr/[iI\d\W]+/; # bullet or count +my $I = qr/\W*\S\W*/; # bullet or count our %RE = ( - ad_ack_doc_pkg => { - caption => 'advertisement (aknowledge, documentation, packages)', - tags => ['clause'], + + # assets (original or derived) + doc_mat_dist => { pat => - qr/acknowledgment shall be given in the documentation and software packages that this Software was used/, + qr/the documentation and\/or other materials provided with the distribution/ }, - ad_ack_doc_sw => { - caption => 'advertisement (documentation + source)', - tags => ['clause'], + sw => { pat => qr/the Software/ }, + the_material => { pat => - qr/acknowledgment shall be given in the documentation, materials and software packages that this Software was used/, - }, - ad_always => { - caption => 'advertisement', - tags => ['clause'], - pat => qr/$redist_any must retain $ack[^a-zA-Z]+$product_by/, + qr/this software and associated documentation files \(the "?Material"?\)/ }, - ad_pub_ack_nosrc => { - caption => 'advertisement (public, aknowledge, no source)', - tags => ['clause'], + + # rights + perm_granted => { pat => qr/Permission is hereby granted/ }, + to_deal_mat => + { pat => qr/to deal in the Materials without restriction/ }, + to_mod_sublic => { pat => - qr/publicly documented acknowledgment must be given that this software has been used if no source/, - }, - ad_verbatim => { - caption => 'advertisement (verbatim)', - tags => ['clause'], - pat => qr/$ad_mat must display $ack[^a-zA-Z]+$product_by/, - }, - asis_expr_warranty => { - caption => 'as-is (express warranty)', - tags => ['clause'], - pat => qr/without express or implied warranty/, - }, - asis_name_sw => { - caption => 'as-is (name, software)', - tags => ['clause'], - pat => qr/(?:\S+ ){1,15}PROVIDES? THIS SOFTWARE/, + qr/to use, copy, modify, merge, publish, distribute, sublicense, and\/or sell copies of/ }, - asis_sw_by_name => { - caption => 'as-is (software, by name)', - tags => ['clause'], - pat => qr/THIS SOFTWARE IS PROVIDED BY/, - }, - asis_sw_name_discl => { - caption => 'as-is (software, name disclaims)', - tags => ['clause'], + + # agents + to_pers => { pat => qr/to any person obtaining a copy of/ }, + + # charges + free_charge => { pat => qr/free of charge/ }, + free_agree_fee => { pat => - qr/THE SOFTWARE IS PROVIDED \W*AS\W+IS\W*(?:,?|AND) (?:\S+ ){1,15}DISCLAIMS/, - }, - asis_sw_warranty => { - caption => 'as-is (software, warranty)', - tags => ['clause'], - pat => qr/THE SOFTWARE IS PROVIDED \W*AS\W+IS\W* WITHOUT WARRANTY/, + qr/without written agreement and without license or royalty fees/ }, - cc => { - caption => 'Creative Commons qualifier', - tags => ['qualifier'], - pat => qr/(?:Creative Commons|CC)/, - }, - cc_by => { - caption => 'Creative Commons Attribution component', - tags => ['component'], - pat => qr/(?:Attribution)/, - }, - cc_cc0 => { - caption => 'Creative Commons CC0 component', - tags => ['component'], - pat => qr/(?:CC0|Zero|0)/, - }, - cc_nc => { - caption => 'Creative Commons NonCommercial component', - tags => ['component'], - pat => qr/(?:Non$SD?Commercial)/, - }, - cc_nd => { - caption => 'Creative Commons NoDerivatives component', - tags => ['component'], - pat => qr/(?:No$SD?Deriv(?:ative)?s)/, - }, - cc_sa => { - caption => 'Creative Commons ShareAlike component', - tags => ['component'], - pat => qr/(?:Share$SD?Alike)/, - }, - cc_sp => { - caption => 'Creative Commons Sampling Plus component', - tags => ['component'], - pat => qr/(?:Sampling$SD?Plus)/, - }, - cc_url => { - caption => 'Creative Commons URL', - tags => ['url'], - pat => qr"(?:(?:https?:?)?(?://)?creativecommons.org/licenses/)", - }, - cc_url_pd => { - caption => 'Creative Commons stem (public domain)', - tags => ['url'], - pat => qr"(?:(?:https?:?)?(?://)?creativecommons.org/publicdomain/)", - }, - derive_altermark => { - caption => 'deriving (must plainly mark)', - tags => ['clause'], - pat => qr/$derive_altermark/, + + # conditions + ack_doc_mat_pkg_use => { + pat => + qr/acknowledgment shall be given in the documentation, materials and software packages that this Software was used/ }, - derive_no_relicense => { - caption => 'deriving (no relicense)', - tags => ['clause'], - pat => qr/may not be "?relicensed"?/, + ack_doc_pkg_use => { + pat => + qr/acknowledgment shall be given in the documentation and software packages that this Software was used/ }, - derive_share => { - caption => 'deriving (must share source)', - tags => ['clause'], + ack_pub_use_nosrc => { pat => - qr/source code of the altered version of this software available/, + qr/publicly documented acknowledgment must be given that this software has been used if no source/ }, - discl_name_warranties => { - caption => 'disclaim (name, warranties)', - tags => ['clause'], - pat => qr/(?:\S+ ){1,15}DISCLAIMS? ALL WARRANTIES/, + altered_srcver_mark => { + pat => + qr/$I?Altered source versions must be plainly marked as such,? and must not be misrepresented as being the original software/ }, - nopromo_except => { - caption => 'no promotion (except)', - tags => ['clause'], + altered_ver_mark => { pat => - qr/Except as contained in this notice, the names? (?:\S+ ){1,15}shall not be used in advertising/, + qr/$I?Altered versions must be plainly marked as such,? and must not be misrepresented as being the original source/ }, - nopromo_neither => { - caption => 'no promotion (neither)', - tags => ['clause'], + change_redist_share => { pat => - qr/(?:$no_authors may|The name.*? (?:may|must) not) be used to $promote $no_permit/, + qr/If you change this software and redistribute parts or all of it in any form, you must make the source code of the altered version of this software available/ }, - nopromo_written_prior => { - caption => 'no promo (advertising)', - tags => ['clause'], - pat => qr/without specific, written prior permission/, + namenot => + { pat => qr/[Tt]he names?(?: \S+){1,15} (?:may|must|shall) not/ }, + neithername => { + pat => + qr/Neither the (?:names?(?: \S+){1,15}|authors?) nor the names of(?: (?:its|their|other|any))? contributors may/ }, - note_cpyr_perm => { - caption => 'notice (copyright + permission)', - tags => ['clause'], + notice_no_alter => + { pat => qr/$I?This notice may not be removed or altered/ }, + notice_no_alter_any => { pat => - qr/provided that(?:\W*\S\W*)? the above copyright notice(?:\(?s\)?)? and this permission notice appear in all copies/, + qr/$I?This notice may not be removed or altered from any source distribution/ }, - note_cpyr_perm_doc => { - caption => 'notice (copyright + permission, documentation)', - tags => ['clause'], + copr_no_alter => { pat => - qr/both the above copyright notice\(s\) and this permission notice appear in supporting documentation/, + qr/$I?This Copyright notice may not be removed or altered from any source or altered source distribution/ }, - note_marketing => { - caption => 'notice (copyright + permission, marketing material)', - tags => ['clause'], + redist_bin_repro => + { pat => qr/Redistributions in binary form must reproduce/ }, + src_no_relicense => { pat => - qr/shall be included in all copies of the Software, its documentation and marketing/, + qr/$I?Source versions may not be "?relicensed"? under a different license without my explicitly written permission/ }, - note_cpyr_perm_subst => { - caption => 'notices (copyright, permission, substantial portions)', - tags => ['clause'], + used_endorse_deriv => { pat => - qr/The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software/, + qr/be used to endorse or promote products derived from this software/ }, - note_invar => { - caption => 'notice (invariable)', - tags => ['clause'], - pat => qr/This notice may not be removed or altered/, + used_ad => { pat => qr/be used in advertising/ }, + without_prior_written => + { pat => qr/without specific prior written permission/ }, + without_written_prior => + { pat => qr/without specific, written prior permission/ }, + origin_sw_no_misrepresent => { + pat => qr/$I?The origin of this software must not be misrepresented/ }, - note_repro_notice_cond_discl => { - caption => 'notice (reproduce, notice + conditions + disclaimer)', - tags => ['clause'], + origin_src_no_misrepresent => { pat => - qr/$redist_bin must reproduce $notice, $cond and $discl in $doc and\/or $other_mat/, + qr/$I?The origin of this source code must not be misrepresented/ }, - note_retain_notice_cond_discl => { - caption => 'notice (retain, notice + conditions + disclaimer)', - tags => ['clause'], - pat => qr/$redist_src must retain $notice,? $cond and $discl/, + you_not_claim_wrote => { + pat => qr/you must not claim that you wrote the original software/ }, - origin_no_misrepresent => { - caption => 'origin (no misrepresentation)', - tags => ['clause'], - pat => qr/$origin_no_misrepresent/, + use_ack_nonreq => { + pat => + qr/If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required/ }, - origin_no_misrepresent_ack => { - caption => 'origin (no misrepresentation, acknowledgement)', - tags => ['clause'], - pat => qr/$origin_no_misrepresent.*, $origin_ack/, + use_ack_req => { + pat => + qr/If you use this software in a product, an acknowledgment \(see the following\) in the product documentation is required/ }, - permission_granted_agree_fee => { - caption => 'permission (granted, no agreement or fee)', - tags => ['clause'], - pat => qr/$granted, $no_agreement and $no_fees/, + + # disclaimers + asis_expr_warranty => { pat => qr/without express or implied warranty/ }, + asis_name_sw => { pat => qr/(?:\S+ ){1,15}PROVIDES? THIS SOFTWARE/ }, + asis_sw_by_name => { pat => qr/THIS SOFTWARE IS PROVIDED BY/ }, + asis_sw_name_discl => { + pat => + qr/THE SOFTWARE IS PROVIDED \W*AS\W+IS\W*(?:,?|AND) (?:\S+ ){1,15}DISCLAIMS/ }, - permission_use_deal_sw => { - caption => 'usage (deal, software, any purpose)', - tags => ['clause'], - pat => qr/$to_deal_sw/, + asis_sw_warranty => { + pat => qr/THE SOFTWARE IS PROVIDED \W*AS\W+IS\W* WITHOUT WARRANTY/ }, - permission_use_deal_materials => { - caption => 'usage (deal, materials, any purpose)', - tags => ['clause'], - pat => qr/$to_deal_mat/, + + # versioning + ver_later_para => { pat => qr/Later versions are permitted/ }, + ver_later_postfix => { + pat => + qr/(?:and|or)(?: ?\(?at your option\)?)?(?: any)? (?:later|newer)(?: version)?/ }, - permission_use_fee_agree => { - caption => 'permission (use, no fee or agreement)', - tags => ['clause'], - pat => qr/and without a written agreement/, + ver_number => { pat => qr/\d(?:\.\d+)*/ }, + ver_prefix => { pat => qr/[Vv](?:ersion |ERSION |\.? ?)/ }, + + # Creative Commons + cc => { pat => qr/(?:Creative Commons|CC)/ }, + cc_by => { pat => qr/(?:Attribution)/ }, + cc_cc0 => { pat => qr/(?:CC0|Zero|0)/ }, + cc_nc => { pat => qr/(?:Non$SD?Commercial)/ }, + cc_nd => { pat => qr/(?:No$SD?Deriv(?:ative)?s)/ }, + cc_sa => { pat => qr/(?:Share$SD?Alike)/ }, + cc_sp => { pat => qr/(?:Sampling$SD?Plus)/ }, + cc_url => + { pat => qr"(?:(?:https?:?)?(?://)?creativecommons.org/licenses/)" }, + cc_url_pd => { + pat => qr"(?:(?:https?:?)?(?://)?creativecommons.org/publicdomain/)" }, - permission_person_materials => { - caption => 'permission (granted, no charge, person, materials)', - tags => ['clause'], + + # texts + ack_name => { pat => - qr/$granted, $no_charge, $to_person of $sw_docfiles \(the "?Materials"?\)/, + qr/the following acknowledge?ment\W+This product includes software developed by/ }, - permission_person_sw_doc => { - caption => 'permission (granted, no charge, person, software)', - tags => ['clause'], + copr_perm => { pat => - qr/$granted, $no_charge, $to_person of $sw_docfiles \(the "?Software"?\)/, + qr/[Tt]he above copyright notice(?:\(?s\)?)? and this permission notice/ }, - right_mod_sublic => { - caption => 'rights (modify, sublicense)', - tags => ['clause'], + copr_cond_discl => { pat => - qr/to use, copy, modify, merge, publish, distribute, sublicense, and\/or sell copies of the Software/, - }, - use_sw_doc_any => { - caption => 'usage (software and documentation, any purpose)', - tags => ['clause'], - pat => qr/$to_use $sw_doc $any_purpose/, - }, - version_later_para => { - caption => 'version "or later" (paragraph)', - tags => ['trait'], - pat => qr/Later versions are permitted/, + qr/the above copyright notice, this list of conditions and the following disclaimer/ }, - version_later_postfix => { - caption => 'version "or later" (postfix)', - tags => ['trait'], + + # combinations + discl_name_warranties => + { pat => qr/(?:\S+ ){1,15}DISCLAIMS? ALL WARRANTIES/ }, + note_marketing => { pat => - qr/(?:and|or)(?: ?\(?at your option\)?)?(?: any)? (?:later|newer)(?: version)?/, - }, - version_number => { - caption => 'version number', - tags => ['component'], - pat => qr/\d(?:\.\d+)*/, - }, - version_prefix => { - caption => 'version prefix', - tags => ['component'], - pat => qr/[Vv](?:ersion |ERSION |\.? ?)/, + qr/shall be included in all copies of the Software, its documentation and marketing/ }, + permission_use_fee_agree => + { pat => qr/and without a written agreement/ }, ); +$RE{ad_mat_ack_this}{pat} + = qr/All advertising materials mentioning features or use of this software must display $RE{ack_name}{pat}/; +$RE{note_copr_perm}{pat} + = qr/provided that$I? $RE{copr_perm}{pat} appear in all copies/; +$RE{note_copr_perm_doc}{pat} + = qr/both $RE{copr_perm}{pat} appear in supporting documentation/; +$RE{retain_copr_perm_subst}{pat} + = qr/$RE{copr_perm}{pat} shall be included in all copies or substantial portions of the Software/; +$RE{retain_notice_cond_discl}{pat} + = qr/Redistributions of source code must retain $RE{copr_cond_discl}{pat}/; +$RE{nopromo_except}{pat} + = qr/Except as contained in this notice, $RE{namenot}{pat} $RE{used_ad}{pat}/; +$RE{repro_copr_cond_discl}{pat} + = qr/$RE{redist_bin_repro}{pat} $RE{copr_cond_discl}{pat} in $RE{doc_mat_dist}{pat}/; +$RE{nopromo_neither}{pat} + = qr/(?:$RE{neithername}{pat}|$RE{namenot}{pat}) $RE{used_endorse_deriv}{pat} $RE{without_prior_written}{pat}/; +$RE{redist_ack_this}{pat} + = qr/Redistributions of any form whatsoever must retain $RE{ack_name}{pat}/; + =encoding UTF-8 =head1 AUTHOR diff --git a/t/SPDX.t b/t/SPDX.t index 39bf954..da5d32f 100644 --- a/t/SPDX.t +++ b/t/SPDX.t @@ -24,6 +24,7 @@ my %Debian2SPDX = ( 'LGPL-2.1+' => 'LGPL-2.1', 'Python-2' => 'Python-2.0', 'WTFPL-2' => 'WTFPL', + 'NUnit' => 'zlib-acknowledgement', ); path("t/SPDX")->visit( -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/licensecheck.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits