App-Licensecheck ================ Created: 2000-01-28 Home page: <https://metacpan.org/pod/App::Licensecheck> Home page: <https://metacpan.org/release/App-Licensecheck> Bug tracker: <https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=licensecheck> Maintainer: Jonas Smedegaard (JONASS) <jonass@cpan.org> v3.3.9 2023-07-04 [ Bug Fixes ] - fix: properly catch second decoding error, to try raw as fallback of both explicit and iso-8859-1 encoding (broken since v3.3.1) [ Test Suite ] - relax encoding tests to cover String::License v0.0.6 - relax stderr for a few encoding tests - skip encoding tests on cygwin [ Other ] - log failure error before retry notice - use Feature::Compat::Class after core features, to support newer perl; thanks to Jitka PlesnÃková and Graham Knop (see RT#148507) v3.3.8 2023-01-18 [ Test Suite ] - skip test reading.t with too old String::Copyright [ Packaging ] - test-recommend String::Copyright 0.003009 v3.3.7 2023-01-17 [ Packaging ] - test-require Test2::Tools::Command v3.3.6 2023-01-16 [ Packaging ] - really use String::License v3.3.5 2023-01-15 - externalize license resolving: use String::License - stop (directly) use re::engine::RE2 Array::IntSpan experimental Regexp::Pattern Regexp::Pattern::License File::BaseDir File::Basename Software::LicenseUtils YAML::XS Test::Without::Module - use Test2::Tools::Command (not Test::Command::Simple) v3.3.4 2023-01-14 [ Bug Fixes ] - use warnings, no longer done in Feature::Compat::Class since v0.05 [ Test Suite ] - fix plan count to work on older perls v3.3.3 2023-01-09 [ Bug Fixes ] - avoid silence warnings on older (but not too old) perls v3.3.2 2023-01-07 [ Bug Fixes ] - avoid silence warnings on older perls [ Test Suite ] - rewrite fedora tests v3.3.1 2023-01-03 [ Bug Fixes ] - resolve naming schemes when listing licenses [ Documentation ] - extend copyright to include present year - improve synopsis [ Test Suite ] - add author tests to check SYNOPSIS - simplify and generalize tests slightly - tell Perl::Critic that Object::Pad implicitly enables strict and warnings [ Packaging ] - tighten dependency on Pod::Usage to silence spurious 'used only once: possible typo' warning notably with perls older than 5.18 - unset executable bit on module file in source [ Other ] - have module methods return lists, and print to STDOUT in main script - modernize class instantiations to use field and :param and ADJUST (not has and BUILD) - parse shortname schemes in main script, slightly simplifying modules - refactor to iterate files in main script - rename parameter shortname_scheme -> schemes, and validate - stop include path in log messages within method parse_license - use Feature::Compat::Class (not Object::Pad) - use Feature::Compat::Try (not Try::Tiny) - use Object::Pad 0.74 v3.3.0 2022-01-08 [ Bug Fixes ] - catch decoding errors and retry as iso-8859-1 encoding - fix dumping of content tail [ Documentation ] - clarify option --tail - update TODOs, and reformat as CommonMark [ Test Suite ] - add tests reading only header and tail - check full contents of Software::License generated data - enable debug output for encoding tests - fix one devscripts TODO test - parse perl-generated Software::License data as utf8 - refactor to directly use App::Licensecheck (i.e. drop local module Test2::Licensecheck) - rewrite Software::License tests to check against library - rewrite devscripts tests to use library - separate script report tests from devscripts.t - use only SPDX shortnames (not also debian shortnames) for Software::License and SPDX tests, and list only deviating entries [ Other ] - Added: add options --quiet --debug --trace (and deprecate now no-op option --no-verbose) - Run perltidier (not perltidy) with tidyall - avoid given/when - call log->trace() (not log->tracef()) for simple strings - change option --skipped to use Log::Tiny (not core warn), and log as debug when not set - declare package version with package name, and move POD sections NAME VERSION SYNOPSIS DESCRIPTION closer to top of files - have $fh $license $copyrights as slots (not local variables) - improve resolving offset - logging: dump content as trace (not notice) - logging: log fatal errors using Log::Tiny - logging: log files processed as debug, with decoding details (not tersely as trace) - logging: warn about obsolete options using Log::Tiny (not using core warn) - logging: warn tersely on file decoding failure, and list error message as debug (not all as notice) - merge method parse_lines() into parse_file(), and use $encoding slot (stop redefine as local variable) - pass around File object (not path, content and (currently unused) offset in content) - refactor to have slot $path in main class (not class File) - refactor to hold semi-cleaned content (not cleaned-for-license-parsing) in slot $content - refactor to merge local class File into main class - refactor to read and decode files in method content() - refactor to use Object::Pad (not Moo or MooX::Struct) - use named arguments for struct objects v3.2.14 2021-11-22 [ Bug Fixes ] - fix tests to use executable set in environment variable LICENSECHECK Paul Gevers++ v3.2.13 2021-10-11 [ Bug Fixes ] - fix encoding tests flag as TODO tests using undecoded input: String::Copyright documented to accept only strings Adrian Bunk++ [ Test Suite ] - tighten test to not fail with old String::Copyright [ Other ] - relax dependency on perl to v5.12, and explicitly 'use' it, to slightly simplify boilerplate - stop use version (unneeded with modern perl) - tighten runtime-dependency on Encode, to avoid 'Use of uninitialized value' on stderr v3.2.12 2021-08-30 [ Bug Fixes ] - use path-less shebang (not indirect env executable, and execute from blib subdir when available SCANTRELL++ Slaven Rezić++ v3.2.11 2021-08-18 [ Test Suite ] - skip *-no-RE2 tests unless installed Regexp::Pattern::License is recent enough to support it v3.2.10 2021-08-18 [ Documentation ] - improve POD markup of SYNOPSIS and a few code strings [ Test Suite ] - improve tests - test-require Test::Without::Module [ Packaging ] - relax to recommend (not depend on) module re::engine::RE2 v3.2.9 2021-08-16 [ Packaging ] - stop use Sort::Key::Multi [ Other ] - strip xml tag <ref ...>, and extend to strip html tags <p> <br> with attributes (not only bare tags) v3.2.8 2021-08-15 - fix tests and silence warnings with Regexp::Pattern::License less than v3.8.1 v3.2.7 2021-08-14 [ Bug Fixes ] - extend local lgpl dual-license pattern to not assume name patterns include trait published_by, required since Regexp::Pattern::License v3.9.0 - stop treat : or :// as cruft - strip simple closing (not only opening) html tags as cruft [ Test Suite ] - add test for (not yet detected) BSD-3-clause~Refractions - simplify tests - stop skip author test apparently succeding nowadays - test-recommend Regexp::Pattern::License 3.9.0 - update author tests to cover Regexp::Pattern::License v3.9.0 [ Other ] - avoid hardcoding names of specific prefix traits - detect python_2 and (additional, standalone) cnri_python in same file - force atomic scan for mit_new, to avoid misdetecting ambiguous MIT X11 grant as only x11 - optimize: compile only patterns actually used v3.2.6 2021-08-07 [ Documentation ] - correct typo in SEE ALSO entry - extend copyright to include present year [ Test Suite ] - update author tests to cover Regexp::Pattern::License v3.8.0 [ Packaging ] - tighten test-recommendation on Regexp::Pattern::License [ Other ] - optimixe: compile some internal regexes only once - postpone compiling regexes, to speedup response time for non-scanning command-line options v3.2.5 2021-07-22 [ Bug Fixes ] - fix shebang to use /usr/bin/env (don't hardcode /usr/bin/perl) - strip all trailing dash a.k.a. soft-wraps (not only first instance) [ Packaging ] - tighten test-recommendation on Regexp::Pattern::License [ Other ] - extend functions clean_cruft() clean_cruft_and_spaces() to strip html tags v3.2.4 2021-07-17 [ Test Suite ] - update testsuite to cover Regexp::Pattern::License v3.7.0 [ Other ] - extend function clean_cruft_and_spaces() to strip trailing dash, assuming it is soft-wrap - refine resolving of license names to cover more variants v3.2.3 2021-07-07 [ Bug Fixes ] - fix option --copyright-delimiter (deb-machine output broken since v3.2.0) [ Test Suite ] - rewrite encoding tests [ Other ] - stop use strictures (not sure why, but CPANTESTERS choke on it) v3.2.2 2021-07-04 [ Bug Fixes ] - fix ignore atomic discoveries in areas already detected stepwise as a license, grant, or exception - fix include leading licensed_under when tracking detected positions - fix resolve shortname not reusable in grant (e.g. SPDX using unversioned SISSL for SISSL-1.1) [ Documentation ] - fix describe option --shortname-scheme (not bogus option --shortname-schemes) in changelog entry for release v3.2 - fix trace output to include string for stepwise or_later grant trait - mention in POD when each option was introduced [ Test Suite ] - add README to source, documenting origin of Fedora tests - add test for not yet recognized PS-or-PDF-font exception - tighten test requirement on Regexp::Pattern::License - update tests to cover Regexp::Pattern::License v3.6.0 [ Packaging ] - relax runtime requirement on Regexp::Pattern::License - tighten .gitignore file [ Other ] - tighten internal trait objects to require file attribute v3.2.1 2021-06-29 [ Bug Fixes ] - fix option --deb-machine (broken since v3.2.0) [ Test Suite ] - fix include missing test files - stop use strictures in tests (unneeded with Tests2::V0) v3.2.0 2021-06-22 [ Bug Fixes ] - stepwise: fix omit version for singleversion objects Sandro Mani++ - tighten custom BSD detection to avoid SSLeay false positive - use Getopt::Long and Pod::Usage (not Getopt::Long::Descriptive) David Bremner++ [ Documentation ] - add pod section ENVIRONMENT (replacing and expanding section DEBUGGING) - colorize output of --help option, and auto-enable color more reliably - document that options --check and --ignore apply only when multiple PATHs are provided - improve markup of pod section OPTIONS - rephrase description for option --skipped - restore POD section OPTIONS (gone since v3.0.2) - split pod section OPTIONS into subsections - stop bogusly annotate v3.1.0 bugfix as security-related - update TODOs [ Test Suite ] - update author tests - update detection of SISSL since Regexp::Pattern::License v3.5.0 - update to match capitalized name of Libtool exception, corrected since Regexp::Pattern::License v3.5.0 [ Packaging ] - tighten to require more recent Regexp::Pattern::License [ Other ] - Added: add option --list-licenses - Added: add option --list-naming-schemes - Added: add option --shortname-scheme, replacing option --deb-fmt (kept for now, documented as deprecated) - logging: fix resolve identifier in trace of exception and flaw detection - resolve license patterns only when used, speeding up --help - use IO::Interactive v3.1.1 2020-05-21 [ Test Suite ] - drop tricky and superfluous exception test v3.1.0 2020-05-21 [ Bug Fixes ] - avoid uninitialized value in local Apache-and-BSD pattern Sandro Mani++ [ Test Suite ] - check detection of generated file - check detection of incorrect FSF postal address - update author tests - update to reflect changed markup of flaws [ Packaging ] - fix test-require (not only runtime-require) strictures - tighten to require more recent Regexp::Pattern::License [ Other ] - Added: enclose flaws with square brackets (not parens, now used for details of some flaws) in legacy output - detect exceptions, tracked as objects - streamline and improve detection of generated file - streamline and improve detection of incorrect FSF postal address - track detected flaws as objects v3.0.47 2020-05-17 [ Bug Fixes ] - fix resolve SPDX keyword for *_or_later (broken in commit 1bcccbdv3.0.40 released since v3.0.40) - stepwise: fix detect leading version [ Documentation ] - add some TODOs [ Test Suite ] - adjust for normalized license names in legacy output - update author tests - update detection of EUPL since Regexp::Pattern::License v3.3.1 - update test related to lgpl_* patterns covered since Regexp::Pattern::License v3.3.2 [ Packaging ] - tighten to require more recent Regexp::Pattern::License [ Other ] - append extrainfo to final legacy license string (previously appended each license but only for custom match) - avoid misdetecting license caldera as license-group bsd - avoid misdetecting license python_2 as cnri_python - drop custom GPL fulltext resolving (unused since Regexp::Pattern::License 3.3.1) - drop obsolete custom patterns - improve log messages - optimize: include left-anchoring when pre-compile clean_comments regexes - quirk: avoid-step-wise for cua_opl_1 - revert: avoid detecting grant for license group (broken) - skip custom LGPL grant resolving when (not only GPL-2 but also) LGPL-2 or LGPL-2.1 fulltext detected (needed since Regexp::Pattern::License 3.3.1) - stepwise: optimize: match name left-anchored - use usage patterns (i.e. *_only *_or_later) v3.0.46 2020-03-13 [ Bug Fixes ] - atomic: tighten grant patterns to include licensed_under prefix [ Documentation ] - relicense project as AGPL-3-or-newer; add Purism SPC as copyright holder - update git repository URL [ Test Suite ] - mark 3 flawed author tests as such - mark 4 bogusly versioned tests as such - update author test related to gpl_* patterns covered since Regexp::Pattern::License v3.3.0 - update author test related to rare apache_2 pattern covered since Regexp::Pattern::License v3.3.0 [ Packaging ] - require Regexp::Pattern::License 3.3.0 [ Other ] - add FIXME comments where (mostly custom) patterns lack test coverage - atomic: consult coverage from stepwise scan to avoid duplicate match - atomic: explicitly (regardless of list @L_tidy) skip cc-by when cc_by_sa_3 is detected - avoid finalize in custom scan for GPL fulltext - avoid wildcard in local bsd pattern - detect vague grant for license group - extend clean_comments() to strip escaped newline - improve detection of GNU 'or-newer' usage grant version - improve logging and comments - logging: avoid undefined version for custom agpl grant detection - logging: generally resolve positions - logging: stepwise: log whole version string (not only number) - logging: stepwise: resolve positions - optimize: atomic: skip a few scans if grant already detected - optimize: track incomplete patterns (not subset of complete ones) - speed boost of %25! - optimize: use optimized regex with /g (apparently supported by re::engine::RE2) - pre-compile left-anchored trait pattern version - scan for GNU 'or-newer' usage version before singleversion grant version - sort or'ed parts of expressions - stepwise: detect 'or-later' usage grant also as versioned grant - stepwise: detect prepended version - stepwise: explicitly (regardless of list @L_tidy) avoid gpl - stepwise: relax to use wider window for license name - stepwise: track start and end position, and a moving current position (not additional static ones) - stepwise: use named (not numbered) capture for version - track examined files - use both custom and atomic patterns (not only custom) for agpl fsful fsfullr gpl lgpl v3.0.45 2020-02-21 [ Bug Fixes ] - fix: try fallback encoding per-file (restore explicit encoding for subsequent file) Dominique Dumont++ - sort positions numerically (not alphanumerically) [ Documentation ] - fix print encoding name (not Encode object ref) if encoding fails - use canonical encoding name iso-8859-1 (not latin-1) [ Test Suite ] - change namespace of local libraries to Test2::Licensecheck - support fixing or skipping with Test2::Licensecheck::ScanCode skipfiles [ Other ] - streamline detection of bsd licenses - update (improved but still failing) misdetection of SSLeay since Regexp::Pattern::License v3.2.0 v3.0.44 2020-02-10 [ Test Suite ] - ensure local script is executable v3.0.43 2020-02-10 [ REGRESSIONS ] - now misses trove declarations for AGPL-3+ [ Bug Fixes ] - adjust end position of located license name - resolve license fulltext last, to leave room for shadowing with -or-newer grant - tests: declare "use utf8" and "use feature 'unicode_strings'" in encode.t [ Documentation ] - update TODOs [ Test Suite ] - drop unused function is_licensed_like_scancode - tighten encode.t (still fails with non-UTF-8 locales) - update author tests related to ZPL since Regexp::Pattern::License v3.1.102 - update tests - use List::SomeUtils (not List::MoreUtils) - use Test2::V0 [ Packaging ] - relax to require strictures unversioned - require Encode::Locale Encode - require MooX::Struct - require Regexp::Pattern 0.2.12 and Regexp::Pattern::License 3.1.102 - stop test-recommend List::MoreUtils - stop test-require UNIVERSAL::require (unused since v3.0.2) - test-require Test2::V0 (not Test::Builder::Module Test::Requires Test::More) [ Other ] - avoid misdetecting CECILL-1.1 as GPL-1+ due to extending trait pattern licensed_under since Regexp::Pattern::License v3.1.102 - consistently use strictures, unversioned - consult coverage of well-formed scan to avoid duplicate matches - improve detection of AGPL licenses - optimize detection of ZPL licenses - simplify avoiding license duplicates in expression by skipping grant of same id as already found fulltext - simplify flagging step-wise grants - stop resolve regexes licensed_under version_later (unused since v3.0.42) - tighten which regexes to generate - track detected licensing as objects - track step-wise traits as objects - track traits as objects v3.0.42 2020-02-01 [ REGRESSIONS ] - now fails to detect dual-licensing of CC-BY-SA-3.0 or LGPL-2 (test case: utilities.scad) [ Bug Fixes ] - gracefully skip to next file on failure decoding a file (broken since v3.0.38) Dominique Dumont++ [ Test Suite ] - environment variable LICENSECHECK sets path to licensecheck (default: bin/licensecheck) Gregor Hermann++ - simplify tests Software-License.t devscripts.t encoding.t [ Packaging ] - test-require Test::Command::Simple (not Test::Script) [ Other ] - drop obsolete custom patterns - optimization: drop custom CC patterns - optimization: stop skip detection of GPL/LGPL fulltext v3.0.41 2020-01-30 [ Documentation ] - clarify comment about identifiers being DEP-5 or SPDX (not only SPDX) [ Test Suite ] - testsuite: update tests for Regexp::Pattern::License v3.1.101 (many improvements, few "regressions" especially related to dual-licensing due to previously accidentally matching by name only) [ Other ] - merge duplicate detections of same license - optimization: avoid accidentally flagging all objects for rescanning when checking if rescanning can be skipped :-/ v3.0.40 2020-01-28 [ Bug Fixes ] - drop bogus small optimization. - resolve SPDX keyword for AFPL. - step-wise grant: capture non-versioned grant. - step-wise grant: skip type:group license names. - strip fortran comment also on otherwise empty line. [ Test Suite ] - update author tests for added Trove captions since Regexp::Pattern::License v3.1.100. - update author tests for improved trait licensed_under since Regexp::Pattern::License v3.1.100. [ Other ] - fix: step-wise grant: capture traits before mangling version. - improve custom-matching versioned apache grants. - improve logging. - optimization: step-wise grant: scan for name only directly after licensed_under. - step-wise grant: detect type:singleversion license names. - step-wise grants: track trait license_label (in addition to licensed_under). - step-wise grants: track trait license_label_trove (in addition to track_label licensed_under). - streamline detection of well-formed licenses. - tests: update author testsuite. - track identified areas of strings and skip further parsing; require Array::IntSpan. - use nsort_by to sort matches; require List::SomeUtils (not List::Util). v3.0.39 2020-01-04 - Improve detection of CC licenses. - improve logging; stop require MooX::Role::Logger - optimize bsd detection (apparently case-insensitive match in unneeded) - use hash interface of Regexp::Pattern and RE2 regexes; require re:engine::RE2, and more recent Regexp::Pattern and Regexp::Pattern::License v3.0.38 2020-01-03 [ REGRESSIONS ] - misdetects some GNU fulltext licenses as also maybe LGPL [ Bug Fixes ] - Add missing newline when no arguments - fix: detect creative commons dual-version-licensing (not misdetect as same version twice) - support non-utf8 locale [ Test Suite ] - Isolate and extend encoding tests. - adapt author testsuite for improved detection (and few minor regressions) since Regexp::Pattern::License v3.1.95 - silence warnings in handling utf8 content [ Packaging ] - use more recent Regexp::Pattern::License [ Other ] - Add missing newline when no arguments - Improve detection of AFL licenses. - Improve detection of Boost licenses. - Improve detection of Cecill licenses. - Improve detection of WTFPL and WTFNMFPL licenses. - Move encoding loop from executable to library. - Streamline detection of well-formed grants. - Tighten and improve detection of Artistic licenses. - define local regexes in sub licensepatterns (not sub parse_license) - improve detection of apache licenses - pass file and position to function parse_license - support environment variable DEBUG; require modules Log::Any Log::Any::Adapter::Screen MooX::Role::Logger v3.0.37 2019-06-12 [ Documentation ] - Update TODOs. [ Test Suite ] - Adapt author testsuite for improved detection (and few minor egressions) since Regexp::Pattern::License v3.1.94. - Adapt testsuite to use recent Software::LicenseUtils (not slightly older Software::License). - Fix handle missing ScanCode corpus.. - Load Test::Builder only once per module.. - Update testsuite: OSI license Artistic-1.0 really is Artistic-1.0-Perl. [ Other ] - Reuse previous name match. - Simplify conditionals: Replace given-when-continue with if. - Skip scan for CC grant unless name already detected. - Use more recent Regexp::Pattern::License. v3.0.36 2018-04-05 - Limit to compile only trait patterns actually used. - Match name alone, before recompiled custom regexes. - Simplify AGPL-related pattern slightly. - Sort license keys once. - Tighten apache pattern slightly. - Tighten gpl pattern. - Track matches in hash (not array). - Use Regexp::Pattern::License trait patterns any_of licensed_under or_at_option version version_numberstring. v3.0.35 2018-03-30 [ Bug Fixes ] - Fix tolerate alternative regexp compilers. [ Test Suite ] - Adapt testsuite for detecting uppercase GPL or LGPL post Regexp::Pattern::License v3.1.0. - Adapt testsuite for detection of FSFULLR post Regexp::Pattern::License v3.1.0. - Adapt testsuite for improved detection since Regexp::Pattern::License v3.1.0. - Adapt testsuite for renamed pattern kevlin-henney → Kevlin-Henney post Regexp::Pattern::License v3.1.0. - Adapt testsuite for renamed pattern khronos → Khronos post Regexp::Pattern::License v3.1.0. - Testsuite: Improve workarounds for license zlib-acknowledgement/Nunit/NUnit. - Testsuite: Tolerate Aladdin License mis-categorized as unversioned by SPDX, as reflected post Regexp::Pattern::License v3.1.0. [ Other ] - Improve license patterns cecill_b cecill_c to detect more forms (previously misdetected as cecill). - Use Regexp::Pattern::License subject patterns. v3.0.34 2018-03-29 [ Bug Fixes ] - Fix support uncompiled patterns from Regexp::Pattern::License. - Fix tighten license key loop (skip eventual DefHash attributes). - Fix tighten version matching: Wrap in group when optional. - Fix word-based comment removal. [ Documentation ] - Extend TODO with more ideas. [ Test Suite ] - Demote ScanCode tests to maintainer tests. - Fix Software-License test to match license shortnames (not captions which are not fixed). - Relax devscripts test to match SPDX-style license captions as supported post Regexp::Patterns::License v3.1.0. - Testsuite speed boost: Parse skipfile once per set, not once per file in each set. - Testsuite: Add function license_like. - Testsuite: handle alternative name of license bdwgc → MIT~Boehm post Regexp::Pattern::License v3.1.0. [ Other ] - Generalize singleversion patterns. - Resolve license patterns as Debian → SPDX → generic (not just Debian → generic) to support less SPDX-centric names post Regexp::Pattern::License v3.1.0. - Simplify pattern tag resolving. - Slight speed boost: Use eq (not regexp) for simple comparisons. - Speed boost: Fix load regexp patterns once (not once or twice per file). - Use regexp patterns as-is (avoid recompiling). v3.0.33 2018-02-15 [ Test Suite ] - Extend testsuite to 2410 succeeding tests and 5313 TODOs (from 227 and 7 TODOs), when ScanCode v2.1.1 test data is available below $ENV{XDG_DATA_DIRS} + tests/ScanCode/ - Rewrite testsuite to use Test::Builder::Module (not Test::Roo). v3.0.32 2018-02-09 [ REGRESSIONS ] - Adapt testsuite to tolerate misdetecting MPL-1.0 as MPL: Regression caused by more generalized matching. [ Documentation ] - Add TODO file, with a bunch of ideas. - Improve POD: Add SEE ALSO section to commandline tool. [ Other ] - Adapt and extend testsuite to cover new license patterns supported by Regex::Patterns::License 3.1.0: bdwgc bdwgc-matlab gfdl lgpl-bdwgc. - Optimize slightly: Skip embedded or referenced licenses earlier. - Tighten regexes: Generalize and improve matching. - Use Regexp::Pattern. - Use Regexp::Pattern::License 3.1.0 tags. v3.0.31 2017-08-16 [ Documentation ] - Fix bogusly labelled changelog entry part of release 2.0.30 (didn't fix bare-named BSD licenses, but instead tightened a bunch of license patterns). [ Packaging ] - Stop ship Regexp::Pattern::License, now an independent distribution. v3.0.30 2017-07-05 [ Bug Fixes ] - Fix license pattern ms_pl to detect MS Public License (not non-free MS Permissive License). - Tighten license patterns afl agpl cdl gfdl gfdl_nivgpl lgpl llgpl mpl ms_pl ms_rl qpl sgi_b wtfpl mit to require descriptive prefix when only an abbreviation. Axel Beckert++ [ Test Suite ] - Add OSI test (including only currently succeeding OSI licenses for now). [ Other ] - Added: Add license pattern artistic_2. - Improve license pattern agpl to skip english (not only french) cecill_2_1. - Improve license pattern epl to detect some forms of "or newer". - Improve license pattern epl. - clean_comments(): Relax to match varying amount of horizontal whitespace (not exactly one character) followed by any non-whitespace (not only a word character). - clean_comments(): Tighten to match and strip only horizontal whitespace (not newlines). v3.0.29 2017-01-24 [ REGRESSIONS ] - Drop gpl+aladdin combo license: Too exotic. [ Bug Fixes ] - Fix detect BSD licenses as bare name. Vasudev Kamath++ - Fix don't choke on unspecificed BSD license. [ Documentation ] - Document Regexp::Pattern::License as a private module. [ Other ] - Added: Add license patterns ofl aladdin rpsl mit_cmu mit_cmu_warranty. - Improve license patterns ftl mit_feh mit_enna cube eurosym libpng zlib zlib_acknowledgement. - Sort before enumerating ambiguously related combo licenses. - Streamline license parsing: Process loops of similar patterne. v3.0.28 2016-11-25 [ Bug Fixes ] - Fix detect dual licensing mit_new mit_old (and speed up partsing while at it). - Fix tighten detection of ISC license (was misdetecting curl). - Fix tighten detection of mit_new license (was misdetecting other MIT flavors). - Fix tighten license pattern curl (was misdetecting other MIT variants). [ Documentation ] - Extend license pattern dsdp with alternate fedora name PetSC. - Fix typo in changelog. - Tidy changelog: Improve distinction between newly added and added-to-patternlist entries. [ Other ] - Add license pattern ISC to Regexp::Pattern::License::Pattern. - Added: Add new license pattern icu. - Added: Add new license pattern mit_advertising. - Added: Add new license patterns mit_enna mit_feh. - Drop unused and too broad trait pattern disclaimer. - List license mit_new alternate fedora name Modern Style with sublicense. - Tidy Regexp::Pattern::License: Remove stray bogus regexp. - Tidy Regexp::Pattern::License::Pattern: Fix sort pattern list. - Tidy Regexp::Pattern::License::Pattern: Rename pattern provided_no_warranty → asis_expr_warranty. - Tidy Regexp::Pattern::License::Pattern: Rename pattern repro_notice_cond_discl → note_repro_notice_cond_discl. - Tidy Regexp::Pattern::License::Pattern: Rename pattern retain_notice_cond_discl → note_retain_notice_cond_discl. - Tidy Regexp::Pattern::License::Pattern: Rename pattern discl → asis_sw_name. - Tidy Regexp::Pattern::License::Pattern: Rename pattern discl_disclaim → discl_name_warranties. - Tidy Regexp::Pattern::License::Pattern: Rename pattern discl_provide → asis_name_sw. - Tidy Regexp::Pattern::License::Pattern: Rename pattern name_no_ad → nopromo_written_prior. - Tidy Regexp::Pattern::License::Pattern: Rename pattern promo_no_author → nopromo_neither. - Tidy Regexp::Pattern::License::Pattern: Rename pattern retain_notice → note_invar. - Tighten license pattern bsd-2-clause. Tidy Regexp::Pattern::License::Pattern: Rename pattern asis_sw_name → asis_sw_by_name. v3.0.27 2016-11-23 [ REGRESSIONS ] - Drop too exotic licensing phrase, and corresponding test case. [ Bug Fixes ] - Fix avoid detection of GPL/LGPL fulltext (rarely if ever used as grant). - Fix detect license FSFULLR (was misdetected as bogus FSFULR). - Fix detect license MPL-2.0 (was misdetected as MPL-2.0 or AGPL). - Fix detect licenses mit_old mit_unspecified (was misdetected as mit_new). - Fix version identifier to use + only in machine-readable mode. [ Other ] - Add combo pattern perl to Regexp::Pattern::License. - Add license pattern afl to Regexp::Pattern::License. - Add license pattern agpl to Regexp::Pattern::License. - Add license pattern apache to Regexp::Pattern::License. - Add license pattern artistic to Regexp::Pattern::License. - Add license pattern beerware to Regexp::Pattern::License. - Add license pattern cc_by_sa to Regexp::Pattern::License. - Add license pattern ftl to Regexp::Pattern::License. - Add license pattern llgpl to Regexp::Pattern::License. - Add license pattern mpl to Regexp::Pattern::License. - Add license pattern ms_pl to Regexp::Pattern::License. - Add license pattern openssl to Regexp::Pattern::License. - Add license pattern public_domain to Regexp::Pattern::License. - Add license pattern python to Regexp::Pattern::License. - Add license pattern qpl to Regexp::Pattern::License. - Add license pattern sgi_b to Regexp::Pattern::License. - Add license pattern wtfpl to Regexp::Pattern::License. - Add license patterns adobe_2006 adobe_glyph apafml to Regexp::Pattern::License. - Add license patterns bsd_2_clause bsd_3_clause bsd_4_clause to Regexp::Pattern::License. - Add license patterns cddl cecill cecill_1 cecill_1_1 cecill_2 cecill_2_1 cecill_b cecill_c epl to Regexp::Pattern::License. - Add license patterns fsfap fsful fsfullr to Regexp::Pattern::License. - Add license patterns gpl lgpl to Regexp::Pattern::License. - Add license patterns libpng zlib zlib_acknowledgement to Regexp::Pattern::License. - Add license patterns mit_new mit_new_materials mit_old mit_unspecified postgresql, and group pattern mit to Regexp::Pattern::License. - Add license patterns unicode_strict unicode_tou to Regexp::Pattern::License. - Added: Add new group pattern bsd. - Added: Add new group pattern gnu. - Added: Add new license pattern ms_rl. - Added: Add new license patterns cc_by cc_by_nc cc_by_nc_nd cc_by_nc_sa cc_by_nd cc_cc0 cc_sp. - Added: Add new license patterns cube eurosym. - Added: Add new license patterns curl dsdp mit_oldstyle mit_oldstyle_disclaimer mit_oldstyle_permission ntp ntp_disclaimer. - Added: Add new license patterns gfdl gfdl_niv. - Added: Add new trait pattern clause_advertising_always. - Added: Add new trait pattern license_prefix. - Added: Add new trait pattern license_version. - Added: Add new trait patterns clause_retention clause_reproduction clause_advertising clause_non_endorsement disclaimer. - Added: Add new trait patterns fsf_unlimited fsf_unlimited_retention. - Added: Add new trait patterns version_later version_later_paragraph version_later_postfix. - Added: Introduce new modules: Pattern::License Pattern::License::Parts. - Clean m4 dnl comment marker. - Drop no longer used internal license shortname list. - Emulate Regexp::Common -keep syntax to capture version number. - Improve detection of license GPL. - Improve license detections artistic perl. - Relax detection of license GPL. - Relax license pattern cc_by_ca. - Tidy code: Drop noop code. - Tighten regexes: Generalize abbreviated AGPL/LGPL/GPL matching. - Tighten regexes: Generalize and improve LGPL matching. - Use Regexp::Pattern::License for shortname resolving (with internal list as fallback until phased out). v3.0.26 2016-09-22 [ Bug Fixes ] - Fix exclude AGPL false positives. [ Other ] - Use generalized license string composition at more places. v3.0.25 2016-09-21 [ Bug Fixes ] - Fix avoid non-digit in version of license Artistic. - Fix delimit multiple licenses with "and/or" (not "or") when ambiguous. - Fix parse whole file for test info-at-eof.h (default length only approximates lines and is too short since String::Copyright 0.003003). [ Test Suite ] - Fix tighten runtime-requirement on PAth__Tiny for visit(). Slaven Rezić++ - Update testsuite to reflect Perl license detection. [ Other ] - Apply fallback marker "UNKNOWN" after (not during) license detection. - Detect license CC-BY-SA. - Detect licenses APAFML Adobe-Glyph Adobe-2006 Aladdin SIL FSFAP FSFUL FSFULLR JSON PostgreSQL Unicode-strict Unicode-TOU zlib-acknowledgement. - Enhance detection of Perl license. - Generalize license string composition. - Improve detection of license AGPL. - Improve detection of license Apache. - Improve non-version descriptor matching. - Improve version matching in license detections. - Tighten regexes: Generalize and improve version matching. - Tighten regexes: Simplify space matching (string already normalized). - Tighten regexes: Treat affero as alternative (not prefix) to GPL prefixes lesser and library. v3.0.24 2016-09-03 [ Bug Fixes ] - Fix apply options --check --ignore to full path (not basename). v3.0.23 2016-09-01 [ Bug Fixes ] - Fix skip parsing non-files (regression since v3.0.5). - Fix stop ignore options --check --ignore (regression since v3.0.5). [ Other ] - Use Path::Iterator::Rule. v3.0.22 2016-08-21 [ Bug Fixes ] - Fix have option --deb-machine imply option --deb-fmt. [ Other ] - Adjust SPDX-like shortnames to match Debian format. - Improve detection of GPL/LGPL/AGPL versions. - Stop merge differently cased owners. - Use List::Util and Sort::Key::Multi. - Use https protocol in deb-machine header. v3.0.21 2016-08-20 [ Bug Fixes ] - Really fix strip copyright sign unconditionally. v3.0.20 2016-08-20 [ Bug Fixes ] - Fix strip copyright sign unconditionally. - Fix strip trailing newline from copyrights. v3.0.19 2016-08-19 [ Bug Fixes ] - Fix strip copyright sign with option --deb-machine. [ Documentation ] - Mention in description of --deb-machine option that it implies --copyright. [ Other ] - Add option --copyright-delimiter, including comma by default. - Handle missing year or owner with option --deb-machine. - Require well-formed years when splitting ownerlines with option --deb-machine. v3.0.18 2016-08-13 [ Bug Fixes ] - Fix defaults for options --list-delimiter and --rfc822-delimiter (was one space too many). - Fix stop use obsolete undocumented String::Copyright blocks method. - Fix use NONE for no authors with option --deb-machine. [ Packaging ] - Tighten dependency on String::Copyright. v3.0.17 2016-08-12 - Fix avoid bogus "generated-file" as SPDX license. - Have option --deb-machine imply option --deb-fmt. v3.0.16 2016-08-11 - Add "Auto Generated" to the generated file detection. Paul Wise++ v3.0.15 2016-08-11 [ Documentation ] - Mention in description of --lines option that it does optimistic search. [ Packaging ] - Tighten dependency on String::Copyright to versions supporting configurable threshold. [ Other ] - Do full search when parsing whole file. v3.0.14 2016-08-01 [ Test Suite ] - Flag test involving multi-line multi-statements as TODO (regression since moving to String::Copyright). v3.0.13 2016-07-25 [ Packaging ] - Fix tighten runtime-requirement on PAth__Tiny for visit(). Stuart Prescott++ v3.0.12 2016-07-24 [ Test Suite ] - Fix devscripts test to use curly quotes as metacharacters (not Paranthesis also used within, triggering warnings on some versiones of perl). v3.0.11 2016-07-24 [ Packaging ] - Fix declare runtime-requirement on String::Copyright. v3.0.10 2016-07-24 [ REGRESSIONS ] - No longer detect multi-line multi-statement copyright strings (not yet suppported by String::Copyright). - Now misdetects some chatter as copyright statements (not yet suppported by String::Copyright). [ Test Suite ] - Relax devscripts test: Ignore trailing dot and "All rights reserved" boilerplate. [ Other ] - Use String::Copyright. v3.0.9 2016-07-24 [ Documentation ] - Drop old licensing header from devscripts test: Fully rewritten by now. - Fix decode "©" in --version option output (workaround for Pod::Constants not supporting UTF-8). - Fix some categorizations of old changelog entries. [ Test Suite ] - Rewrite devscripts test to match patterns (not exact strings), and handle varying output on encoding failure. [ Packaging ] - Drop superfluous test-requirement on strictures: Already declared as runtime-requirement. - Fix declare test-recommendation on Software::License (not too vague recommends). [ Other ] - Stop use Unicode features: We don't really do any complex Unicode, so let's try target older perl. - Update headers of module and tests: Strip hashbang; consistently use strictures. v3.0.8 2016-07-24 [ Bug Fixes ] - Avoid superfluous regex modifier /l. [ Packaging ] - Fix tighten test requirement for Test::Script to versions checking for stdout/stderr. [ Other ] - Add "Generated with" to the generated file detection. Paul Wise++ - Pseudo-decode alternative representations for copyright sign and hyphen-minus. v3.0.7 2016-07-20 [ Test Suite ] - Bail out gracefully if Software::License fails to create some licenses. [ Packaging ] - Make Software::License test optional. v3.0.6 2016-07-20 [ Packaging ] - Fix require experimental (for switch feature). [ Other ] - Improve separation of copyright parsing from comment stripping and copyright serializing v3.0.5 2016-07-19 [ SECURITY ] - Fix: Stop dereference symbolic links: non-intuitive and potentially dangerous (possibly introduced in error intended to enable recursion). Sandro Mani++ [ Test Suite ] - Fix tighten rest-requirement on Software::License to versions supporting new_from_short_name(). [ Other ] - Avoid type constraints and all but one coercion, for a 30% speedup in script initialization. - Move find routine to library. - Stop call system command find in script (uses Path::Tiny::visit instead). - Tidy script to rename $file → $path and $files_count → $paths_count where not yet resolved as file. v3.0.4 2016-07-18 [ Test Suite ] - Drop non-working option "--installed" from script tests (leftover from Debian autopkgtest support). - Stop use Path::Tiny in test where unneeded. - Use Test::Script to ensure correct perl invokes script in tests. Slaven Rezić++ v3.0.3 2016-07-18 [ Test Suite ] - Use Test::Roo and library calls (not script) for devscripts corpus license coverage tests. [ Packaging ] - Fix require strictures for tests. v3.0.2 2016-07-16 [ Test Suite ] - Add devscripts test tied to devscripts corpus, converted from earlier shunit2 script. - Rewrite Software-License test to stop rely on Debian fork of Software::License (see bug#828218). - Rewrite Software-License test to use Test::Command. [ Packaging ] - Run perlcritic with tidyall, and move tidyall test to xt dir. [ Other ] - Bump license to GPL-3+. - Resolve only regexes actually used. - Use Getopt::Long::Descriptive. - Use experimental given/when switch. v3.0.1 2016-06-29 [ Documentation ] - Add CPAN Request Tracker as alternative bug-database. - Add myself as current author, and claim copyright for recent changes. - Add pre-CPAN changelog entries. - Adjust copyright notice to mention initial committer (not later maintainer). - Link to script from POD DESCRIPTION of library. [ Packaging ] - Tighten tidyall config to avoid cruft in bin dir. v3.0.0 2016-06-27 [ Bug Fixes ] - Fix tighten to use Getopt::Long 2.24: Needed for :config option. [ Documentation ] - Rewrite documentation of options, and --help putput. [ Packaging ] - Initial CPAN release (after being in Debian since 2007, and before that in KDE SDK since 2000). [ Other ] - Added: Add --deb-machine option for Debian "deb5" copyright file format. - Refactor codebase, with up to 400% speedup and reusable parts in a Moo library. - Removed: Drop support for reading configuration from files: Limited use, legacy filenames, and odd parsing by use of risky shell call.