COPYRIGHT000644001750001750 415614451001241 15772 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: App-Licensecheck Upstream-Contact: Jonas Smedegaard (JONASS) Source: https://metacpan.org/pod/App::Licensecheck Files: INSTALL LICENSE README TODO.md scripts/licensecheck.bash_completion t/devscripts/beerware.cpp t/devscripts/bsd-regents.c t/devscripts/bsd.f t/devscripts/comments-detection.h t/devscripts/comments-detection.txt t/devscripts/dual.c t/devscripts/false-positives t/devscripts/gpl-2 t/devscripts/info-at-eof.h t/devscripts/multi-line-copyright.c t/devscripts/texinfo.tex t/encoding/README.gs550j t/encoding/copr-iso8859.h t/encoding/copr-utf8.h t/exception/Bison/grammar.cxx t/exception/Cecill/tv_implementpoly.reference t/grant/Apache/one_helper.rb Copyright: Unknown License: Unknown Files: Changes META.json META.yml bin/licensecheck dist.ini doap.ttl lib/App/Licensecheck.pm t/20-script-encoding.t t/20-script-report.t t/20-script-resolve.t t/devscripts.t t/lib/Test2/Require/WorkingUtf8.pm t/reading.t Copyright: Copyright 2023 Jonas Smedegaard. License: AGPL_3 Files: COPYRIGHT CREDITS SIGNATURE Copyright: None License: public-domain Files: t/devscripts/artistic-2-0-modules.pm Copyright: Copyright (C) 2009 by Moritz Lenz and the SVG::Plot contributors (see file. License: Artistic-2.0 Files: Makefile.PL Copyright: Copyright 2020 Toby Inkster. License: GPL-1.0+ or Artistic-1.0 License: AGPL_3 This software is Copyright (c) 2023 by Jonas Smedegaard. This is free software, licensed under: The GNU Affero General Public License, Version 3, November 2007 License: Artistic-1.0 This software is Copyright (c) 2023 by the copyright holder(s). This is free software, licensed under: The Artistic License 1.0 License: GPL-1.0 This software is Copyright (c) 2023 by the copyright holder(s). This is free software, licensed under: The GNU General Public License, Version 1, February 1989 License: Artistic-2.0 This software is Copyright (c) 2023 by the copyright holder(s). This is free software, licensed under: The Artistic License 2.0 (GPL Compatible) CREDITS000644001750001750 77714451001241 15504 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9Maintainer: - Jonas Smedegaard (JONASS) Contributor: - Paul Wise Thanks: - Adrian Bunk - Axel Beckert - David Bremner - Dominique Dumont - Gregor Hermann - Paul Gevers - SCANTRELL - Sandro Mani - Slaven Rezić (SREZIC) - Stuart Prescott - Vasudev Kamath Changes000644001750001750 12312214451001241 16025 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9App-Licensecheck ================ Created: 2000-01-28 Home page: Home page: Bug tracker: Maintainer: Jonas Smedegaard (JONASS) 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 , and extend to strip html tags


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. INSTALL000644001750001750 171614451001241 15527 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9 Installing App-Licensecheck should be straightforward. INSTALLATION WITH CPANMINUS If you have cpanm, you only need one line: % cpanm App::Licensecheck If you are installing into a system-wide directory, you may need to pass the "-S" flag to cpanm, which uses sudo to install the module: % cpanm -S App::Licensecheck INSTALLATION WITH THE CPAN SHELL Alternatively, if your CPAN shell is set up, you should just be able to do: % cpan App::Licensecheck MANUAL INSTALLATION As a last resort, you can manually install it. Download the tarball and unpack it. Consult the file META.json for a list of pre-requisites. Install these first. To build App-Licensecheck: % perl Makefile.PL % make && make test Then install it: % make install If you are installing into a system-wide directory, you may need to run: % sudo make install LICENSE000644001750001750 10357514451001241 15551 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9This software is Copyright (c) 2023 by Jonas Smedegaard. This is free software, licensed under: The GNU Affero General Public License, Version 3, November 2007 GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . MANIFEST000644001750001750 151514451001241 15624 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9COPYRIGHT CREDITS Changes INSTALL LICENSE MANIFEST META.json META.yml Makefile.PL README SIGNATURE TODO.md bin/licensecheck dist.ini doap.ttl lib/App/Licensecheck.pm scripts/licensecheck.bash_completion t/20-script-encoding.t t/20-script-report.t t/20-script-resolve.t t/devscripts.t t/devscripts/artistic-2-0-modules.pm t/devscripts/beerware.cpp t/devscripts/bsd-regents.c t/devscripts/bsd.f t/devscripts/comments-detection.h t/devscripts/comments-detection.txt t/devscripts/dual.c t/devscripts/false-positives t/devscripts/gpl-2 t/devscripts/info-at-eof.h t/devscripts/multi-line-copyright.c t/devscripts/texinfo.tex t/encoding/README.gs550j t/encoding/copr-iso8859.h t/encoding/copr-utf8.h t/exception/Bison/grammar.cxx t/exception/Cecill/tv_implementpoly.reference t/grant/Apache/one_helper.rb t/lib/Test2/Require/WorkingUtf8.pm t/reading.t META.json000644001750001750 556714451001241 16127 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9{ "abstract" : "simple license checker for source files", "author" : [ "Jonas Smedegaard (JONASS) " ], "dynamic_config" : 0, "generated_by" : "Dist::Inkt::Profile::TOBYINK version 0.024, CPAN::Meta::Converter version 2.150010", "keywords" : [ "Licensing", "Sourcecode" ], "license" : [ "agpl_3" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "App-Licensecheck", "no_index" : { "directory" : [ "eg", "examples", "inc", "t", "xt" ] }, "optional_features" : {}, "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "6.17" } }, "runtime" : { "requires" : { "Encode" : "2.93", "Fcntl" : "0", "Feature::Compat::Class" : "0.04", "Feature::Compat::Try" : "0", "Getopt::Long" : "2.24", "IO::Interactive" : "0", "List::Util" : "1.45", "Log::Any" : "0", "Log::Any::Adapter::Screen" : "0", "Path::Iterator::Rule" : "0", "Path::Tiny" : "0.062", "Pod::Constants" : "0", "Pod::Usage" : "1.60", "String::Copyright" : "0.003", "String::Escape" : "0", "String::License" : "0", "autodie" : "0", "namespace::clean" : "0", "perl" : "5.012000" } }, "test" : { "recommends" : { "Regexp::Pattern::License" : "v3.9.0", "String::Copyright" : "0.003009" }, "requires" : { "Encode" : "0", "Encode::Locale" : "0", "Test2::Tools::Command" : "0", "Test2::V0" : "0.000060", "Test::Without::Module" : "0" } } }, "provides" : { "App::Licensecheck" : { "file" : "lib/App/Licensecheck.pm", "version" : "v3.3.9" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=licensecheck" }, "homepage" : "https://metacpan.org/pod/App::Licensecheck", "license" : [ "http://www.gnu.org/licenses/agpl-3.0.txt" ], "repository" : { "type" : "git", "web" : "https://salsa.debian.org/build-common-team/licensecheck.git" }, "x_identifier" : "http://purl.org/NET/cpan-uri/dist/App-Licensecheck/project" }, "version" : "v3.3.9", "x_contributors" : [ "Paul Wise " ], "x_help_wanted" : [ "documenter", "tester" ], "x_provides_scripts" : { "licensecheck" : { "file" : "bin/licensecheck" } }, "x_serialization_backend" : "JSON::PP version 4.07" } META.yml000644001750001750 336614451001241 15752 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9--- abstract: 'simple license checker for source files' author: - 'Jonas Smedegaard (JONASS) ' build_requires: Encode: '0' Encode::Locale: '0' Test2::Tools::Command: '0' Test2::V0: '0.000060' Test::Without::Module: '0' configure_requires: ExtUtils::MakeMaker: '6.17' dynamic_config: 0 generated_by: 'Dist::Inkt::Profile::TOBYINK version 0.024, CPAN::Meta::Converter version 2.150010' keywords: - Licensing - Sourcecode license: open_source meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: App-Licensecheck no_index: directory: - eg - examples - inc - t - xt optional_features: {} provides: App::Licensecheck: file: lib/App/Licensecheck.pm version: v3.3.9 requires: Encode: '2.93' Fcntl: '0' Feature::Compat::Class: '0.04' Feature::Compat::Try: '0' Getopt::Long: '2.24' IO::Interactive: '0' List::Util: '1.45' Log::Any: '0' Log::Any::Adapter::Screen: '0' Path::Iterator::Rule: '0' Path::Tiny: '0.062' Pod::Constants: '0' Pod::Usage: '1.60' String::Copyright: '0.003' String::Escape: '0' String::License: '0' autodie: '0' namespace::clean: '0' perl: '5.012000' resources: Identifier: http://purl.org/NET/cpan-uri/dist/App-Licensecheck/project bugtracker: https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=licensecheck homepage: https://metacpan.org/pod/App::Licensecheck license: http://www.gnu.org/licenses/agpl-3.0.txt repository: https://salsa.debian.org/build-common-team/licensecheck.git version: v3.3.9 x_contributors: - 'Paul Wise ' x_help_wanted: - documenter - tester x_provides_scripts: licensecheck: file: bin/licensecheck x_serialization_backend: 'CPAN::Meta::YAML version 0.018' Makefile.PL000644001750001750 1443014451001241 16465 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9use strict; use ExtUtils::MakeMaker 6.17; my $EUMM = eval( $ExtUtils::MakeMaker::VERSION ); my $meta = { "abstract" => "simple license checker for source files", "author" => ["Jonas Smedegaard (JONASS) "], "dynamic_config" => 0, "generated_by" => "Dist::Inkt::Profile::TOBYINK version 0.024, CPAN::Meta::Converter version 2.150010", "keywords" => ["Licensing", "Sourcecode"], "license" => ["agpl_3"], "meta-spec" => { url => "http://search.cpan.org/perldoc?CPAN::Meta::Spec", version => 2, }, "name" => "App-Licensecheck", "no_index" => { directory => ["eg", "examples", "inc", "t", "xt"] }, "prereqs" => { configure => { requires => { "ExtUtils::MakeMaker" => 6.17 } }, runtime => { requires => { "autodie" => 0, "Encode" => 2.93, "Fcntl" => 0, "Feature::Compat::Class" => 0.04, "Feature::Compat::Try" => 0, "Getopt::Long" => 2.24, "IO::Interactive" => 0, "List::Util" => 1.45, "Log::Any" => 0, "Log::Any::Adapter::Screen" => 0, "namespace::clean" => 0, "Path::Iterator::Rule" => 0, "Path::Tiny" => 0.062, "perl" => "5.012000", "Pod::Constants" => 0, "Pod::Usage" => "1.60", "String::Copyright" => 0.003, "String::Escape" => 0, "String::License" => 0, }, }, test => { recommends => { "Regexp::Pattern::License" => "v3.9.0", "String::Copyright" => 0.003009, }, requires => { "Encode" => 0, "Encode::Locale" => 0, "Test2::Tools::Command" => 0, "Test2::V0" => "0.000060", "Test::Without::Module" => 0, }, }, }, "provides" => { "App::Licensecheck" => { file => "lib/App/Licensecheck.pm", version => "v3.3.9" }, }, "release_status" => "stable", "resources" => { bugtracker => { web => "https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=licensecheck", }, homepage => "https://metacpan.org/pod/App::Licensecheck", license => ["http://www.gnu.org/licenses/agpl-3.0.txt"], repository => { type => "git", web => "https://salsa.debian.org/build-common-team/licensecheck.git", }, x_identifier => "http://purl.org/NET/cpan-uri/dist/App-Licensecheck/project", }, "version" => "v3.3.9", "x_contributors" => ["Paul Wise "], "x_help_wanted" => ["documenter", "tester"], "x_provides_scripts" => { licensecheck => { file => "bin/licensecheck" } }, }; my %dynamic_config; my %WriteMakefileArgs = ( ABSTRACT => $meta->{abstract}, AUTHOR => ($EUMM >= 6.5702 ? $meta->{author} : $meta->{author}[0]), DISTNAME => $meta->{name}, VERSION => $meta->{version}, EXE_FILES => [ map $_->{file}, values %{ $meta->{x_provides_scripts} || {} } ], NAME => do { my $n = $meta->{name}; $n =~ s/-/::/g; $n }, test => { TESTS => "t/*.t" }, %dynamic_config, ); $WriteMakefileArgs{LICENSE} = $meta->{license}[0] if $EUMM >= 6.3001; sub deps { my %r; for my $stage (@_) { for my $dep (keys %{$meta->{prereqs}{$stage}{requires}}) { next if $dep eq 'perl'; my $ver = $meta->{prereqs}{$stage}{requires}{$dep}; $r{$dep} = $ver if !exists($r{$dep}) || $ver >= $r{$dep}; } } \%r; } my ($build_requires, $configure_requires, $runtime_requires, $test_requires); if ($EUMM >= 6.6303) { $WriteMakefileArgs{BUILD_REQUIRES} ||= deps('build'); $WriteMakefileArgs{CONFIGURE_REQUIRES} ||= deps('configure'); $WriteMakefileArgs{TEST_REQUIRES} ||= deps('test'); $WriteMakefileArgs{PREREQ_PM} ||= deps('runtime'); } elsif ($EUMM >= 6.5503) { $WriteMakefileArgs{BUILD_REQUIRES} ||= deps('build', 'test'); $WriteMakefileArgs{CONFIGURE_REQUIRES} ||= deps('configure'); $WriteMakefileArgs{PREREQ_PM} ||= deps('runtime'); } elsif ($EUMM >= 6.52) { $WriteMakefileArgs{CONFIGURE_REQUIRES} ||= deps('configure'); $WriteMakefileArgs{PREREQ_PM} ||= deps('runtime', 'build', 'test'); } else { $WriteMakefileArgs{PREREQ_PM} ||= deps('configure', 'build', 'test', 'runtime'); } { my ($minperl) = reverse sort( grep defined && /^[0-9]+(\.[0-9]+)?$/, map $meta->{prereqs}{$_}{requires}{perl}, qw( configure build runtime ) ); if (defined($minperl)) { die "Installing $meta->{name} requires Perl >= $minperl" unless $] >= $minperl; $WriteMakefileArgs{MIN_PERL_VERSION} ||= $minperl if $EUMM >= 6.48; } } my $mm = WriteMakefile(%WriteMakefileArgs); exit(0); README000644001750001750 355014451001241 15354 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9NAME App::Licensecheck - functions for a simple license checker for source files VERSION Version v3.3.9 SYNOPSIS use Path::Tiny; use App::Licensecheck; my $tempfile = Path::Tiny->tempfile; $tempfile->spew(<new( top_lines => 0 ); # Parse whole files my @output = $app->parse($tempfile); my $license = $output[0]; # => is "GPL-2.0-or-later" my $copyrights = $output[1]; # => is "2020, 2022 Foo Bar." DESCRIPTION App::Licensecheck is the core of licensecheck script to check for licenses of source files. See the script for casual usage. AUTHOR Jonas Smedegaard `` COPYRIGHT AND LICENSE This program is based on the script "licensecheck" from the KDE SDK, originally introduced by Stefan Westerfeld ``. Copyright © 2007, 2008 Adam D. Barratt Copyright © 2012 Francesco Poli Copyright © 2016-2022 Jonas Smedegaard Copyright © 2017-2022 Purism SPC This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . SIGNATURE000644001750001750 1173714451001241 16006 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9This file contains message digests of all files listed in MANIFEST, signed via the Module::Signature module, version 0.88. To verify the content in this distribution, first make sure you have Module::Signature installed, then type: % cpansign -v It will check each file's integrity, as well as the signature's validity. If "==> Signature verified OK! <==" is not displayed, the distribution may already have been compromised, and you should not run its Makefile.PL or Build.PL. -----BEGIN PGP SIGNED MESSAGE----- Hash: RIPEMD160 SHA256 621dfa5bb62c5c635adf8863fe1456d122965053b87f535aaf1b820369cff41d COPYRIGHT SHA256 d32a522b9acbcf7b8a767c036037f59acc6b39707ed45c18c08aa8fa5a862aaf CREDITS SHA256 a74a52a57599a73627bdc82db3b162fc857cf75f6fa0a7cbdd35aae86caea4ae Changes SHA256 070f5b198b023542dcb61f1a543c3ee34a96975bad7e7a6801bc5fd9da3629a1 INSTALL SHA256 06103c9f740acb03155bcfe8aa84a5af95189aeb908988e32189de8a1beebefe LICENSE SHA256 69a4102d042955e4f60f5a90aa07b73a74790374f1cf9bf269770184b9e50344 MANIFEST SHA256 4cce57d48f9bc8ef48cb5de75fe84a2182c6bf2c6c3b61f1225da2f709ebff96 META.json SHA256 0872661ba34415e8de4349651ad4c95522f3ef1ddfb5a400809f3f85efcf8845 META.yml SHA256 62cbb09a819b5dcc187295ddd323d23bc75b7a4914189184e9b65f1f86de4f60 Makefile.PL SHA256 28f3c4f16309d643fd8f07cbec00665560343d8fb7ffc529466a715d6e4e2caf README SHA256 13e853567aece12cfeab2a9982d372b2acc7178046694fa606cf11650ae252f3 TODO.md SHA256 20507db6ffc825f13632232693c7953e05c6ccaa0b26086a9142e0078ee410c6 bin/licensecheck SHA256 86cb3dbf6dcff465e029d13811e6140474aec38a6a320fc27b74a6d02ca9c39f dist.ini SHA256 da1ad89732a32871151a2d868f10f0cda8cbaafb1700f98f61b938926a94cc30 doap.ttl SHA256 76322567d6981c540b7fcae4dc6a49622ced4ce0717b64745db24acd1d3c2242 lib/App/Licensecheck.pm SHA256 30f03156ffcf1963d4b639226f7bfcea94176a62fdeb4f6ed8bd7f38937c2d81 scripts/licensecheck.bash_completion SHA256 f2b0ba8e0ab476ec986b8e3f37661aacaacd52370ee3d2416c6d605c2e073aa6 t/20-script-encoding.t SHA256 0d4531ab0f2b5742f0a7591f46a3d3bf43cf32ec799fae7c946a30a87f1dd541 t/20-script-report.t SHA256 a455fafaa394d2f0a22fcd9feca6ca526ede2ef7f8aafc69742077f8f0f4cb23 t/20-script-resolve.t SHA256 2a8975062ca09eae0c563b61b8fe1ea9aa7e90afaf5a90a4b8c96e8ec90a296a t/devscripts.t SHA256 f1808922a4d90ed8defa5dcf13c9d8c565b42e28293c4f0f773fb647a5dff294 t/devscripts/artistic-2-0-modules.pm SHA256 6217fe33f92141894b599b7950ddb7263d339588124456143779ba15bc4cc26e t/devscripts/beerware.cpp SHA256 4b95c6acd85c8cf40119d4c8fcad2fade49af645d377588d802d44f4b87f16e2 t/devscripts/bsd-regents.c SHA256 229ee416e6d45e7c8042c91eb2a960e400eeb639ef478c4a4856164dc678ae60 t/devscripts/bsd.f SHA256 aeafd8228d645090c02e4d527052772160042c017e5a41fffd445acee9dc4694 t/devscripts/comments-detection.h SHA256 55a8598eec9f823f1b384dc322e1d1c622d777f6d5ac030acfcd31812ece0c3c t/devscripts/comments-detection.txt SHA256 4db2760e33121654f7c06af314134af3c2c3f8b7691802a30619507f18b48af8 t/devscripts/dual.c SHA256 8922576ece4f295969eef9911ed4836b0725111ce4b4eb9b792591d742343311 t/devscripts/false-positives SHA256 0f9dfc1cafa069f652c0765b3dc9af6ff2a82aa8f33cb52f200fc45e305d1db9 t/devscripts/gpl-2 SHA256 fb7d9f822a42709fb96e6ab865007d617a757438b4762186bb66a64e3e2eef99 t/devscripts/info-at-eof.h SHA256 3a6fd41b4057a294bb7a4880d1b2b2f87076720cfc893b97230c9ffc7871d95b t/devscripts/multi-line-copyright.c SHA256 596f8bed4486bd4e0b5f2b78ba10a7046d34ad5f8d4e2cf4dbe26f4e707aa4cd t/devscripts/texinfo.tex SHA256 40191c8d4d426d75dfa2f8780acde631caeed55364646746f1190e7c6da14cab t/encoding/README.gs550j SHA256 8f4be040354c7bb933a5180a5fb77dd8cecf1f27b30d7a38312f7ee1530f77e0 t/encoding/copr-iso8859.h SHA256 2c1f19e87468eacc04e2050acaf433cd9e81749f5ec195e4bcc576cf1b386aec t/encoding/copr-utf8.h SHA256 633848079e95abc05bd51afb65f1ec6408f3af77fe1ddb13d33174a5330874bb t/exception/Bison/grammar.cxx SHA256 3239203acc5feaecf1f43082377f0fa5f6b866aca9fb80db1c36c799455d9fca t/exception/Cecill/tv_implementpoly.reference SHA256 da786ff08c57bf966553ce3e0fe5a681c9df5c6b09215b69e2cb02cafece2732 t/grant/Apache/one_helper.rb SHA256 7eb1e52664382bab8b3ff25b9710d0b0af91d9952c7b8e6d5bb95d47ab3a7980 t/lib/Test2/Require/WorkingUtf8.pm SHA256 4f48676cde5ea352c7c3415ea7419f7d3a1b2f8ba4309b365a3352547f431cf7 t/reading.t -----BEGIN PGP SIGNATURE----- iQIzBAEBAwAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAmSkAp0ACgkQLHwxRsGg ASHehA//cArAVhy9Pu4FNDK98jLNT6HvLE7vB629D6gnPSjYpI3ZJOWBwymd3p8Q bMyvGcgfXF1yz75vQ/+28s3eiS+I/94EEPUFPE5WAz+yA0eMtMbWn7je/MBqnaWa SaTv4kLlRDMr8UI70k0NFS0sZX8MJkd3uxzmqScvP95EpwtELZx85M5Fq7shJ3L3 Oo4Z8lDwdd81ImRcpRPKsRj8KRePJyNd7gD3kPq6NIKoDZxRnrpaMNkka2a3eR1G PDpHZ9B8eRHy591BwJ2XcPdmAxhiU/s4eJ/5FYLHAbpDENN0/neWLjrmcs0pn2No NfMP0rpKkaKnjnNC4jnMLVjOfPOQXdIODrLzom4+UvQBX9BXaFmEPnY5IrjZpKoI AKE7ar3x2Ae34FAsA2Qe8cGvaLVaH9sppJeLEuIFPe2jXagpccwzUff2aParfIkS /YruqdWRgoSeNSN7uicQHFCAIjf71yrQrCPTS1ncWcQmfnI4TzA32rw/AO//dc7J u58h0zwGzoiGCql1hssoG91UMW2Vt+6wp/mlRbPHftXumh+NqbWvEMIjvtsSWL3q LgSo27xziXEH9om/99GVYNwRBf98frpVePADCg02cklp/BY7T6mFmj6zvbtjEWQD i1MGKVgHJCEzZCfaPDAm0LSZoIrOIaac0P/UVrHec/+m3BY2YJ0= =RMMu -----END PGP SIGNATURE----- TODO.md000644001750001750 2361014451001241 15602 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9# pending tasks and loose ideas ## flexible patterns * add option to generate either minimal or maximal pattern * minimal: shortest coverage decisive of one or more objects. * distinct: shortest coverage to disambiguate from unrelated objects and objects it depends on, and large enough for dependent objects to disambiguate from it. * successive: minimal or distinct + surplus up until next ambiguation point * maximal: full coverage ## file regimes Allow setting options only for a subset of processed files - a "regime" of files. E.g. a subproject (all files below some dir) or scattered by pattern (like "autotools files except below foo/"). * introduce setting regime * parse option --licensecheck-regime * parse environment variable LICENSECHECK_REGIME * parse environment variable LICENSECHECK_DEFAULTS ## git integration * Maybe implement all this as a git module? ## environment defaults * implement environment variable LICENSECHECK_DEFAULTS ## scripts * implement licensefind * parse options and arguments like GNU find (or busybox find?) * fail on any option supported by find but unsupported here * parse new options --licensecheck-* and setting=value pairs in env vars LICENSECHECK LICENSECHECK_FIND * by default output filenames (i.e. all with any license by default) * implement licensegrep * parse options and arguments like grep (or busybox/git grep?) * fail on any option supported by diff but unsupported here * parse new options --licensecheck-* and setting=value pairs in env vars LICENSECHECK LICENSECHECK_GREP * parse settings from env variables LICENSECHECK LICENSECHECK_GREP (treated as fallback for --licensecheck-* options without prefix) * by default output verbatim text, with filename prefixed if multiple * maybe implement licensegreple * like licensegrep, but with syntax matching greple * implement licensediff * parse options and arguments like diff (or git diff?) * fail on any option supported by diff but unsupported here * parse new options --licensecheck-* and setting=value pairs in env vars LICENSECHECK LICENSECHECK_DIFF * by default output unified diff * if file B omitted, compute from file A (with minimal changes by default, or optionally optimized) * implement licensesort * parse options and arguments like sort * fail on any option supported by sort but unsupported here * parse new options --licensecheck-* and setting=value pairs in env vars LICENSECHECK LICENSECHECK_DIFF + file1-format - debian spdx (default: guess from passed file1) + paths-debian - with format=debian try debian/copyright:copyright) + merge-copyright-years + merge-copyright-holders + merge-license-expressions + merge-license-parts + sort-copyright-years + sort-copyright-holders + sort-copyright-sections + sort-license-expressions + sort-license-parts + sort-license-sections * if file B omitted, compute from file A + licensegrep * if file A omitted, try default file for used format, or fail (i.e. with format=debian try debian/copyright:copyright) ## relaxed copyright reporting * support omitting copyright holders when permited by license ## media-type handling * Implement media-type handling: * --accept comma-separated list of media ranges to process default: */* set to "text/*" to skip binary files, or set to "application/postscript;q=0.2;mbx=1024, text/*" to process plaintext and small Postscript files takes a string of same syntax as value part of HTTP Accept Header (see ) * map MIME types to comment styles * Regexp::Common::comment * Padre::Comment * Syntax::Highlight::Engine::Kate * licenseutils * maybe use HTTP::Negotiate to resolve decoders and parsers to apply ## decode by media-type * Implement decoding options: * --decode-html regular expression for paths to parse as html. Pass empty regexp to only enable support (see --decode-magic). * --decode-xml regular expression for paths to parse as xml. Pass empty regexp to only enable support (see --decode-magic). * test detection of both metadata and comments e.g. in Darktable 3.6.0 appdata in-file * --decode-svg regular expression for paths to parse as svg. Pass empty regexp to only enable support (see --decode-magic). * test detection of both RDF metadata and comments * --decode-exif regular expression for paths to extract EXIF and other metadata from (see exiftool and Image::ExifTool). Pass empty regexp to only enable support (see --decode-magic). * --decode-skip regular expression for paths to read as-is. * --decode-magic Determine needed decoding using libmagic. If needed decoding method is not enabled, then that file is skipped. (see File::LibMagic). * --decode-auto enable all --decode-* options for common file extensions. * Optionally (i.e. if available) consult File::Extension on failure * Move detection code to separate module(s). * Maybe extend Software::License. ## option parsing * Fail when passed unknown options ## file selection * Implement search options: * --traversal-type Algorithm used to walk directories passed as arguments. * Values: one any * Default: one * --match-type Algorithm used for --include and --exclude options. * Values: regex glob_deb * Default: regex ## strictness modes * Implement strictness options: * --strict implies... * --machine (or --machine-deb if enabled) * --strict-select - which implies... * --include .* * --include * --match-type glob_deb * (does not affect --include which is instead tied to --context) * --traversal-type any * --fast implies... * --exclude-common * --decode-none * script applies --strict and --fast in order * library treats --strict and --fast as incompatible ## alternative scanner backends * implement option --backend + ugrep Make sure to provide feedback as promised at above issue #35 * implement option --auto-backend - use ugrep when equivalent to perl (e.g. together with some option --no-strict-matching) ## misc * Implement extensibility through YAML/JSON file Similar to license-reconsile, but adding/overriding DefHash objects: * http://git.hands.com/?p=freeswitch.git;a=blob;f=debian/license-reconcile.yml;h=0e40cba01eeb67f82d18ca8f11210271848d0549;hb=refs/heads/copyright2 * https://lists.debian.org/87efl0kvzu.fsf@hands.com * Implement smarter processing: * Optionally spawn "workers" for a boost on multi-core systems, e.g. using Parallel::ForkManager * Gather statistics on files processed and objects detected, and emit progress during long-running scans, e.g. using Progress::Any or Time::Progress (see SeeAlso of Time::Progress). * Inspect RDF content * Check for cc:morePermissions and try decode surrounding RDF data. ## See also * Compare against competitors + ripper + https://salsa.debian.org/stuart/package-license-checker + r-base /share/licenses/license.db + license-reconcile + https://wiki.debian.org/CopyrightReviewTools + https://docs.clearlydefined.io/clearly#licensed + http://copyfree.org/standard/licenses + https://wiki.debian.org/DFSGLicenses + http://voag.linkedmodel.org/2.0/doc/2015/REFDATA_voag-licenses-v2.0.html + https://github.com/hierynomus/license-gradle-plugin + ruby-licensee - http://ben.balter.com/licensee/ + flict - https://github.com/vinland-technology/flict ## misc * Warn about licensing conflicts + See %license_conflicts in tool adequate * Sort Files sections to list common over exotic: + prefix of leftmost truncate wildcard (*) + suffix of leftmost truncate wildcard (*) + filecount when containing character wildcard (?) + filecount + License-shortnames + License-Grant + License inlined + Copyright + Filenames * Test against challenging projects + ghostpdl + chromium + fpc + lazarus + boost + picolibc * Maybe use libdata-binary-perl * Maybe use String::Tagged (or else perhaps Text::Locus) to track (and emit in verbose/debug mode) where patterns are detected? * Quality flagging + ambiguous: license ref pointing to multiple license fulltexts (e.g. "MIT" or "GNU" or "GPL" + unlicensed: copyright holder(s) but no licensing + ungranted: license fullref requiring explicit grant, but no corresponding license grant + incomplete: fractions of license fullref, but no complete fullref + alien: license label but no license name + unowned: license but no copyright holder + uncertain: license ref and more unknown text in same sentence/paragraph/section + buried: license or copyright not at top of file + unstructured: license/copyright not at ideal place of data structure (e.g. in commend field of EXIF data, or in content or comment of html) + unaligned: license/copyright out of sync between layers of structure (e.g. ICC data and EXIF data of PNG, or content and metadata of PDF/HTML) + imperfect: license ref not following format documented in license fulltext + conflict: incompatible licenses (e.g. GPL-3+ and GPL-2-only, or OpenSSL and GPL) * use nano-style configurable wordchars/punct/brackets/matchbrackets chars and quotestr regex e.g. to determine sentences (see "paragraphs" and "justify" in "man nanorc") dist.ini000644001750001750 35414451001241 16117 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9; Configuration file for App::Licensecheck ; ; TODO: Enable whitespace test when t/devscripts can be avoided ; ;; class = 'Dist::Inkt::Profile::TOBYINK' ;; name = 'App-Licensecheck' ;; skip_whitespace_test = 1 ;; skip_kwalitee_test = 1 doap.ttl000644001750001750 45644214451001241 16220 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9@prefix cpan-uri: . @prefix dc: . @prefix doap: . @prefix doap-bugs: . @prefix doap-changeset: . @prefix doap-deps: . @prefix dt: . @prefix foaf: . @prefix rdfs: . @prefix xsd: . a doap:Version; dc:issued "2007-10-28"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Better detect 3-clause BSD licenses."@en; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Detect ISC style licenses."@en; doap-changeset:blame ; doap-changeset:fixes ; ], "Allow ISC and BSD licenses to co-exist in a single file."^^dt:Change, "Always check a single file argument even if it doesn't match the file pattern regex."^^dt:Bugfix; ]; doap-changeset:released-by ; doap:revision "2.10.10"^^xsd:string. a doap:Version; dc:issued "2008-02-27"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Detect a less common form of MIT license."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.17"^^xsd:string. a doap:Version; dc:issued "2008-02-29"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Add missing $license and change spaces into tab in the middle."^^dt:Change, "Detect a less common form of GPL."^^dt:Change, "Fix broken elsif indentation."^^dt:Bugfix, "Fix detect GPL of unknown version."^^dt:Bugfix, "Fix indentation."^^dt:Change, "Layout and regex tweaks."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.18"^^xsd:string. a doap:Version; dc:issued "2008-04-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Replace a literal copyright symbol with a hex escape so that the package builds using po4a in Etch."@en; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.26"^^xsd:string. a doap:Version; dc:issued "2008-05-03"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Correctly detect LGPLv3+."@en; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.27"^^xsd:string. a doap:Version; dc:issued "2008-06-16"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Addition; rdfs:label "Detect if copyright statements are valid."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Detect more forms of copyright statement."; doap-changeset:blame ; doap-changeset:fixes ; ], "Update copyright."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.30"^^xsd:string. a doap:Version; dc:issued "2008-06-28"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Check .cxx and .hxx by default."@en; doap-changeset:fixes ; ], "Exclude _MTN (monotone) by default."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.31"^^xsd:string. a doap:Version; dc:issued "2008-10-12"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Parse Fortran and Scilab files and check them by default, and detect CeCILL and \"SGI Free B\" licenses."@en; doap-changeset:blame ; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.39"^^xsd:string. a doap:Version; dc:issued "2007-04-16"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Make licensecheck configurable."^^dt:Addition; ]; doap-changeset:released-by ; doap:revision "2.10.3"^^xsd:string. a doap:Version; dc:issued "2008-11-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Detect a couple more variants on the wording of a 3-clause BSD license."@en; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.40"^^xsd:string. a doap:Version; dc:issued "2009-01-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Check .cs (C# source files) by default."@en; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Detect the CDDL license. Thanks to Mike Hommey."@en; doap-changeset:blame ; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.44"^^xsd:string. a doap:Version; dc:issued "2009-02-12"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Check .xs (Perl XS files) and .vala (GNOME Vala source files) by default."@en; doap-changeset:fixes , ; ], [ a doap-changeset:Change; rdfs:label "Identify yet another variant of GPL wording."@en; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Detect Boost, Python and zlib/libpng licenses."@en; doap-changeset:blame ; doap-changeset:fixes ; ], "Fix check .h files by default."^^dt:Bugfix, "Identify another form of GPL wording."^^dt:Change, "Remove C /* */ comments. Thanks to Jörg Sommer."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.46"^^xsd:string. a doap:Version; dc:issued "2009-03-04"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Fix an uninitialised variable warning when --no-conf is used."@en; doap-changeset:blame ; doap-changeset:fixes ; ], "Document --no-conf."^^dt:Documentation; ]; doap-changeset:released-by ; doap:revision "2.10.47"^^xsd:string. a doap:Version; dc:issued "2009-05-02"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Detect AGPL."@en; doap-changeset:blame ; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.49"^^xsd:string. a doap:Version; dc:issued "2009-06-15"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Fix failures parsing some GPL headers."@en; ; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.51"^^xsd:string. a doap:Version; dc:issued "2009-07-29"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Skip empty files instead of reporting that they have no copyright."@en; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.53"^^xsd:string. a doap:Version; dc:issued "2009-09-11"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Add missing blank line in POD. Thanks to Nicolas Francois."^^dt:Documentation; ]; doap-changeset:released-by ; doap:revision "2.10.55"^^xsd:string. a doap:Version; dc:issued "2007-04-16"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Improve attribution of the original script."^^dt:Documentation, "Quote @kde otherwise build fails."^^dt:Bugfix; ]; doap-changeset:released-by ; doap:revision "2.10.5"^^xsd:string. a doap:Version; dc:issued "2010-01-02"^^xsd:date; doap-changeset:changeset [ rdfs:label "Welcome to the New Year"; doap-changeset:item "Detect some common variants of the WTFPL."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.60"^^xsd:string. a doap:Version; dc:issued "2010-08-02"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Check .pas, .inc, .dtd., .xsl, and .mod files by default."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.66"^^xsd:string. a doap:Version; dc:issued "2010-09-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Replace occurences of old FSF address with the FSF recommendation what should be written inside of source files."@en; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.69"^^xsd:string. a doap:Version; dc:issued "2011-02-09"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Manual pages conventions."^^dt:Documentation; ]; doap-changeset:released-by ; doap:revision "2.10.70"^^xsd:string. a doap:Version; dc:issued "2011-04-15"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Partial manual pages convention review."^^dt:Documentation, "Remove \"(the License)\" from check for Apache license."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.72"^^xsd:string. a doap:Version; dc:issued "2007-08-10"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Add --recursive to help."^^dt:Change, "Add -r as an alternative for --recursive."^^dt:Change, "Optionally detect copyright statements."^^dt:Addition, "Support directories as well as files passed as arguments."^^dt:Addition, "Support ignoring files and directories (default regex borrowed from dpkg-source)."^^dt:Addition, "Support recursion into directories."^^dt:Addition, "Support setting files to check."^^dt:Addition, "Tidy up copyright output."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.7"^^xsd:string. a doap:Version; dc:issued "2007-09-11"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Correctly handle metacharacters found in potential copyright statements."^^dt:Change, "Decruft // comments."^^dt:Change, "Decruft © as well as (C)."^^dt:Change, "Deduplicate copyright statements varying only in case."^^dt:Change, "Make the copyright regex more flexible."^^dt:Change, "Tidy up the pre-check regexes."^^dt:Change, "Unescape \"\\@\"s in copyright statements."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.10.8"^^xsd:string. a doap:Version; dc:issued "2007-10-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Attempt to distinguish between versions of the BSD license."@en; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.10.9"^^xsd:string. a doap:Version; dc:issued "2011-05-11"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Remove EOL whitespaces."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.11.0"^^xsd:string. a doap:Version; dc:issued "2011-11-16"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Detect Microsoft Permissive License (Ms-PL)."^^dt:Change, "Detect another variant of libpng license."^^dt:Change, "Detect more types of generated files."^^dt:Change, "Detect more variations of MIT licenses."^^dt:Change, "Detect more variations of MIT/X11 license."^^dt:Change, "Remove the word \"of\" from the BSD 3 clause check."^^dt:Change, "Update scripts to use GNU getopt-compatible option parsing."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.11.2"^^xsd:string. a doap:Version; dc:issued "2012-01-10"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Detect GPL version in notices without \"of the License\"."^^dt:Change, "Fix version output for GPL notices without \"as published by\"."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.11.3"^^xsd:string. a doap:Version; dc:issued "2012-05-31"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Add first tests for licensecheck."^^dt:Addition, "Chech .m (Octave/Matlab), .tex (LaTeX), and .pyx (Python's pyrex) by default."^^dt:Change, "Detect Beerware license."^^dt:Change, "Detect LGPL more robustly."^^dt:Change, "test: Move runCommand to helper function file."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.11.8"^^xsd:string. a doap:Version; dc:issued "2012-08-26"^^xsd:date; doap-changeset:changeset [ doap-changeset:item ".1: Consistency fix."^^dt:Documentation, "Check .ml, .mli (OCaml programs) by default."^^dt:Change, "Don't truncate other licenses on Public domain or WTFPL presence."^^dt:Bugfix, "Remove trailing spaces."^^dt:Change, "Replace tab by spaces in help message."^^dt:Documentation, "Spelling fixes."^^dt:Documentation, "Trim trailing comma from some GPL notices' versions."^^dt:Change, "Trim trailing period from some GPL notices' versions."^^dt:Change, "add --machine option that outputs results in a machine readable format."^^dt:Addition; ]; doap-changeset:released-by ; doap:revision "2.12.2"^^xsd:string. a doap:Version; dc:issued "2012-09-25"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Detect MPL v2.0."^^dt:Change, "Parse (fixed-form) Fortran code."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.12.4"^^xsd:string. a doap:Version; dc:issued "2012-10-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Adapt code to some perl best practice."^^dt:Change, "Add comment removal test cases."^^dt:Change, "Add more GPL test cases."^^dt:Change, "Fix detect BSD-3-clause."^^dt:Change, "Fix detect GPL license version."^^dt:Change, "GetOptions is done right."^^dt:Change, "comments cleaning to dedicated function code to remove any regular comments pattern."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.12.5"^^xsd:string. a doap:Version; dc:issued "2013-02-18"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Add autopkgtest."^^dt:Packaging, "Detect (L)GPL licenses more permissively."^^dt:Change, "Fix --check and --ignore options."^^dt:Bugfix, "Fix typos, changed the order in SEE ALSO, added punctuation marks."^^dt:Documentation, "Simplify LGPL pattern (already case-insensitive)."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.13.0"^^xsd:string. a doap:Version; dc:issued "2013-03-22"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Fix clean_comments()."^^dt:Change, "Fix detect (L|A)GPL."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.13.1"^^xsd:string. a doap:Version; dc:issued "2013-05-13"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Fix invalid regular expression syntax."^^dt:Bugfix, "Regex-escape file contents that are used as part of a pattern."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.13.2"^^xsd:string. a doap:Version; dc:issued "2013-08-16"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Check .go (Go) files by default."@en; doap-changeset:fixes ; ], "Allow plural: copyright notices."^^dt:Change, "Alternative BSD-3 wording \"authors\" and \"_any_ contributors\"."^^dt:Change, "Bogus recognition \"copyright holders\"."^^dt:Change, "Check Haskell files by default."^^dt:Change, "Detect more relaxed 3rd BSD clause."^^dt:Change, "Fix several false positives."^^dt:Change, "Handle differing lengths of comment leaders."^^dt:Change, "Ignore \"copyright holders\"."^^dt:Change, "Test copyright notice from freeswitch/libs/tiff-4.0.2."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.13.3"^^xsd:string. a doap:Version; dc:issued "2013-12-07"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Fix various (potential) test failures."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.13.5"^^xsd:string. a doap:Version; dc:issued "2014-01-25"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Add handling for a variation of 3 clause BSD."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.14.0"^^xsd:string. a doap:Version; dc:issued "2015-12-04"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Update URLs in comments to https where possible."^^dt:Documentation; ]; doap-changeset:released-by ; doap:revision "2.14.11"^^xsd:string. a doap:Version; dc:issued "2014-09-26"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Check javascript by default."@en; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.14.7"^^xsd:string. a doap:Version; dc:issued "2015-12-31"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Stop use \"file\" command MIME info to decide which files to check (use only internal list of file extensions by default)."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Removal; rdfs:label "Deprecate --text option."; doap-changeset:blame ; ], [ a doap-changeset:Addition; rdfs:label "Add --encoding option. By default, input files are handled as utf-8 and information is printed on STDOUT as utf-8."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Detect freetype license."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Parse multi-line copyright block."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Detect 'and or' as well as 'and/or' in GPL licenses."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Addition; rdfs:label "Test for licensecheck versus Software::License."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Fix detect Artistic licenses as generated from Software::License."; doap-changeset:blame ; ], [ a doap-changeset:Addition; rdfs:label "Add bash completion."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Detect variations of Mozilla licenses."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Check lisp, css, less, perl6 and markdown by default."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Detect LLGPL license."; doap-changeset:blame ; ], [ a doap-changeset:Addition; rdfs:label "Extract info from end of file (not only beginning)."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Move skip test into script and do not rely on shell string comparison for comparing versions."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Restore old tests."; doap-changeset:blame ; ], [ a doap-changeset:Addition; rdfs:label "Show skipped file with --skipped."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Check files without suffix by default."; doap-changeset:blame ; ]; ]; doap-changeset:released-by ; doap:revision "2.15.10"^^xsd:string. a doap:Version; dc:issued "2015-01-01"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Detect GPL version 2 or 3 (different from GPL-2+)."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.15.1"^^xsd:string. a doap:Version; dc:issued "2015-04-03"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Ignore .pc directory."^^dt:Change, "Print copyrights in a non-random order."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.15.2"^^xsd:string. a doap:Version; dc:issued "2015-06-11"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Check file encoding and decode properly when reading file."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Improve GPL LGPL extraction."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Optimize regex used to extract © info."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Check Groovy, Scala and Clojure by default."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Fix detect discussion about ©."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect BSL."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Detect academic free license."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Allow © owner to mention \"and others\"."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Detect eclipse public license."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Detect LGPL as written by IBM."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Parse REM style comments."; doap-changeset:blame ; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.15.5"^^xsd:string. a doap:Version; dc:issued "2015-07-28"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Fix detect BSD-2-clause."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Extract © owner when © and owners are specified on 2 or more lines."; doap-changeset:blame ; ], [ a doap-changeset:Bugfix; rdfs:label "Fix digia © and license extraction."@en; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Change; rdfs:label "Check .S (assembly files) by default."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Warn if scanned file is not a text file."@en; doap-changeset:blame ; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.15.6"^^xsd:string. a doap:Version; dc:issued "2015-08-01"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:SecurityFix; rdfs:label "Use Dpkg::IPC to run file to avoid shell injection."; doap-changeset:fixes , ; ], [ a doap-changeset:Bugfix; rdfs:label "Change whitelist of mime types to greylist of encodings. Restores ability to check files with mime types like text/x-c++ and application/postscript."; doap-changeset:blame ; doap-changeset:fixes ; ], [ a doap-changeset:Bugfix; rdfs:label "Fix an endless loop in parsing certain files."; doap-changeset:blame ; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.15.7"^^xsd:string. a doap:Version; dc:issued "2015-08-02"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:SecurityFix; rdfs:label "Avoid argument injection which may cause file to overwrite a file through symlink indirection."; doap-changeset:fixes , ; ]; ]; doap-changeset:released-by ; doap:revision "2.15.8"^^xsd:string. a doap:Version; dc:issued "2015-10-06"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Filter scanned files by mime type."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Remove trailing '#' from copyright."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Store only first copyright block."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Remove '\\' from © information (for nroff files)."; doap-changeset:blame ; ], [ a doap-changeset:Addition; rdfs:label "Add --text option to avoid binaries."; doap-changeset:blame ; ]; ]; doap-changeset:released-by ; doap:revision "2.15.9"^^xsd:string. a doap:Version; dc:issued "2016-02-12"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Detect LGPL in files handled by Dist::Zilla."; doap-changeset:blame ; ]; ]; doap-changeset:released-by ; doap:revision "2.16.1"^^xsd:string. a doap:Version; dc:issued "2016-03-19"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Parse (c) owner with email like info@foo.com."; doap-changeset:blame ; ]; ]; doap-changeset:released-by ; doap:revision "2.16.2"^^xsd:string. a doap:Version; dc:issued "2016-04-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item "Detect files containing \"Do not hand edit!\" as generated."^^dt:Change, "Extract parse_file."^^dt:Change, "Fix test_licensecheck_SL failure."^^dt:Bugfix, "Gracefully handle wrong --encoding."^^dt:Bugfix, "Improve \"unable to access file\" error message."^^dt:Change; ]; doap-changeset:released-by ; doap:revision "2.16.3"^^xsd:string. a doap:Version; dc:issued "2016-06-04"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Bash completion: Normalise editor hints to preserve formatting."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Bash completion: Standardise explanatory header block."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Detect files containing \"do not modify\" as generated."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Detect files containing \"Generated data\" as generated."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Detect files containing \"edit the original\" as generated."; doap-changeset:blame ; ], [ a doap-changeset:Addition; rdfs:label "Add --deb-fmt option to use dep-5 license keywords. See #472199."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Parse \"copyright-holders: John Doe\"."; doap-changeset:blame ; ], [ a doap-changeset:Change; rdfs:label "Parse \"license: BSD-x-Clause\" declaration."; doap-changeset:blame ; doap-changeset:fixes ; ]; ]; doap-changeset:released-by ; doap:revision "2.16.5"^^xsd:string. doap:release , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . a doap:Project; cpan-uri:x_help_wanted , ; dc:contributor ; doap-deps:runtime-requirement [ doap-deps:on "autodie"^^doap-deps:CpanId ], [ doap-deps:on "Encode 2.93"^^doap-deps:CpanId ], [ doap-deps:on "Path::Tiny 0.062"^^doap-deps:CpanId ], [ doap-deps:on "Path::Iterator::Rule"^^doap-deps:CpanId; ], [ doap-deps:on "Pod::Constants"^^doap-deps:CpanId ], [ doap-deps:on "Pod::Usage 1.60"^^doap-deps:CpanId ], [ doap-deps:on "String::Copyright 0.003"^^doap-deps:CpanId; ], [ doap-deps:on "String::Escape"^^doap-deps:CpanId ], [ doap-deps:on "String::License"^^doap-deps:CpanId ], [ doap-deps:on "Feature::Compat::Try"^^doap-deps:CpanId; ], [ doap-deps:on "perl 5.012000"^^doap-deps:CpanId ], [ doap-deps:on "Fcntl"^^doap-deps:CpanId ], [ doap-deps:on "Feature::Compat::Class 0.04"^^doap-deps:CpanId; ], [ doap-deps:on "Getopt::Long 2.24"^^doap-deps:CpanId ], [ doap-deps:on "IO::Interactive"^^doap-deps:CpanId ], [ doap-deps:on "List::Util 1.45"^^doap-deps:CpanId ], [ doap-deps:on "Log::Any"^^doap-deps:CpanId ], [ doap-deps:on "Log::Any::Adapter::Screen"^^doap-deps:CpanId; ], [ doap-deps:on "namespace::clean"^^doap-deps:CpanId ]; doap-deps:test-recommendation [ doap-deps:on "Regexp::Pattern::License 3.9.0"^^doap-deps:CpanId; ], [ doap-deps:on "String::Copyright 0.003009"^^doap-deps:CpanId; ]; doap-deps:test-requirement [ doap-deps:on "Encode"^^doap-deps:CpanId ], [ doap-deps:on "Encode::Locale"^^doap-deps:CpanId ], [ doap-deps:on "Test::Without::Module"^^doap-deps:CpanId; ], [ doap-deps:on "Test2::V0 0.000060"^^doap-deps:CpanId ], [ doap-deps:on "Test2::Tools::Command"^^doap-deps:CpanId; ]; doap:bug-database , ; doap:category [ rdfs:label "Sourcecode" ], [ rdfs:label "Licensing" ]; doap:created "2000-01-28"^^xsd:date; doap:developer ; doap:download-page ; doap:homepage , ; doap:license ; doap:maintainer ; doap:name "App-Licensecheck"; doap:programming-language "Perl"; doap:release , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; doap:repository [ a doap:GitRepository; doap:browse ; ]; doap:shortdesc "simple license checker for source files". a doap:Version; dc:identifier "App-Licensecheck-v3.0.0"^^xsd:string; dc:issued "2016-06-27"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "Initial CPAN release (after being in Debian since 2007, and before that in KDE SDK since 2000)."; ], [ a doap-changeset:Change; rdfs:label "Refactor codebase, with up to 400% speedup and reusable parts in a Moo library."; ], [ a doap-changeset:Addition; rdfs:label "Add --deb-machine option for Debian \"deb5\" copyright file format."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tighten to use Getopt::Long 2.24: Needed for :config option."; ], [ a doap-changeset:Removal; rdfs:label "Drop support for reading configuration from files: Limited use, legacy filenames, and odd parsing by use of risky shell call."; ], [ a doap-changeset:Documentation; rdfs:label "Rewrite documentation of options, and --help putput."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.0"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.10"^^xsd:string; dc:issued "2016-07-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Relax devscripts test: Ignore trailing dot and \"All rights reserved\" boilerplate."; ], [ a doap-changeset:Change; rdfs:label "Use String::Copyright."; ], [ a doap-changeset:Regression; rdfs:label "No longer detect multi-line multi-statement copyright strings (not yet suppported by String::Copyright)."; ], [ a doap-changeset:Regression; rdfs:label "Now misdetects some chatter as copyright statements (not yet suppported by String::Copyright)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.10"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.11"^^xsd:string; dc:issued "2016-07-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "Fix declare runtime-requirement on String::Copyright."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.11"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.12"^^xsd:string; dc:issued "2016-07-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Fix devscripts test to use curly quotes as metacharacters (not Paranthesis also used within, triggering warnings on some versiones of perl)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.12"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.13"^^xsd:string; dc:issued "2016-07-25"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "Fix tighten runtime-requirement on PAth__Tiny for visit()."; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.13"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.14"^^xsd:string; dc:issued "2016-08-01"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Flag test involving multi-line multi-statements as TODO (regression since moving to String::Copyright)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.14"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.15"^^xsd:string; dc:issued "2016-08-11"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Mention in description of --lines option that it does optimistic search."; ], [ a doap-changeset:Change; rdfs:label "Do full search when parsing whole file."; ], [ a doap-changeset:Packaging; rdfs:label "Tighten dependency on String::Copyright to versions supporting configurable threshold."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.15"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.16"^^xsd:string; dc:issued "2016-08-11"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Add \"Auto Generated\" to the generated file detection."; doap-changeset:blame ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.16"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.17"^^xsd:string; dc:issued "2016-08-12"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Fix avoid bogus \"generated-file\" as SPDX license."; ], [ a doap-changeset:Change; rdfs:label "Have option --deb-machine imply option --deb-fmt."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.17"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.18"^^xsd:string; dc:issued "2016-08-13"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix defaults for options --list-delimiter and --rfc822-delimiter (was one space too many)."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix use NONE for no authors with option --deb-machine."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix stop use obsolete undocumented String::Copyright blocks method."; ], [ a doap-changeset:Packaging; rdfs:label "Tighten dependency on String::Copyright."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.18"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.19"^^xsd:string; dc:issued "2016-08-19"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Mention in description of --deb-machine option that it implies --copyright."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix strip copyright sign with option --deb-machine."; ], [ a doap-changeset:Change; rdfs:label "Handle missing year or owner with option --deb-machine."; ], [ a doap-changeset:Change; rdfs:label "Require well-formed years when splitting ownerlines with option --deb-machine."; ], [ a doap-changeset:Change; rdfs:label "Add option --copyright-delimiter, including comma by default."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.19"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.1"^^xsd:string; dc:issued "2016-06-29"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Adjust copyright notice to mention initial committer (not later maintainer)."; ], [ a doap-changeset:Documentation; rdfs:label "Add pre-CPAN changelog entries."; ], [ a doap-changeset:Documentation; rdfs:label "Link to script from POD DESCRIPTION of library."; ], [ a doap-changeset:Documentation; rdfs:label "Add myself as current author, and claim copyright for recent changes."; ], [ a doap-changeset:Documentation; rdfs:label "Add CPAN Request Tracker as alternative bug-database."; ], [ a doap-changeset:Packaging; rdfs:label "Tighten tidyall config to avoid cruft in bin dir."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.1"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.20"^^xsd:string; dc:issued "2016-08-20"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix strip trailing newline from copyrights."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix strip copyright sign unconditionally."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.20"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.21"^^xsd:string; dc:issued "2016-08-20"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Really fix strip copyright sign unconditionally."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.21"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.22"^^xsd:string; dc:issued "2016-08-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Stop merge differently cased owners."; ], [ a doap-changeset:Change; rdfs:label "Use List::Util and Sort::Key::Multi."; ], [ a doap-changeset:Change; rdfs:label "Use https protocol in deb-machine header."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix have option --deb-machine imply option --deb-fmt."; ], [ a doap-changeset:Change; rdfs:label "Adjust SPDX-like shortnames to match Debian format."; ], [ a doap-changeset:Change; rdfs:label "Improve detection of GPL/LGPL/AGPL versions."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.22"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.23"^^xsd:string; dc:issued "2016-09-01"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix skip parsing non-files (regression since v3.0.5)."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix stop ignore options --check --ignore (regression since v3.0.5)."; ], [ a doap-changeset:Change; rdfs:label "Use Path::Iterator::Rule."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.23"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.24"^^xsd:string; dc:issued "2016-09-03"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix apply options --check --ignore to full path (not basename)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.24"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.25"^^xsd:string; dc:issued "2016-09-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Enhance detection of Perl license."; ], [ a doap-changeset:Tests; rdfs:label "Update testsuite to reflect Perl license detection."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix parse whole file for test info-at-eof.h (default length only approximates lines and is too short since String::Copyright 0.003003)."; ], [ a doap-changeset:Change; rdfs:label "Apply fallback marker \"UNKNOWN\" after (not during) license detection."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix delimit multiple licenses with \"and/or\" (not \"or\") when ambiguous."; ], [ a doap-changeset:Change; rdfs:label "Tighten regexes: Simplify space matching (string already normalized)."; ], [ a doap-changeset:Change; rdfs:label "Tighten regexes: Treat affero as alternative (not prefix) to GPL prefixes lesser and library."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix avoid non-digit in version of license Artistic."; ], [ a doap-changeset:Change; rdfs:label "Tighten regexes: Generalize and improve version matching."; ], [ a doap-changeset:Change; rdfs:label "Generalize license string composition."; ], [ a doap-changeset:Change; rdfs:label "Improve non-version descriptor matching."; ], [ a doap-changeset:Change; rdfs:label "Improve version matching in license detections."; ], [ a doap-changeset:Change; rdfs:label "Improve detection of license Apache."; ], [ a doap-changeset:Change; rdfs:label "Improve detection of license AGPL."; ], [ a doap-changeset:Change; rdfs:label "Detect license CC-BY-SA."; ], [ a doap-changeset:Change; rdfs:label "Detect licenses APAFML Adobe-Glyph Adobe-2006 Aladdin SIL FSFAP FSFUL FSFULLR JSON PostgreSQL Unicode-strict Unicode-TOU zlib-acknowledgement."; ], [ a doap-changeset:Tests; rdfs:label "Fix parse whole file for test info-at-eof.h (default length only approximates lines and is too short since String::Copyright 0.003003).", "Fix tighten runtime-requirement on PAth__Tiny for visit()."; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.25"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.26"^^xsd:string; dc:issued "2016-09-22"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix exclude AGPL false positives."; ], [ a doap-changeset:Change; rdfs:label "Use generalized license string composition at more places."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.26"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.27"^^xsd:string; dc:issued "2016-11-23"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Addition; rdfs:label "Introduce new modules: Pattern::License Pattern::License::Parts."; ], [ a doap-changeset:Change; rdfs:label "Use Regexp::Pattern::License for shortname resolving (with internal list as fallback until phased out)."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns mit_new mit_new_materials mit_old mit_unspecified postgresql, and group pattern mit to Regexp::Pattern::License."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect licenses mit_old mit_unspecified (was misdetected as mit_new)."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns curl dsdp mit_oldstyle mit_oldstyle_disclaimer mit_oldstyle_permission ntp ntp_disclaimer."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns bsd_2_clause bsd_3_clause bsd_4_clause to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait patterns clause_retention clause_reproduction clause_advertising clause_non_endorsement disclaimer."; ], [ a doap-changeset:Addition; rdfs:label "Add new group pattern bsd."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern openssl to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait pattern clause_advertising_always."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern cc_by_sa to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Relax license pattern cc_by_ca."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns cc_by cc_by_nc cc_by_nc_nd cc_by_nc_sa cc_by_nd cc_cc0 cc_sp."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix version identifier to use + only in machine-readable mode."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait pattern license_version."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait pattern license_prefix."; ], [ a doap-changeset:Change; rdfs:label "Emulate Regexp::Common -keep syntax to capture version number."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait patterns version_later version_later_paragraph version_later_postfix."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern afl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Relax detection of license GPL."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern agpl to Regexp::Pattern::License."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect license MPL-2.0 (was misdetected as MPL-2.0 or AGPL)."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern mpl to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns gfdl gfdl_niv."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern apache to Regexp::Pattern::License."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix avoid detection of GPL/LGPL fulltext (rarely if ever used as grant)."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns gpl lgpl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Tighten regexes: Generalize and improve LGPL matching."; ], [ a doap-changeset:Addition; rdfs:label "Add new group pattern gnu."; ], [ a doap-changeset:Change; rdfs:label "Tighten regexes: Generalize abbreviated AGPL/LGPL/GPL matching."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern artistic to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add combo pattern perl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Improve license detections artistic perl."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern qpl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns adobe_2006 adobe_glyph apafml to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns fsfap fsful fsfullr to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait patterns fsf_unlimited fsf_unlimited_retention."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern ftl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns libpng zlib zlib_acknowledgement to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns cube eurosym."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns unicode_strict unicode_tou to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern sgi_b to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern python to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern public_domain to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern ms_pl to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new license pattern ms_rl."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns cddl cecill cecill_1 cecill_1_1 cecill_2 cecill_2_1 cecill_b cecill_c epl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern beerware to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern llgpl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Drop no longer used internal license shortname list."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern wtfpl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Improve detection of license GPL."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect license FSFULLR (was misdetected as bogus FSFULR)."; ], [ a doap-changeset:Change; rdfs:label "Clean m4 dnl comment marker."; ], [ a doap-changeset:Change; rdfs:label "Tidy code: Drop noop code."; ], [ a doap-changeset:Regression; rdfs:label "Drop too exotic licensing phrase, and corresponding test case."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.27"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.28"^^xsd:string; dc:issued "2016-11-25"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Fix typo in changelog."; ], [ a doap-changeset:Documentation; rdfs:label "Tidy changelog: Improve distinction between newly added and added-to-patternlist entries."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License: Remove stray bogus regexp."; ], [ a doap-changeset:Documentation; rdfs:label "Extend license pattern dsdp with alternate fedora name PetSC."; ], [ a doap-changeset:Change; rdfs:label "Drop unused and too broad trait pattern disclaimer."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern discl → asis_sw_name."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern discl_provide → asis_name_sw."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern provided_no_warranty → asis_expr_warranty."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern discl_disclaim → discl_name_warranties."; ], [ a doap-changeset:Change; rdfs:label "Tighten license pattern bsd-2-clause. Tidy Regexp::Pattern::License::Pattern: Rename pattern asis_sw_name → asis_sw_by_name."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tighten detection of ISC license (was misdetecting curl)."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern ISC to Regexp::Pattern::License::Pattern."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tighten license pattern curl (was misdetecting other MIT variants)."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern promo_no_author → nopromo_neither."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Fix sort pattern list."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern retain_notice → note_invar."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern retain_notice_cond_discl → note_retain_notice_cond_discl."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern repro_notice_cond_discl → note_repro_notice_cond_discl."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern name_no_ad → nopromo_written_prior."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tighten detection of mit_new license (was misdetecting other MIT flavors)."; ], [ a doap-changeset:Change; rdfs:label "List license mit_new alternate fedora name Modern Style with sublicense."; ], [ a doap-changeset:Addition; rdfs:label "Add new license pattern icu."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect dual licensing mit_new mit_old (and speed up partsing while at it)."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns mit_enna mit_feh."; ], [ a doap-changeset:Addition; rdfs:label "Add new license pattern mit_advertising."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.28"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.29"^^xsd:string; dc:issued "2017-01-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Improve license patterns ftl mit_feh mit_enna cube eurosym libpng zlib zlib_acknowledgement."; ], [ a doap-changeset:Addition; rdfs:label "Add license patterns ofl aladdin rpsl mit_cmu mit_cmu_warranty."; ], [ a doap-changeset:Change; rdfs:label "Sort before enumerating ambiguously related combo licenses."; ], [ a doap-changeset:Change; rdfs:label "Streamline license parsing: Process loops of similar patterne."; ], [ a doap-changeset:Regression; rdfs:label "Drop gpl+aladdin combo license: Too exotic."; ], [ a doap-changeset:Documentation; rdfs:label "Document Regexp::Pattern::License as a private module."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix don't choke on unspecificed BSD license."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect BSD licenses as bare name."; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.29"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.2"^^xsd:string; dc:issued "2016-07-16"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "Run perlcritic with tidyall, and move tidyall test to xt dir."; ], [ a doap-changeset:Change; rdfs:label "Use experimental given/when switch."; ], [ a doap-changeset:Change; rdfs:label "Bump license to GPL-3+."; ], [ a doap-changeset:Change; rdfs:label "Use Getopt::Long::Descriptive."; ], [ a doap-changeset:Change; rdfs:label "Resolve only regexes actually used."; ], [ a doap-changeset:Tests; rdfs:label "Rewrite Software-License test to use Test::Command."; ], [ a doap-changeset:Tests; rdfs:label "Rewrite Software-License test to stop rely on Debian fork of Software::License (see bug#828218)."; ], [ a doap-changeset:Tests; rdfs:label "Add devscripts test tied to devscripts corpus, converted from earlier shunit2 script."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.2"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.30"^^xsd:string; dc:issued "2017-07-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Add OSI test (including only currently succeeding OSI licenses for now)."; ], [ a doap-changeset:Change; rdfs:label "Improve license pattern agpl to skip english (not only french) cecill_2_1."; ], [ a doap-changeset:Change; rdfs:label "Improve license pattern epl."; ], [ a doap-changeset:Addition; rdfs:label "Add license pattern artistic_2."; ], [ a doap-changeset:Change; rdfs:label "clean_comments(): Relax to match varying amount of horizontal whitespace (not exactly one character) followed by any non-whitespace (not only a word character)."; ], [ a doap-changeset:Change; rdfs:label "clean_comments(): Tighten to match and strip only horizontal whitespace (not newlines)."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix license pattern ms_pl to detect MS Public License (not non-free MS Permissive License)."; ], [ a doap-changeset:Change; rdfs:label "Improve license pattern epl to detect some forms of \"or newer\"."; ], [ a doap-changeset:Bugfix; rdfs:label "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."; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.30"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.31"^^xsd:string; dc:issued "2017-08-16"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "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)."; ], [ a doap-changeset:Packaging; rdfs:label "Stop ship Regexp::Pattern::License, now an independent distribution."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.31"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.32"^^xsd:string; dc:issued "2018-02-09"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Use Regexp::Pattern."; ], [ a doap-changeset:Documentation; rdfs:label "Improve POD: Add SEE ALSO section to commandline tool."; ], [ a doap-changeset:Change; rdfs:label "Use Regexp::Pattern::License 3.1.0 tags."; ], [ a doap-changeset:Change; rdfs:label "Optimize slightly: Skip embedded or referenced licenses earlier."; ], [ a doap-changeset:Change; rdfs:label "Tighten regexes: Generalize and improve matching."; ], [ a doap-changeset:Regression; rdfs:label "Adapt testsuite to tolerate misdetecting MPL-1.0 as MPL: Regression caused by more generalized matching."; ], [ a doap-changeset:Documentation; rdfs:label "Add TODO file, with a bunch of ideas."; ], [ a doap-changeset:Change; rdfs:label "Adapt and extend testsuite to cover new license patterns supported by Regex::Patterns::License 3.1.0: bdwgc bdwgc-matlab gfdl lgpl-bdwgc."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.32"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.33"^^xsd:string; dc:issued "2018-02-15"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Rewrite testsuite to use Test::Builder::Module (not Test::Roo)."; ], [ a doap-changeset:Tests; rdfs:label "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/"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.33"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.34"^^xsd:string; dc:issued "2018-03-29"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Use regexp patterns as-is (avoid recompiling)."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix word-based comment removal."; ], [ a doap-changeset:Tests; rdfs:label "Demote ScanCode tests to maintainer tests."; ], [ a doap-changeset:Tests; rdfs:label "Testsuite speed boost: Parse skipfile once per set, not once per file in each set."; ], [ a doap-changeset:Change; rdfs:label "Speed boost: Fix load regexp patterns once (not once or twice per file)."; ], [ a doap-changeset:Tests; rdfs:label "Fix Software-License test to match license shortnames (not captions which are not fixed)."; ], [ a doap-changeset:Tests; rdfs:label "Relax devscripts test to match SPDX-style license captions as supported post Regexp::Patterns::License v3.1.0."; ], [ a doap-changeset:Change; rdfs:label "Resolve license patterns as Debian → SPDX → generic (not just Debian → generic) to support less SPDX-centric names post Regexp::Pattern::License v3.1.0."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tighten license key loop (skip eventual DefHash attributes)."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tighten version matching: Wrap in group when optional."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix support uncompiled patterns from Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Simplify pattern tag resolving."; ], [ a doap-changeset:Change; rdfs:label "Generalize singleversion patterns."; ], [ a doap-changeset:Tests; rdfs:label "Testsuite: Add function license_like."; ], [ a doap-changeset:Tests; rdfs:label "Testsuite: handle alternative name of license bdwgc → MIT~Boehm post Regexp::Pattern::License v3.1.0."; ], [ a doap-changeset:Change; rdfs:label "Slight speed boost: Use eq (not regexp) for simple comparisons."; ], [ a doap-changeset:Documentation; rdfs:label "Extend TODO with more ideas."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.34"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.35"^^xsd:string; dc:issued "2018-03-30"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Testsuite: Tolerate Aladdin License mis-categorized as unversioned by SPDX, as reflected post Regexp::Pattern::License v3.1.0."; ], [ a doap-changeset:Tests; rdfs:label "Testsuite: Improve workarounds for license zlib-acknowledgement/Nunit/NUnit."; ], [ a doap-changeset:Tests; rdfs:label "Adapt testsuite for detection of FSFULLR post Regexp::Pattern::License v3.1.0."; ], [ a doap-changeset:Tests; rdfs:label "Adapt testsuite for detecting uppercase GPL or LGPL post Regexp::Pattern::License v3.1.0."; ], [ a doap-changeset:Tests; rdfs:label "Adapt testsuite for renamed pattern khronos → Khronos post Regexp::Pattern::License v3.1.0."; ], [ a doap-changeset:Tests; rdfs:label "Adapt testsuite for renamed pattern kevlin-henney → Kevlin-Henney post Regexp::Pattern::License v3.1.0."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tolerate alternative regexp compilers."; ], [ a doap-changeset:Change; rdfs:label "Use Regexp::Pattern::License subject patterns."; ], [ a doap-changeset:Change; rdfs:label "Improve license patterns cecill_b cecill_c to detect more forms (previously misdetected as cecill)."; ], [ a doap-changeset:Tests; rdfs:label "Adapt testsuite for improved detection since Regexp::Pattern::License v3.1.0."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.35"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.36"^^xsd:string; dc:issued "2018-04-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Track matches in hash (not array)."; ], [ a doap-changeset:Change; rdfs:label "Match name alone, before recompiled custom regexes."; ], [ a doap-changeset:Change; rdfs:label "Sort license keys once."; ], [ a doap-changeset:Change; rdfs:label "Use Regexp::Pattern::License trait patterns any_of licensed_under or_at_option version version_numberstring."; ], [ a doap-changeset:Change; rdfs:label "Simplify AGPL-related pattern slightly."; ], [ a doap-changeset:Change; rdfs:label "Tighten apache pattern slightly."; ], [ a doap-changeset:Change; rdfs:label "Limit to compile only trait patterns actually used."; ], [ a doap-changeset:Change; rdfs:label "Tighten gpl pattern."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.36"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.37"^^xsd:string; dc:issued "2019-06-12"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Update testsuite: OSI license Artistic-1.0 really is Artistic-1.0-Perl."; ], [ a doap-changeset:Tests; rdfs:label "Adapt testsuite to use recent Software::LicenseUtils (not slightly older Software::License)."; ], [ a doap-changeset:Change; rdfs:label "Skip scan for CC grant unless name already detected."; ], [ a doap-changeset:Change; rdfs:label "Simplify conditionals: Replace given-when-continue with if."; ], [ a doap-changeset:Change; rdfs:label "Use more recent Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Reuse previous name match."; ], [ a doap-changeset:Tests; rdfs:label "Adapt author testsuite for improved detection (and few minor egressions) since Regexp::Pattern::License v3.1.94."; ], [ a doap-changeset:Tests; rdfs:label "Load Test::Builder only once per module.."; ], [ a doap-changeset:Tests; rdfs:label "Fix handle missing ScanCode corpus.."; ], [ a doap-changeset:Documentation; rdfs:label "Update TODOs."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.37"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.38"^^xsd:string; dc:issued "2020-01-03"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Add missing newline when no arguments"; ], [ a doap-changeset:Tests; rdfs:label "Isolate and extend encoding tests."; ], [ a doap-changeset:Change; rdfs:label "Move encoding loop from executable to library."; ], [ a doap-changeset:Change; rdfs:label "define local regexes in sub licensepatterns (not sub parse_license)"; ], [ a doap-changeset:Bugfix; rdfs:label "support non-utf8 locale"; ], [ a doap-changeset:Change; rdfs:label "Streamline detection of well-formed grants."; ], [ a doap-changeset:Tests; rdfs:label "adapt author testsuite for improved detection (and few minor regressions) since Regexp::Pattern::License v3.1.95"; ], [ a doap-changeset:Change; rdfs:label "Tighten and improve detection of Artistic licenses."; ], [ a doap-changeset:Tests; rdfs:label "silence warnings in handling utf8 content"; ], [ a doap-changeset:Change; rdfs:label "Improve detection of AFL licenses."; ], [ a doap-changeset:Change; rdfs:label "Improve detection of Boost licenses."; ], [ a doap-changeset:Change; rdfs:label "Improve detection of Cecill licenses."; ], [ a doap-changeset:Change; rdfs:label "improve detection of apache licenses"; ], [ a doap-changeset:Change; rdfs:label "pass file and position to function parse_license"; ], [ a doap-changeset:Bugfix; rdfs:label "fix: detect creative commons dual-version-licensing (not misdetect as same version twice)"; ], [ a doap-changeset:Change; rdfs:label "support environment variable DEBUG; require modules Log::Any Log::Any::Adapter::Screen MooX::Role::Logger"; ], [ a doap-changeset:Change; rdfs:label "Improve detection of WTFPL and WTFNMFPL licenses."; ], [ a doap-changeset:Regression; rdfs:label "misdetects some GNU fulltext licenses as also maybe LGPL"; ], [ a doap-changeset:Packaging; rdfs:label "use more recent Regexp::Pattern::License"; ], [ a doap-changeset:Bugfix; rdfs:label "Add missing newline when no arguments"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.38"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.39"^^xsd:string; dc:issued "2020-01-04"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Improve detection of CC licenses."; ], [ a doap-changeset:Change; rdfs:label "improve logging; stop require MooX::Role::Logger"; ], [ a doap-changeset:Change; rdfs:label "use hash interface of Regexp::Pattern and RE2 regexes; require re:engine::RE2, and more recent Regexp::Pattern and Regexp::Pattern::License"; ], [ a doap-changeset:Change; rdfs:label "optimize bsd detection (apparently case-insensitive match in unneeded)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.39"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.3"^^xsd:string; dc:issued "2016-07-18"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Use Test::Roo and library calls (not script) for devscripts corpus license coverage tests."; ], [ a doap-changeset:Packaging; rdfs:label "Fix require strictures for tests."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.3"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.40"^^xsd:string; dc:issued "2020-01-28"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "fix: step-wise grant: capture traits before mangling version."; ], [ a doap-changeset:Change; rdfs:label "improve logging."; ], [ a doap-changeset:Change; rdfs:label "tests: update author testsuite."; ], [ a doap-changeset:Bugfix; rdfs:label "resolve SPDX keyword for AFPL."; ], [ a doap-changeset:Change; rdfs:label "track identified areas of strings and skip further parsing; require Array::IntSpan."; ], [ a doap-changeset:Bugfix; rdfs:label "drop bogus small optimization."; ], [ a doap-changeset:Bugfix; rdfs:label "step-wise grant: capture non-versioned grant."; ], [ a doap-changeset:Bugfix; rdfs:label "step-wise grant: skip type:group license names."; ], [ a doap-changeset:Change; rdfs:label "step-wise grant: detect type:singleversion license names."; ], [ a doap-changeset:Tests; rdfs:label "update author tests for improved trait licensed_under since Regexp::Pattern::License v3.1.100."; ], [ a doap-changeset:Change; rdfs:label "improve custom-matching versioned apache grants."; ], [ a doap-changeset:Change; rdfs:label "step-wise grants: track trait license_label (in addition to licensed_under)."; ], [ a doap-changeset:Change; rdfs:label "step-wise grants: track trait license_label_trove (in addition to track_label licensed_under)."; ], [ a doap-changeset:Change; rdfs:label "optimization: step-wise grant: scan for name only directly after licensed_under."; ], [ a doap-changeset:Tests; rdfs:label "update author tests for added Trove captions since Regexp::Pattern::License v3.1.100."; ], [ a doap-changeset:Change; rdfs:label "use nsort_by to sort matches; require List::SomeUtils (not List::Util)."; ], [ a doap-changeset:Bugfix; rdfs:label "strip fortran comment also on otherwise empty line."; ], [ a doap-changeset:Change; rdfs:label "streamline detection of well-formed licenses."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.40"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.41"^^xsd:string; dc:issued "2020-01-30"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "merge duplicate detections of same license"; ], [ a doap-changeset:Documentation; rdfs:label "clarify comment about identifiers being DEP-5 or SPDX (not only SPDX)"; ], [ a doap-changeset:Change; rdfs:label "optimization: avoid accidentally flagging all objects for rescanning when checking if rescanning can be skipped :-/"; ], [ a doap-changeset:Tests; rdfs:label "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)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.41"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.42"^^xsd:string; dc:issued "2020-02-01"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "simplify tests Software-License.t devscripts.t encoding.t"; ], [ a doap-changeset:Packaging; rdfs:label "test-require Test::Command::Simple (not Test::Script)"; ], [ a doap-changeset:Change; rdfs:label "optimization: stop skip detection of GPL/LGPL fulltext"; ], [ a doap-changeset:Change; rdfs:label "drop obsolete custom patterns"; ], [ a doap-changeset:Change; rdfs:label "optimization: drop custom CC patterns"; ], [ a doap-changeset:Regression; rdfs:label "now fails to detect dual-licensing of CC-BY-SA-3.0 or LGPL-2 (test case: utilities.scad)"; ], [ a doap-changeset:Tests; rdfs:label "environment variable LICENSECHECK sets path to licensecheck (default: bin/licensecheck)"; doap-changeset:thanks ; ], [ a doap-changeset:Bugfix; rdfs:label "gracefully skip to next file on failure decoding a file (broken since v3.0.38)"; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.42"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.43"^^xsd:string; dc:issued "2020-02-10"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "tests: declare \"use utf8\" and \"use feature 'unicode_strings'\" in encode.t"; ], [ a doap-changeset:Tests; rdfs:label "tighten encode.t (still fails with non-UTF-8 locales)"; ], [ a doap-changeset:Packaging; rdfs:label "require Encode::Locale Encode"; ], [ a doap-changeset:Packaging; rdfs:label "stop test-require UNIVERSAL::require (unused since v3.0.2)"; ], [ a doap-changeset:Tests; rdfs:label "use List::SomeUtils (not List::MoreUtils)"; ], [ a doap-changeset:Packaging; rdfs:label "stop test-recommend List::MoreUtils"; ], [ a doap-changeset:Tests; rdfs:label "drop unused function is_licensed_like_scancode"; ], [ a doap-changeset:Change; rdfs:label "consistently use strictures, unversioned"; ], [ a doap-changeset:Packaging; rdfs:label "relax to require strictures unversioned"; ], [ a doap-changeset:Tests; rdfs:label "use Test2::V0"; ], [ a doap-changeset:Packaging; rdfs:label "test-require Test2::V0 (not Test::Builder::Module Test::Requires Test::More)"; ], [ a doap-changeset:Bugfix; rdfs:label "adjust end position of located license name"; ], [ a doap-changeset:Change; rdfs:label "track detected licensing as objects"; ], [ a doap-changeset:Packaging; rdfs:label "require MooX::Struct"; ], [ a doap-changeset:Change; rdfs:label "track traits as objects"; ], [ a doap-changeset:Change; rdfs:label "improve detection of AGPL licenses"; ], [ a doap-changeset:Regression; rdfs:label "now misses trove declarations for AGPL-3+"; ], [ a doap-changeset:Change; rdfs:label "optimize detection of ZPL licenses"; ], [ a doap-changeset:Tests; rdfs:label "update author tests related to ZPL since Regexp::Pattern::License v3.1.102"; ], [ a doap-changeset:Change; rdfs:label "avoid misdetecting CECILL-1.1 as GPL-1+ due to extending trait pattern licensed_under since Regexp::Pattern::License v3.1.102"; ], [ a doap-changeset:Change; rdfs:label "simplify avoiding license duplicates in expression by skipping grant of same id as already found fulltext"; ], [ a doap-changeset:Change; rdfs:label "track step-wise traits as objects"; ], [ a doap-changeset:Change; rdfs:label "simplify flagging step-wise grants"; ], [ a doap-changeset:Change; rdfs:label "consult coverage of well-formed scan to avoid duplicate matches"; ], [ a doap-changeset:Bugfix; rdfs:label "resolve license fulltext last, to leave room for shadowing with -or-newer grant"; ], [ a doap-changeset:Tests; rdfs:label "update tests"; ], [ a doap-changeset:Change; rdfs:label "tighten which regexes to generate"; ], [ a doap-changeset:Packaging; rdfs:label "require Regexp::Pattern 0.2.12 and Regexp::Pattern::License 3.1.102"; ], [ a doap-changeset:Change; rdfs:label "stop resolve regexes licensed_under version_later (unused since v3.0.42)"; ], [ a doap-changeset:Documentation; rdfs:label "update TODOs"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.43"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.44"^^xsd:string; dc:issued "2020-02-10"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "ensure local script is executable"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.44"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.45"^^xsd:string; dc:issued "2020-02-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "sort positions numerically (not alphanumerically)"; ], [ a doap-changeset:Tests; rdfs:label "change namespace of local libraries to Test2::Licensecheck"; ], [ a doap-changeset:Tests; rdfs:label "support fixing or skipping with Test2::Licensecheck::ScanCode skipfiles"; ], [ a doap-changeset:Change; rdfs:label "update (improved but still failing) misdetection of SSLeay since Regexp::Pattern::License v3.2.0"; ], [ a doap-changeset:Change; rdfs:label "streamline detection of bsd licenses"; ], [ a doap-changeset:Documentation; rdfs:label "use canonical encoding name iso-8859-1 (not latin-1)"; ], [ a doap-changeset:Documentation; rdfs:label "fix print encoding name (not Encode object ref) if encoding fails"; ], [ a doap-changeset:Bugfix; rdfs:label "fix: try fallback encoding per-file (restore explicit encoding for subsequent file)"; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.45"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.46"^^xsd:string; dc:issued "2020-03-13"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "atomic: consult coverage from stepwise scan to avoid duplicate match"; ], [ a doap-changeset:Change; rdfs:label "logging: stepwise: resolve positions"; ], [ a doap-changeset:Change; rdfs:label "logging: avoid undefined version for custom agpl grant detection"; ], [ a doap-changeset:Change; rdfs:label "scan for GNU 'or-newer' usage version before singleversion grant version"; ], [ a doap-changeset:Change; rdfs:label "improve detection of GNU 'or-newer' usage grant version"; ], [ a doap-changeset:Change; rdfs:label "extend clean_comments() to strip escaped newline"; ], [ a doap-changeset:Documentation; rdfs:label "relicense project as AGPL-3-or-newer; add Purism SPC as copyright holder"; ], [ a doap-changeset:Documentation; rdfs:label "update git repository URL"; ], [ a doap-changeset:Change; rdfs:label "track examined files"; ], [ a doap-changeset:Change; rdfs:label "logging: generally resolve positions"; ], [ a doap-changeset:Change; rdfs:label "add FIXME comments where (mostly custom) patterns lack test coverage"; ], [ a doap-changeset:Change; rdfs:label "avoid wildcard in local bsd pattern"; ], [ a doap-changeset:Bugfix; rdfs:label "atomic: tighten grant patterns to include licensed_under prefix"; ], [ a doap-changeset:Change; rdfs:label "use both custom and atomic patterns (not only custom) for agpl fsful fsfullr gpl lgpl"; ], [ a doap-changeset:Tests; rdfs:label "mark 3 flawed author tests as such"; ], [ a doap-changeset:Change; rdfs:label "atomic: explicitly (regardless of list @L_tidy) skip cc-by when cc_by_sa_3 is detected"; ], [ a doap-changeset:Change; rdfs:label "stepwise: explicitly (regardless of list @L_tidy) avoid gpl"; ], [ a doap-changeset:Change; rdfs:label "optimize: track incomplete patterns (not subset of complete ones) - speed boost of %25!"; ], [ a doap-changeset:Tests; rdfs:label "mark 4 bogusly versioned tests as such"; ], [ a doap-changeset:Change; rdfs:label "optimize: atomic: skip a few scans if grant already detected"; ], [ a doap-changeset:Tests; rdfs:label "update author test related to rare apache_2 pattern covered since Regexp::Pattern::License v3.3.0"; ], [ a doap-changeset:Change; rdfs:label "pre-compile left-anchored trait pattern version"; ], [ a doap-changeset:Change; rdfs:label "optimize: use optimized regex with /g (apparently supported by re::engine::RE2)"; ], [ a doap-changeset:Change; rdfs:label "sort or'ed parts of expressions"; ], [ a doap-changeset:Change; rdfs:label "stepwise: relax to use wider window for license name"; ], [ a doap-changeset:Change; rdfs:label "improve logging and comments"; ], [ a doap-changeset:Change; rdfs:label "avoid finalize in custom scan for GPL fulltext"; ], [ a doap-changeset:Tests; rdfs:label "update author test related to gpl_* patterns covered since Regexp::Pattern::License v3.3.0"; ], [ a doap-changeset:Change; rdfs:label "logging: stepwise: log whole version string (not only number)"; ], [ a doap-changeset:Change; rdfs:label "stepwise: track start and end position, and a moving current position (not additional static ones)"; ], [ a doap-changeset:Change; rdfs:label "stepwise: use named (not numbered) capture for version"; ], [ a doap-changeset:Change; rdfs:label "stepwise: detect 'or-later' usage grant also as versioned grant"; ], [ a doap-changeset:Change; rdfs:label "stepwise: detect prepended version"; ], [ a doap-changeset:Change; rdfs:label "detect vague grant for license group"; ], [ a doap-changeset:Packaging; rdfs:label "require Regexp::Pattern::License 3.3.0"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.46"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.47"^^xsd:string; dc:issued "2020-05-17"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "improve log messages"; ], [ a doap-changeset:Packaging; rdfs:label "tighten to require more recent Regexp::Pattern::License"; ], [ a doap-changeset:Change; rdfs:label "drop custom GPL fulltext resolving (unused since Regexp::Pattern::License 3.3.1)"; ], [ a doap-changeset:Change; rdfs:label "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)"; ], [ a doap-changeset:Tests; rdfs:label "update test related to lgpl_* patterns covered since Regexp::Pattern::License v3.3.2"; ], [ a doap-changeset:Documentation; rdfs:label "add some TODOs"; ], [ a doap-changeset:Change; rdfs:label "use usage patterns (i.e. *_only *_or_later)"; ], [ a doap-changeset:Change; rdfs:label "append extrainfo to final legacy license string (previously appended each license but only for custom match)"; ], [ a doap-changeset:Change; rdfs:label "avoid misdetecting license caldera as license-group bsd"; ], [ a doap-changeset:Change; rdfs:label "avoid misdetecting license python_2 as cnri_python"; ], [ a doap-changeset:Change; rdfs:label "quirk: avoid-step-wise for cua_opl_1"; ], [ a doap-changeset:Bugfix; rdfs:label "fix resolve SPDX keyword for *_or_later (broken in commit 1bcccbdv3.0.40 released since v3.0.40)"; ], [ a doap-changeset:Change; rdfs:label "stepwise: optimize: match name left-anchored"; ], [ a doap-changeset:Change; rdfs:label "revert: avoid detecting grant for license group (broken)"; ], [ a doap-changeset:Change; rdfs:label "optimize: include left-anchoring when pre-compile clean_comments regexes"; ], [ a doap-changeset:Tests; rdfs:label "adjust for normalized license names in legacy output"; ], [ a doap-changeset:Tests; rdfs:label "update detection of EUPL since Regexp::Pattern::License v3.3.1"; ], [ a doap-changeset:Bugfix; rdfs:label "stepwise: fix detect leading version"; ], [ a doap-changeset:Change; rdfs:label "drop obsolete custom patterns"; ], [ a doap-changeset:Tests; rdfs:label "update author tests"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.47"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.4"^^xsd:string; dc:issued "2016-07-18"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Drop non-working option \"--installed\" from script tests (leftover from Debian autopkgtest support)."; ], [ a doap-changeset:Tests; rdfs:label "Stop use Path::Tiny in test where unneeded."; ], [ a doap-changeset:Tests; rdfs:label "Use Test::Script to ensure correct perl invokes script in tests."; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.4"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.5"^^xsd:string; dc:issued "2016-07-19"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Tidy script to rename $file → $path and $files_count → $paths_count where not yet resolved as file."; ], [ a doap-changeset:Change; rdfs:label "Stop call system command find in script (uses Path::Tiny::visit instead)."; ], [ a doap-changeset:Change; rdfs:label "Avoid type constraints and all but one coercion, for a 30% speedup in script initialization."; ], [ a doap-changeset:Change; rdfs:label "Move find routine to library."; ], [ a doap-changeset:Tests; rdfs:label "Fix tighten rest-requirement on Software::License to versions supporting new_from_short_name()."; ], [ a doap-changeset:SecurityFix; rdfs:label "Stop dereference symbolic links: non-intuitive and potentially dangerous (possibly introduced in error intended to enable recursion)."; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.5"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.6"^^xsd:string; dc:issued "2016-07-20"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Improve separation of copyright parsing from comment stripping and copyright serializing"; ], [ a doap-changeset:Packaging; rdfs:label "Fix require experimental (for switch feature)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.6"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.7"^^xsd:string; dc:issued "2016-07-20"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Bail out gracefully if Software::License fails to create some licenses."; ], [ a doap-changeset:Packaging; rdfs:label "Make Software::License test optional."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.7"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.8"^^xsd:string; dc:issued "2016-07-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "Fix tighten test requirement for Test::Script to versions checking for stdout/stderr."; ], [ a doap-changeset:Bugfix; rdfs:label "Avoid superfluous regex modifier /l."; ], [ a doap-changeset:Change; rdfs:label "Pseudo-decode alternative representations for copyright sign and hyphen-minus."; ], [ a doap-changeset:Change; rdfs:label "Add \"Generated with\" to the generated file detection."; doap-changeset:blame ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.8"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.9"^^xsd:string; dc:issued "2016-07-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Fix decode \"©\" in --version option output (workaround for Pod::Constants not supporting UTF-8)."; ], [ a doap-changeset:Tests; rdfs:label "Rewrite devscripts test to match patterns (not exact strings), and handle varying output on encoding failure."; ], [ a doap-changeset:Documentation; rdfs:label "Drop old licensing header from devscripts test: Fully rewritten by now."; ], [ a doap-changeset:Change; rdfs:label "Update headers of module and tests: Strip hashbang; consistently use strictures."; ], [ a doap-changeset:Packaging; rdfs:label "Drop superfluous test-requirement on strictures: Already declared as runtime-requirement."; ], [ a doap-changeset:Packaging; rdfs:label "Fix declare test-recommendation on Software::License (not too vague recommends)."; ], [ a doap-changeset:Change; rdfs:label "Stop use Unicode features: We don't really do any complex Unicode, so let's try target older perl."; ], [ a doap-changeset:Documentation; rdfs:label "Fix some categorizations of old changelog entries."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.9"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.1.0"^^xsd:string; dc:issued "2020-05-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "check detection of generated file"; ], [ a doap-changeset:Tests; rdfs:label "check detection of incorrect FSF postal address"; ], [ a doap-changeset:Packaging; rdfs:label "tighten to require more recent Regexp::Pattern::License"; ], [ a doap-changeset:Change; rdfs:label "streamline and improve detection of generated file"; ], [ a doap-changeset:Change; rdfs:label "streamline and improve detection of incorrect FSF postal address"; ], [ a doap-changeset:Change; rdfs:label "track detected flaws as objects"; ], [ a doap-changeset:Addition; rdfs:label "enclose flaws with square brackets (not parens, now used for details of some flaws) in legacy output"; ], [ a doap-changeset:Tests; rdfs:label "update to reflect changed markup of flaws"; ], [ a doap-changeset:Change; rdfs:label "detect exceptions, tracked as objects"; ], [ a doap-changeset:Tests; rdfs:label "update author tests"; ], [ a doap-changeset:Packaging; rdfs:label "fix test-require (not only runtime-require) strictures"; ], [ a doap-changeset:Bugfix; rdfs:label "avoid uninitialized value in local Apache-and-BSD pattern"; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.0"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.1.1"^^xsd:string; dc:issued "2020-05-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "drop tricky and superfluous exception test"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.1"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.0"^^xsd:string; dc:issued "2021-06-22"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "stop bogusly annotate v3.1.0 bugfix as security-related"; ], [ a doap-changeset:Bugfix; rdfs:label "tighten custom BSD detection to avoid SSLeay false positive"; ], [ a doap-changeset:Documentation; rdfs:label "restore POD section OPTIONS (gone since v3.0.2)"; ], [ a doap-changeset:Change; rdfs:label "logging: fix resolve identifier in trace of exception and flaw detection"; ], [ a doap-changeset:Documentation; rdfs:label "add pod section ENVIRONMENT (replacing and expanding section DEBUGGING)"; ], [ a doap-changeset:Documentation; rdfs:label "colorize output of --help option, and auto-enable color more reliably"; ], [ a doap-changeset:Change; rdfs:label "use IO::Interactive"; ], [ a doap-changeset:Documentation; rdfs:label "split pod section OPTIONS into subsections"; ], [ a doap-changeset:Documentation; rdfs:label "improve markup of pod section OPTIONS"; ], [ a doap-changeset:Addition; rdfs:label "add option --list-licenses"; ], [ a doap-changeset:Change; rdfs:label "resolve license patterns only when used, speeding up --help"; ], [ a doap-changeset:Documentation; rdfs:label "rephrase description for option --skipped"; ], [ a doap-changeset:Documentation; rdfs:label "document that options --check and --ignore apply only when multiple PATHs are provided"; ], [ a doap-changeset:Addition; rdfs:label "add option --list-naming-schemes"; ], [ a doap-changeset:Addition; rdfs:label "add option --shortname-scheme, replacing option --deb-fmt (kept for now, documented as deprecated)"; ], [ a doap-changeset:Packaging; rdfs:label "tighten to require more recent Regexp::Pattern::License"; ], [ a doap-changeset:Tests; rdfs:label "update to match capitalized name of Libtool exception, corrected since Regexp::Pattern::License v3.5.0"; ], [ a doap-changeset:Tests; rdfs:label "update detection of SISSL since Regexp::Pattern::License v3.5.0"; ], [ a doap-changeset:Documentation; rdfs:label "update TODOs"; ], [ a doap-changeset:Tests; rdfs:label "update author tests"; ], [ a doap-changeset:Bugfix; rdfs:label "use Getopt::Long and Pod::Usage (not Getopt::Long::Descriptive)"; doap-bugs:fixes ; doap-changeset:thanks ; ], [ a doap-changeset:Bugfix; rdfs:label "stepwise: fix omit version for singleversion objects"; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.0"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.10"^^xsd:string; dc:issued "2021-08-18"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "improve POD markup of SYNOPSIS and a few code strings"; ], [ a doap-changeset:Packaging; rdfs:label "relax to recommend (not depend on) module re::engine::RE2"; ], [ a doap-changeset:Tests; rdfs:label "improve tests"; ], [ a doap-changeset:Tests; rdfs:label "test-require Test::Without::Module"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.10"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.11"^^xsd:string; dc:issued "2021-08-18"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "skip *-no-RE2 tests unless installed Regexp::Pattern::License is recent enough to support it"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.11"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.12"^^xsd:string; dc:issued "2021-08-30"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "use path-less shebang (not indirect env executable, and execute from blib subdir when available"; doap-bugs:fixes ; doap-changeset:thanks , ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.12"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.13"^^xsd:string; dc:issued "2021-10-11"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "relax dependency on perl to v5.12, and explicitly 'use' it, to slightly simplify boilerplate"; ], [ a doap-changeset:Change; rdfs:label "stop use version (unneeded with modern perl)"; ], [ a doap-changeset:Tests; rdfs:label "tighten test to not fail with old String::Copyright"; ], [ a doap-changeset:Change; rdfs:label "tighten runtime-dependency on Encode, to avoid 'Use of uninitialized value' on stderr"; ], [ a doap-changeset:Bugfix; rdfs:label "fix encoding tests flag as TODO tests using undecoded input: String::Copyright documented to accept only strings"; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.13"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.14"^^xsd:string; dc:issued "2021-11-22"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "fix tests to use executable set in environment variable LICENSECHECK"; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.14"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.1"^^xsd:string; dc:issued "2021-06-29"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "stop use strictures in tests (unneeded with Tests2::V0)"; ], [ a doap-changeset:Tests; rdfs:label "fix include missing test files"; ], [ a doap-changeset:Bugfix; rdfs:label "fix option --deb-machine (broken since v3.2.0)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.1"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.2"^^xsd:string; dc:issued "2021-07-04"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "fix describe option --shortname-scheme (not bogus option --shortname-schemes) in changelog entry for release v3.2"; ], [ a doap-changeset:Documentation; rdfs:label "mention in POD when each option was introduced"; ], [ a doap-changeset:Bugfix; rdfs:label "fix resolve shortname not reusable in grant (e.g. SPDX using unversioned SISSL for SISSL-1.1)"; ], [ a doap-changeset:Tests; rdfs:label "add test for not yet recognized PS-or-PDF-font exception"; ], [ a doap-changeset:Packaging; rdfs:label "tighten .gitignore file"; ], [ a doap-changeset:Tests; rdfs:label "add README to source, documenting origin of Fedora tests"; ], [ a doap-changeset:Bugfix; rdfs:label "fix ignore atomic discoveries in areas already detected stepwise as a license, grant, or exception"; ], [ a doap-changeset:Documentation; rdfs:label "fix trace output to include string for stepwise or_later grant trait"; ], [ a doap-changeset:Bugfix; rdfs:label "fix include leading licensed_under when tracking detected positions"; ], [ a doap-changeset:Change; rdfs:label "tighten internal trait objects to require file attribute"; ], [ a doap-changeset:Tests; rdfs:label "update tests to cover Regexp::Pattern::License v3.6.0"; ], [ a doap-changeset:Packaging; rdfs:label "relax runtime requirement on Regexp::Pattern::License"; ], [ a doap-changeset:Tests; rdfs:label "tighten test requirement on Regexp::Pattern::License"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.2"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.3"^^xsd:string; dc:issued "2021-07-07"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "rewrite encoding tests"; ], [ a doap-changeset:Change; rdfs:label "stop use strictures (not sure why, but CPANTESTERS choke on it)"; ], [ a doap-changeset:Bugfix; rdfs:label "fix option --copyright-delimiter (deb-machine output broken since v3.2.0)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.3"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.4"^^xsd:string; dc:issued "2021-07-17"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "extend function clean_cruft_and_spaces() to strip trailing dash, assuming it is soft-wrap"; ], [ a doap-changeset:Change; rdfs:label "refine resolving of license names to cover more variants"; ], [ a doap-changeset:Tests; rdfs:label "update testsuite to cover Regexp::Pattern::License v3.7.0"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.4"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.5"^^xsd:string; dc:issued "2021-07-22"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "tighten test-recommendation on Regexp::Pattern::License"; ], [ a doap-changeset:Bugfix; rdfs:label "strip all trailing dash a.k.a. soft-wraps (not only first instance)"; ], [ a doap-changeset:Change; rdfs:label "extend functions clean_cruft() clean_cruft_and_spaces() to strip html tags"; ], [ a doap-changeset:Bugfix; rdfs:label "fix shebang to use /usr/bin/env (don't hardcode /usr/bin/perl)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.5"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.6"^^xsd:string; dc:issued "2021-08-07"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "correct typo in SEE ALSO entry"; ], [ a doap-changeset:Documentation; rdfs:label "extend copyright to include present year"; ], [ a doap-changeset:Packaging; rdfs:label "tighten test-recommendation on Regexp::Pattern::License"; ], [ a doap-changeset:Tests; rdfs:label "update author tests to cover Regexp::Pattern::License v3.8.0"; ], [ a doap-changeset:Change; rdfs:label "optimixe: compile some internal regexes only once"; ], [ a doap-changeset:Change; rdfs:label "postpone compiling regexes, to speedup response time for non-scanning command-line options"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.6"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.7"^^xsd:string; dc:issued "2021-08-14"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "stop skip author test apparently succeding nowadays"; ], [ a doap-changeset:Bugfix; rdfs:label "strip simple closing (not only opening) html tags as cruft"; ], [ a doap-changeset:Bugfix; rdfs:label "stop treat : or :// as cruft"; ], [ a doap-changeset:Tests; rdfs:label "test-recommend Regexp::Pattern::License 3.9.0"; ], [ a doap-changeset:Tests; rdfs:label "simplify tests"; ], [ a doap-changeset:Change; rdfs:label "force atomic scan for mit_new, to avoid misdetecting ambiguous MIT X11 grant as only x11"; ], [ a doap-changeset:Bugfix; rdfs:label "extend local lgpl dual-license pattern to not assume name patterns include trait published_by, required since Regexp::Pattern::License v3.9.0"; ], [ a doap-changeset:Change; rdfs:label "optimize: compile only patterns actually used"; ], [ a doap-changeset:Change; rdfs:label "avoid hardcoding names of specific prefix traits"; ], [ a doap-changeset:Change; rdfs:label "detect python_2 and (additional, standalone) cnri_python in same file"; ], [ a doap-changeset:Tests; rdfs:label "add test for (not yet detected) BSD-3-clause~Refractions"; ], [ a doap-changeset:Tests; rdfs:label "update author tests to cover Regexp::Pattern::License v3.9.0"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.7"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.8"^^xsd:string; dc:issued "2021-08-15"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "fix tests and silence warnings with Regexp::Pattern::License less than v3.8.1"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.8"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.2.9"^^xsd:string; dc:issued "2021-08-16"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "strip xml tag , and extend to strip html tags


with attributes (not only bare tags)"; ], [ a doap-changeset:Packaging; rdfs:label "stop use Sort::Key::Multi"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.9"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.0"^^xsd:string; dc:issued "2022-01-08"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "declare package version with package name, and move POD sections NAME VERSION SYNOPSIS DESCRIPTION closer to top of files"; ], [ a doap-changeset:Change; rdfs:label "use named arguments for struct objects"; ], [ a doap-changeset:Change; rdfs:label "call log->trace() (not log->tracef()) for simple strings"; ], [ a doap-changeset:Change; rdfs:label "Run perltidier (not perltidy) with tidyall"; ], [ a doap-changeset:Change; rdfs:label "refactor to use Object::Pad (not Moo or MooX::Struct)"; ], [ a doap-changeset:Documentation; rdfs:label "clarify option --tail"; ], [ a doap-changeset:Tests; rdfs:label "parse perl-generated Software::License data as utf8"; ], [ a doap-changeset:Tests; rdfs:label "check full contents of Software::License generated data"; ], [ a doap-changeset:Change; rdfs:label "avoid given/when"; ], [ a doap-changeset:Addition; rdfs:label "add options --quiet --debug --trace (and deprecate now no-op option --no-verbose)"; ], [ a doap-changeset:Change; rdfs:label "logging: warn tersely on file decoding failure, and list error message as debug (not all as notice)"; ], [ a doap-changeset:Bugfix; rdfs:label "fix dumping of content tail"; ], [ a doap-changeset:Change; rdfs:label "logging: dump content as trace (not notice)"; ], [ a doap-changeset:Change; rdfs:label "logging: log files processed as debug, with decoding details (not tersely as trace)"; ], [ a doap-changeset:Change; rdfs:label "logging: warn about obsolete options using Log::Tiny (not using core warn)"; ], [ a doap-changeset:Change; rdfs:label "change option --skipped to use Log::Tiny (not core warn), and log as debug when not set"; ], [ a doap-changeset:Change; rdfs:label "logging: log fatal errors using Log::Tiny"; ], [ a doap-changeset:Tests; rdfs:label "enable debug output for encoding tests"; ], [ a doap-changeset:Tests; rdfs:label "rewrite Software::License tests to check against library"; ], [ a doap-changeset:Tests; rdfs:label "use only SPDX shortnames (not also debian shortnames) for Software::License and SPDX tests, and list only deviating entries"; ], [ a doap-changeset:Tests; rdfs:label "separate script report tests from devscripts.t"; ], [ a doap-changeset:Tests; rdfs:label "fix one devscripts TODO test"; ], [ a doap-changeset:Tests; rdfs:label "rewrite devscripts tests to use library"; ], [ a doap-changeset:Tests; rdfs:label "refactor to directly use App::Licensecheck (i.e. drop local module Test2::Licensecheck)"; ], [ a doap-changeset:Tests; rdfs:label "add tests reading only header and tail"; ], [ a doap-changeset:Change; rdfs:label "pass around File object (not path, content and (currently unused) offset in content)"; ], [ a doap-changeset:Change; rdfs:label "refactor to have slot $path in main class (not class File)"; ], [ a doap-changeset:Change; rdfs:label "refactor to merge local class File into main class"; ], [ a doap-changeset:Change; rdfs:label "refactor to hold semi-cleaned content (not cleaned-for-license-parsing) in slot $content"; ], [ a doap-changeset:Change; rdfs:label "have $fh $license $copyrights as slots (not local variables)"; ], [ a doap-changeset:Change; rdfs:label "merge method parse_lines() into parse_file(), and use $encoding slot (stop redefine as local variable)"; ], [ a doap-changeset:Change; rdfs:label "improve resolving offset"; ], [ a doap-changeset:Change; rdfs:label "refactor to read and decode files in method content()"; ], [ a doap-changeset:Bugfix; rdfs:label "catch decoding errors and retry as iso-8859-1 encoding"; ], [ a doap-changeset:Documentation; rdfs:label "update TODOs, and reformat as CommonMark"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.0"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.1"^^xsd:string; dc:issued "2023-01-03"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "tell Perl::Critic that Object::Pad implicitly enables strict and warnings"; ], [ a doap-changeset:Packaging; rdfs:label "tighten dependency on Pod::Usage to silence spurious 'used only once: possible typo' warning notably with perls older than 5.18"; ], [ a doap-changeset:Packaging; rdfs:label "unset executable bit on module file in source"; ], [ a doap-changeset:Documentation; rdfs:label "extend copyright to include present year"; ], [ a doap-changeset:Change; rdfs:label "refactor to iterate files in main script"; ], [ a doap-changeset:Change; rdfs:label "parse shortname schemes in main script, slightly simplifying modules"; ], [ a doap-changeset:Change; rdfs:label "have module methods return lists, and print to STDOUT in main script"; ], [ a doap-changeset:Change; rdfs:label "stop include path in log messages within method parse_license"; ], [ a doap-changeset:Change; rdfs:label "modernize class instantiations to use field and :param and ADJUST (not has and BUILD)"; ], [ a doap-changeset:Change; rdfs:label "use Object::Pad 0.74"; ], [ a doap-changeset:Tests; rdfs:label "simplify and generalize tests slightly"; ], [ a doap-changeset:Documentation; rdfs:label "improve synopsis"; ], [ a doap-changeset:Tests; rdfs:label "add author tests to check SYNOPSIS"; ], [ a doap-changeset:Change; rdfs:label "rename parameter shortname_scheme -> schemes, and validate"; ], [ a doap-changeset:Bugfix; rdfs:label "resolve naming schemes when listing licenses"; ], [ a doap-changeset:Change; rdfs:label "use Feature::Compat::Try (not Try::Tiny)"; ], [ a doap-changeset:Change; rdfs:label "use Feature::Compat::Class (not Object::Pad)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.1"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.2"^^xsd:string; dc:issued "2023-01-07"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "rewrite fedora tests"; ], [ a doap-changeset:Bugfix; rdfs:label "avoid silence warnings on older perls"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.2"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.3"^^xsd:string; dc:issued "2023-01-09"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "avoid silence warnings on older (but not too old) perls"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.3"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.4"^^xsd:string; dc:issued "2023-01-14"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "fix plan count to work on older perls"; ], [ a doap-changeset:Bugfix; rdfs:label "use warnings, no longer done in Feature::Compat::Class since v0.05"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.4"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.5"^^xsd:string; dc:issued "2023-01-15"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "externalize license resolving: use String::License"; ], [ a doap-changeset:Change; rdfs:label "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"; ], [ a doap-changeset:Change; rdfs:label "use Test2::Tools::Command (not Test::Command::Simple)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.5"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.6"^^xsd:string; dc:issued "2023-01-16"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "really use String::License"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.6"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.7"^^xsd:string; dc:issued "2023-01-17"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "test-require Test2::Tools::Command"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.7"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.8"^^xsd:string; dc:issued "2023-01-18"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "test-recommend String::Copyright 0.003009"; ], [ a doap-changeset:Tests; rdfs:label "skip test reading.t with too old String::Copyright"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.8"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.3.9"^^xsd:string; dc:issued "2023-07-04"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "log failure error before retry notice"; ], [ a doap-changeset:Change; rdfs:label "use Feature::Compat::Class after core features, to support newer perl; thanks to Jitka Plesníková and Graham Knop (see RT#148507)"; ], [ a doap-changeset:Tests; rdfs:label "relax stderr for a few encoding tests"; ], [ a doap-changeset:Bugfix; rdfs:label "fix: properly catch second decoding error, to try raw as fallback of both explicit and iso-8859-1 encoding (broken since v3.3.1)"; ], [ a doap-changeset:Tests; rdfs:label "skip encoding tests on cygwin"; ], [ a doap-changeset:Tests; rdfs:label "relax encoding tests to cover String::License v0.0.6"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.3.9"^^xsd:string. a foaf:Person; foaf:mbox , ; foaf:name "David Cantrell"; foaf:nick "DCANTRELL"; foaf:page . a foaf:Person; foaf:mbox , ; foaf:name "Jonas Smedegaard"; foaf:nick "JONASS"; foaf:page . a foaf:Person; foaf:nick "SCANTRELL"; foaf:page . a foaf:Person; foaf:mbox , ; foaf:name "Slaven Rezić"; foaf:nick "SREZIC"; foaf:page . a doap-bugs:Issue; doap-bugs:id "118007"^^xsd:string; doap-bugs:page . a doap-bugs:Issue; doap-bugs:id "12345"^^xsd:string; doap-bugs:page . a doap-bugs:Issue; doap-bugs:id "132139"^^xsd:string; doap-bugs:page . foaf:mbox ; foaf:name "Axel Beckert". foaf:mbox ; foaf:name "David Bremner". foaf:mbox ; foaf:name "Adrian Bunk". foaf:mbox ; foaf:name "Vasudev Kamath". foaf:mbox ; foaf:name "Dominique Dumont". foaf:mbox ; foaf:name "Paul Gevers". foaf:mbox ; foaf:name "Gregor Hermann". foaf:mbox ; foaf:name "Paul Wise". foaf:mbox ; foaf:name "Stuart Prescott". dc:title "GNU Affero General Public License version 3 or newer.". foaf:mbox ; foaf:name "Sandro Mani". licensecheck000644001750001750 3532314451001241 17632 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9/bin#!perl use v5.12; use utf8; use open qw(:locale); use warnings; use autodie; =head1 NAME licensecheck - simple license checker for source files =head1 VERSION Version v3.3.9 =head1 SYNOPSIS licensecheck [ --help | --version ] licensecheck [ --list-licenses | --list-naming-schemes ] licensecheck [OPTION...] PATH [PATH...] =head1 DESCRIPTION B attempts to determine the license that applies to each file passed to it, by searching the start of the file for text belonging to various licenses. If any of the arguments passed are directories, B will add the files contained within to the list of files to process. When multiple Fs are provided, only files matching B<--check> and not B<--ignore> are checked. =cut use Getopt::Long 2.24 qw(:config gnu_getopt); use IO::Interactive qw(is_interactive); my $USE_COLOR; BEGIN { $USE_COLOR = !( exists $ENV{NO_COLOR} or ( $ENV{COLOR} and !$ENV{COLOR} ) or !is_interactive ); $Pod::Usage::Formatter = 'Pod::Text::Color' if $USE_COLOR; } use Pod::Usage 1.60; my $COPYRIGHT; use Pod::Constants -trim => 1, 'COPYRIGHT AND LICENSE' => sub { ($COPYRIGHT) = s/C<< (.*) >>/$1/gr; $COPYRIGHT =~ s/©/©/g }; use String::License::Naming::Custom; use Path::Tiny; use Path::Iterator::Rule; use String::Escape qw(unbackslash); use List::Util 1.45 qw(uniqstr); use Log::Any qw($log); use Log::Any::Adapter; use App::Licensecheck; our $VERSION = 'v3.3.9'; my $progname = path($0)->basename; our %OPT = (); my @OPT = (); =head1 OPTIONS =head2 Resolving patterns =over 16 =item B<--shortname-scheme> I comma-separated priority list of license naming schemes to use for license identifiers S<(default value: unset (use verbose description))> =item B<--list-licenses> I list identifiers for all detectable licenses and exit =item B<--list-naming-schemes> I list all available license naming schemes and exit =back =cut push @OPT, qw( shortname-scheme=s list-licenses list-naming-schemes ); =head2 Selecting files =over 16 =item B<-c> I, B<--check>=I I regular expression of files to include when more than one F is provided S<(default value: common source files)> =item B<-i> I, B<--ignore>=I I regular expression of files to skip when more than one F is provided S<(default value: some backup and VCS files)> =item B<-r>, B<--recursive> I traverse directories recursively =back =cut push @OPT, qw( check|c=s ignore|i=s recursive|r ); $OPT{check} = 'common source files'; $OPT{ignore} = 'some backup and VCS files'; =head2 Parsing contents =over 16 =item B<-l> I, B<--lines>=I I number of lines to parse from top of each file; implies optimistic search including only first cluster of detected copyrights or licenses; set to I<0> to parse the whole file (and ignore B<--tail>) S<(default value: I<60>)> =item B<--tail>=I I number of bytes to parse from bottom of each file when parsing only from top of each file and finding nothing there; set to 0 to avoid parsing from end of file (or set B<--lines> to I<0> and ignore this setting) S<(default value: 5000 (roughly 60 lines))> =item B<-e> I, B<--encoding>=I I try decode source files from the specified codec, with C as fallback S<(default value: unset (no decoding))> =back =cut push @OPT, qw( lines|l=i tail=i encoding|e=s ); $OPT{lines} = 60; $OPT{tail} = 5000; =head2 Reporting results =over 16 =item B<--copyright> I add copyright statements to license information =item B<-s>, B<--skipped> I Log files in Fs matching neither B<--check> nor B<--ignore> as warnings S<(default: log as debug)> =item B<-m>, B<--machine> I print license information as C-separated fields, for processing with line-oriented tools like C and C =item B<--[no-]deb-machine> I print license information like a Debian copyright file; implies B<--copyright> and B<--shortname-scheme>=I =item B<--list-delimiter>=I I printf-string used between multiple plain list items in Debian copyright file S<(default value: I<'\n '> (NEWLINE SPACE))> =item B<--rfc822-delimiter>=I I printf-string used between multiple RFC822-style items in Debian copyright file S<(default value: I<'\n '> (NEWLINE SPACE SPACE))> =item B<--copyright-delimiter>=I I printf-string used between years and owners in Debian copyright file S<(default value: I<', '> (COMMA SPACE))> =item B<--[no-]merge-licenses> I merge same-licensed files in Debian copyright file =back =cut push @OPT, qw( copyright skipped|s machine|m deb-machine! list-delimiter=s rfc822-delimiter=s copyright-delimiter=s merge-licenses! ); $OPT{'list-delimiter'} = '\n '; $OPT{'rfc822-delimiter'} = '\n '; $OPT{'copyright-delimiter'} = ', '; =head2 General =over 16 =item B<-h>, B<--help> print help message and exit =item B<-v>, B<--version> print version and copyright information and exit =item B<--quiet>, B<--verbose>, B<--debug>, B<--trace> I Emit only error messages to STDERR (with option B<--quiet>), or (in addition errors and warnings) also notices/debug/traces. The more "noisy" option wins if several are set. S<(default: emit errors and warnings> =back =cut push @OPT, qw( help|h version|v quiet verbose debug trace ); # deprecated push @OPT, qw( deb-fmt! ); # obsolete push @OPT, qw( text|t noconf|no-conf no-verbose ); GetOptions( \%OPT, @OPT ) or pod2usage(2); if ( $OPT{trace} ) { Log::Any::Adapter->set( 'Screen', use_color => $USE_COLOR, default_level => 'trace' ); } elsif ( $OPT{debug} ) { Log::Any::Adapter->set( 'Screen', use_color => $USE_COLOR, default_level => 'debug' ); } elsif ( $OPT{verbose} ) { Log::Any::Adapter->set( 'Screen', use_color => $USE_COLOR, default_level => 'info' ); } elsif ( $OPT{quiet} ) { Log::Any::Adapter->set( 'Screen', use_color => $USE_COLOR, default_level => 'error' ); } else { Log::Any::Adapter->set( 'Screen', use_color => $USE_COLOR ); } pod2usage(1) if ( $OPT{help} ); if ( $OPT{version} ) { version(); exit 0; } my @schemes; if ( $OPT{'shortname-scheme'} ) { @schemes = split /[\s,]+/, $OPT{'shortname-scheme'}; } elsif ($OPT{'deb-machine'} || $OPT{'deb-fmt'} || $OPT{'list-licenses'} || $OPT{'list-naming-schemes'} ) { @schemes = qw(debian spdx); } # TODO: skip when future option '--strict-schemes' is enabled push @schemes, 'internal' if @schemes; my $naming; if (@schemes) { $naming = String::License::Naming::Custom->new( schemes => \@schemes ); } else { $naming = String::License::Naming::Custom->new( schemes => \@schemes ); } if ( $OPT{'list-licenses'} ) { say for $naming->list_licenses; exit 0; } if ( $OPT{'list-naming-schemes'} ) { say for $naming->list_schemes; exit 0; } if ( $OPT{text} ) { $log->warn('option -text ignored: obsolete'); # since 2015 } if ( $OPT{noconf} ) { $log->warn('option --no-conf ingored: obsolete'); # since 2016 } if ( $OPT{noverbose} ) { $log->warn('option --no-verbose ignored: obsolete'); # since 2021 } pod2usage("$progname: No paths provided.") unless @ARGV; my $app = App::Licensecheck->new( # parse top_lines => $OPT{lines}, end_bytes => $OPT{tail}, encoding => $OPT{encoding}, # report naming => $naming, ); my $default_check_regex = q! /[\w-]+$ # executable scripts or README like file |\.( # search for file suffix c(c|pp|xx)? # c and c++ |h(h|pp|xx)? # header files for c and c++ |S |css|less # HTML css and similar |f(77|90)? |go |groovy |lisp |scala |clj |p(l|m)?6?|t|xs|pod6? # perl5 or perl6 |sh |php |py(|x) |rb |java |js |vala |el |sc(i|e) |cs |pas |inc |dtd|xsl |mod |m |md|markdown |tex |mli? |(c|l)?hs )$ !; # From dpkg-source my $default_ignore_regex = q! # Ignore general backup files ~$| # Ignore emacs recovery files (?:^|/)\.#| # Ignore vi swap files (?:^|/)\..*\.swp$| # Ignore baz-style junk files or directories (?:^|/),,.*(?:$|/.*$)| # File-names that should be ignored (never directories) (?:^|/)(?:DEADJOE|\.cvsignore|\.arch-inventory|\.bzrignore|\.gitignore)$| # File or directory names that should be ignored (?:^|/)(?:CVS|RCS|\.pc|\.deps|\{arch\}|\.arch-ids|\.svn|\.hg|_darcs|\.git| \.shelf|_MTN|\.bzr(?:\.backup|tags)?)(?:$|/.*$) !; my $check_regex = $OPT{check}; if ( !$check_regex or $check_regex eq 'common source files' ) { $check_regex = qr/$default_check_regex/x; } else { $check_regex = qr/$check_regex/; } my $ignore_regex = $OPT{ignore}; if ( !$ignore_regex or $ignore_regex eq 'some backup and VCS files' ) { $ignore_regex = qr/$default_ignore_regex/x; } else { $ignore_regex = qr/$ignore_regex/; } my %patternfiles; my %patternownerlines; my %patternlicense; my @paths = @ARGV; my $do = Path::Iterator::Rule->new; my %options = ( follow_symlinks => 0, ); $do->max_depth(1) unless $OPT{recursive}; $do->not( sub {/$ignore_regex/} ); $do->file->nonempty; if ( @paths >> 1 ) { if ( $log->is_debug or $OPT{skipped} && $log->is_warn ) { my $dont = $do->clone->not( sub {/$check_regex/} ); foreach ( $dont->all( @paths, \%options ) ) { if ( $OPT{skipped} ) { $log->warnf( 'skipped file %s', $_ ); } else { $log->debugf( 'skipped file %s', $_ ); } } } $do->and( sub {/$check_regex/} ); } foreach my $file ( $do->all( @paths, \%options ) ) { my ( $license, $copyright ) = $app->parse($file); # drop duplicates my @copyrights = uniqstr sort { $b cmp $a } split /^/, $copyright; chomp @copyrights; if ( $OPT{'deb-machine'} ) { my @ownerlines_clean = (); my %owneryears = (); my $owneryears_seem_correct = 1; for my $ownerline (@copyrights) { my ( $owneryear, $owner ) = $ownerline =~ /^(\d{4}(?:(?:-|, )\d{4})*)? ?(\S.*)?/; $owneryears_seem_correct = 0 unless ($owneryear); $owner =~ s/,?\s+All Rights Reserved\.?//gi if ($owner); push @ownerlines_clean, join unbackslash( $OPT{'copyright-delimiter'}, ), $owneryear || (), $owner || (); push @{ $owneryears{ $owner || '' } }, $owneryear; } my @owners = sort keys %owneryears; @owners = () if ( $OPT{'merge-licenses'} and $owneryears_seem_correct ); my $pattern = join( "\n", $license, @owners ); push @{ $patternfiles{"$pattern"} }, $file; push @{ $patternownerlines{"$pattern"} }, @ownerlines_clean; $patternlicense{"$pattern"} = $license; } elsif ( $OPT{machine} ) { print "$file\t$license"; print "\t" . ( join( " / ", @copyrights ) or '*No copyright*' ) if $OPT{copyright}; print "\n"; } else { print "$file: "; print '*No copyright* ' unless @copyrights; print $license . "\n"; print ' [Copyright: ' . join( ' / ', @copyrights ) . "]\n" if @copyrights and $OPT{copyright}; print "\n" if $OPT{copyright}; } } if ( $OPT{'deb-machine'} ) { print <<'HEADER'; Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: FIXME Upstream-Contact: FIXME Source: FIXME Disclaimer: Autogenerated by licensecheck HEADER foreach my $pattern ( sort { @{ $patternfiles{$b} } <=> @{ $patternfiles{$a} } || $a cmp $b } keys %patternfiles ) { my @ownerlines_unique = uniqstr sort @{ $patternownerlines{$pattern} }; @ownerlines_unique = ('NONE') unless (@ownerlines_unique); print 'Files: ', join( unbackslash( $OPT{'list-delimiter'}, ), sort @{ $patternfiles{$pattern} } ), "\n"; print 'Copyright: ', join( unbackslash( $OPT{'rfc822-delimiter'}, ), @ownerlines_unique ), "\n"; print "License: $patternlicense{$pattern}\n FIXME\n\n"; } } =head1 ENVIRONMENT =over 6 =item NO_COLOR If defined, will disable color. Consulted before COLOR. =item COLOR Can be set to 0 to explicitly disable colors. The default is to use color when connected to a terminal. =item LOG_LEVEL =item QUIET =item VERBOSE =item DEBUG =item TRACE Used to emit varying details about discoveries to STDERR when verbosity is not set using either of options B<--quiet>, B<--verbose>, B<--debug> or B<--trace>. See L for more details. =item LOG_PREFIX The default formatter groks these variables. See B in L for more details. =back =head1 CAVEATS The exact output may change between releases, due to the inherently fragile scanning of unstructured data, and the ongoing improvements to detection patterns. For some level of stability, use one of the machine-readable output formats and define a B<--shortname-scheme>. Option B<--deb-fmt> was deprecated since v3.2. Please use option B<--shortname-scheme>=I instead. =cut sub version { print <<"EOF"; This is $progname version $VERSION $COPYRIGHT EOF } =head1 SEE ALSO Other similar tools exist. Here is a list of known tools also command-line based and general-purpose: =over 16 =item L Written in Perl. =item L Written in Python. Specific to Debian packages. =item L Written in Python. =item L Written in Ruby. =item L Written in Ruby. =item L Written in C++. Used in L (along with Monk and Nomos apparently unavailable as standalone command-line tools). =item L Written in Go. =item L Written in Python. =back =encoding UTF-8 =head1 AUTHOR Jonas Smedegaard C<< >> =head1 COPYRIGHT AND LICENSE This program is based on the script "licensecheck" from the KDE SDK, originally introduced by Stefan Westerfeld C<< >>. Copyright © 2007, 2008 Adam D. Barratt Copyright © 2012 Francesco Poli Copyright © 2016-2022 Jonas Smedegaard Copyright © 2017-2022 Purism SPC This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . =cut licensecheck.bash_completion000644001750001750 214414451001241 23671 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9/scripts# /usr/share/bash-completion/completions/licensecheck # Bash command completion for ‘licensecheck(1)’. # Documentation: ‘bash(1)’, section “Programmable Completion”. # Copyright © 2015, Nicholas Bamber _licensecheck() { local cur prev words cword i _options special _prefix _init_completion || return case $prev in --tail) COMPREPLY=( $( compgen -W '0 1000 2000 3000' -- "$cur" ) ) return 0 ;; --lines) COMPREPLY=( $( compgen -W '120 200 300 400' -- "$cur" ) ) return 0 ;; esac if [[ "$cur" == -* ]]; then _options='--verbose --no-verbose --lines --ignore --recursive --tail --check --copyright --machine --skipped' COMPREPLY=( $( compgen -W "${_options}" -- "$cur" ) ) else COMPREPLY=( $( compgen -o filenames -f -- "$cur" ) ) fi return 0 } && complete -F _licensecheck licensecheck # Local variables: # coding: utf-8 # mode: shell-script # indent-tabs-mode: nil # End: # vim: fileencoding=utf-8 filetype=sh expandtabs shiftwidth=4 : 20-script-encoding.t000644001750001750 1507514451001241 20460 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9/tuse Test2::V0 -no_pragmas => 1; use Test2::Tools::Command; use lib 't/lib'; use Test2::Require::WorkingUtf8; use warnings; use strict; use Encode::Locale; use Encode 2.12 qw(decode encode); use Path::Tiny 0.053; if ( $Encode::Locale::ENCODING_LOCALE ne 'UTF-8' ) { skip_all "locale encoding is $Encode::Locale::ENCODING_LOCALE - we need UTF-8"; } # TODO: expect only "resolved", and require String::License v0.0.6 plan 13; diag 'locale encoding: ', $Encode::Locale::ENCODING_LOCALE; local @Test2::Tools::Command::command = ( $^X, 'bin/licensecheck' ); if ( $ENV{'LICENSECHECK'} ) { @Test2::Tools::Command::command = ( $ENV{'LICENSECHECK'} ); } elsif ( path('blib')->exists ) { @Test2::Tools::Command::command = ('blib/script/licensecheck'); } push @Test2::Tools::Command::command, qw(--machine --debug --copyright); my $basic = "t/encoding/copr-utf8.h\tGNU General Public License v2.0 or later\t2004-2015 Oliva 'f00' Oberto / 2001-2010 Paul 'bar' Stevénsön\n"; my $basic_utf8 = encode( 'utf8', $basic ); my $basic_utf8_as_latin1 = decode( 'iso-8859-1', encode( 'utf8', $basic ) ); my $extended = "t/encoding/copr-iso8859.h\tGNU General Public License, Version 2 [obsolete FSF postal address (Temple Place)]\t2011 Heinrich Müller \n"; my $extended_latin1 = encode( 'iso-8859-1', $extended ); my $japanese = "t/encoding/README.gs550j\tUNKNOWN\t1999 大森紀人 (ohmori\@p.chiba-u.ac.jp) / 1999 Norihito Ohmori. / 1996-1999 Daisuke SUZUKI.\n"; # TODO: generate japanese mojibake my $japanese_ujis_as_latin1 = "t/encoding/README.gs550j\tUNKNOWN\t1999 Â翹µª¿Í (ohmori\@p.chiba-u.ac.jp) / 1999 Norihito Ohmori. / 1996-1999 Daisuke SUZUKI.\n"; my $japanese_ujis_raw = $japanese_ujis_as_latin1; utf8::upgrade($japanese_ujis_raw); subtest 'Latin-1 in UTF-8 parsed as UTF-8 returns chars' => sub { command { args => [qw(--encoding utf8 t/encoding/copr-utf8.h)], stdout => $basic, stderr => qr/ as utf8\nheader end matches file size\n(?:collected|resolved)/, }; }; subtest 'Latin-1 in UTF-8 parsed by default returns mojibake' => sub { command { args => [qw(t/encoding/copr-utf8.h)], stdout => qr//, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; my $todo = todo 'String::Copyright documented to accept only strings'; command { args => [qw(t/encoding/copr-utf8.h)], stdout => $basic_utf8_as_latin1, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; $todo = undef; }; subtest 'Latin-1 in UTF-8 parsed by guessing returns chars' => sub { command { args => [qw(--encoding Guess t/encoding/copr-utf8.h)], stdout => qr//, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; my $todo = todo 'String::Copyright documented to accept only strings'; command { args => [qw(--encoding Guess t/encoding/copr-utf8.h)], stdout => $basic_utf8_as_latin1, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; $todo = undef; }; subtest 'Latin-1 in UTF-8 parsed as ISO 8859-1 returns mojibake' => sub { command { args => [qw(--encoding iso-8859-1 t/encoding/copr-utf8.h)], stdout => $basic_utf8_as_latin1, stderr => qr/ as iso-8859-1\nheader end matches file size\n(?:collected|resolved)/, }; }; subtest 'Latin-1 in ISO 8859-1 parsed as ISO 8859-1 returns chars' => sub { command { args => [qw(--encoding iso-8859-1 t/encoding/copr-iso8859.h)], stdout => $extended, stderr => qr/ as iso-8859-1\nheader end matches file size\n(?:collected|resolved)/, }; }; subtest 'Latin-1 in ISO 8859-1 parsed by default returns chars' => sub { command { args => [qw(t/encoding/copr-iso8859.h)], stdout => qr//, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; my $todo = todo 'String::Copyright documented to accept only strings'; command { args => [qw(t/encoding/copr-iso8859.h)], stdout => $extended, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; $todo = undef; }; subtest 'Latin-1 in ISO 8859-1 parsed by guessing returns chars' => sub { command { args => [qw(--encoding Guess t/encoding/copr-iso8859.h)], stdout => qr//, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; my $todo = todo 'String::Copyright documented to accept only strings'; command { args => [qw(--encoding Guess t/encoding/copr-iso8859.h)], stdout => $extended, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; $todo = undef; }; subtest 'Latin-1 in ISO 8859-1 parsed as UTF-8 returns chars and warns' => sub { command { args => [qw(--encoding utf8 t/encoding/copr-iso8859.h)], stdout => $extended, stderr => qr/failed decoding/, }; }; subtest 'CJK in EUC-JP parsed as EUC-JP returns chars' => sub { command { args => [qw(--encoding euc-jp t/encoding/README.gs550j)], stdout => $japanese, stderr => qr/ as euc-jp\nheader end matches file size\n(?:collected|resolved)/, }; }; subtest 'CJK in EUC-JP parsed by default returns mojibake and warns' => sub { command { args => [qw(t/encoding/README.gs550j)], stdout => qr//, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; my $todo = todo 'String::Copyright documented to accept only strings'; command { args => [qw(t/encoding/README.gs550j)], stdout => $japanese_ujis_as_latin1, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; $todo = undef; }; subtest 'CJK in EUC-JP parsed by guessing returns mojibake' => sub { command { args => [qw(--encoding Guess t/encoding/README.gs550j)], stdout => qr//, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; my $todo = todo 'String::Copyright documented to accept only strings'; command { args => [qw(--encoding Guess t/encoding/README.gs550j)], stdout => $japanese_ujis_as_latin1, stderr => qr/ as raw bytes\nheader end matches file size\n(?:collected|resolved)/, }; $todo = undef; }; subtest 'CJK in EUC-JP parsed as ISO 8859-1 returns mojibake' => sub { command { args => [qw(--encoding iso-8859-1 t/encoding/README.gs550j)], stdout => $japanese_ujis_as_latin1, stderr => qr/ as iso-8859-1\nheader end matches file size\n(?:collected|resolved)/, }; }; subtest 'CJK in EUC-JP parsed as UTF-8 returns mojibake and warns' => sub { command { args => [qw(--encoding utf8 t/encoding/README.gs550j)], stdout => $japanese_ujis_raw, stderr => qr/failed decoding/, }; }; done_testing; 20-script-report.t000644001750001750 174014451001241 20157 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9/tuse Test2::V0; use Test2::Require::Module 'Regexp::Pattern::License' => '3.7.0'; use Test2::Tools::Command; use Path::Tiny 0.053; plan 3; my @CMD = ( $^X, 'bin/licensecheck' ); if ( $ENV{'LICENSECHECK'} ) { @CMD = ( $ENV{'LICENSECHECK'} ); } elsif ( path('blib')->exists ) { @CMD = ('blib/script/licensecheck'); } local @Test2::Tools::Command::command = @CMD; subtest 'machine-readable output; short-form option' => sub { command { args => [qw(-m t/devscripts/beerware.cpp)], stdout => qr{Beerware License}, stderr => '', }; }; subtest 'machine-readable output; long-form option' => sub { command { args => [qw(--machine t/devscripts/gpl-2)], stdout => qr{GNU General Public License, Version 2$}, stderr => '', }; }; subtest 'machine-readable output w/ copyright' => sub { command { args => [qw(-m --copyright t/devscripts/gpl-2)], stdout => qr{GNU General Public License, Version 2\t2012 Devscripts developers\n$}, stderr => '', }; }; done_testing; 20-script-resolve.t000644001750001750 247314451001241 20327 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9/tuse Test2::V0; use Test2::Require::Module 'Regexp::Pattern::License' => '3.7.0'; use Test2::Tools::Command; use Path::Tiny 0.053; plan 4; my @CMD = ( $^X, 'bin/licensecheck' ); if ( $ENV{'LICENSECHECK'} ) { @CMD = ( $ENV{'LICENSECHECK'} ); } elsif ( path('blib')->exists ) { @CMD = ('blib/script/licensecheck'); } local @Test2::Tools::Command::command = @CMD; subtest '--help, ignoring earlier --list-licenses' => sub { my ( $result, $exit_status, $stdout_ref, $stderr_ref ) = command { args => [qw(--list-licenses --help)], stdout => qr/\Q[OPTION...\E/, stderr => '', status => 1, }; unlike $stdout_ref, qr/^WTFPL-1\.0$/m, 'stdout does not contain WTFPL-1.0'; }; subtest '--help, ignoring later --list-licenses' => sub { my ( $result, $exit_status, $stdout_ref, $stderr_ref ) = command { args => [qw(--help --list-licenses)], stdout => qr/\Q[OPTION...\E/, stderr => '', status => 1, }; unlike $stdout_ref, qr/^WTFPL-1\.0$/m, 'stdout does not contain WTFPL-1.0'; }; subtest '--list-licenses' => sub { command { args => [qw(--list-licenses foobar.txt)], stdout => qr/^WTFPL-1\.0$/m, stderr => '', }; }; subtest '--list-licenses, ignoring paths' => sub { command { args => [qw(--list-licenses foobar.txt my/baz.xml)], stdout => qr/^WTFPL-1\.0$/m, stderr => '', }; }; done_testing; devscripts.t000644001750001750 367114451001241 17316 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9/tuse Test2::V0; use Test2::Require::Module 'Regexp::Pattern::License' => '3.7.0'; use String::License::Naming; use App::Licensecheck; plan 10; my $naming = String::License::Naming::SPDX->new; my @opts = ( naming => $naming, top_lines => 0, ); my $todo; sub parse { my ($path) = @_; my ( $license, $copyright ) = App::Licensecheck->new(@opts)->parse($path); return wantarray ? ( $license, $copyright ) : $license; } like [ parse('t/devscripts/bsd-regents.c') ], array { item 'BSD-3-Clause'; item qr{1987, 1993.*1994 The Regents of the University of California.}; }, 'copyright declared on 2 lines'; like [ parse('t/devscripts/texinfo.tex') ], array { item 'GPL-3.0-or-later'; item qr{1985.*2012 Free Software Foundation, Inc.}; }, 'copyright declared on 3 lines'; $todo = todo 'unsupported by String::Copyright (Debian bug#519080)'; like [ parse('t/devscripts/multi-line-copyright.c') ], array { item 'GPL-3 and/or public-domain'; item qr{2008 Aaron Plattner, NVIDIA Corporation}; }, 'multi-line multi-statements'; $todo = undef; like [ parse('t/grant/Apache/one_helper.rb') ], array { item 'Apache-2.0'; item qr{2002-2015,? OpenNebula Project \(OpenNebula.org\), C12G Labs}; }, 'Duplicated copyright'; like [ parse('t/devscripts/dual.c') ], array { item 'GPL-3 and/or public-domain'; item '2012 Devscripts developers'; }, 'Duplicated copyright'; like [ parse('t/devscripts/bsd.f') ], array { item 'BSD-2-Clause'; }, 'Fortran comments'; like [ parse('t/devscripts/comments-detection.h') ], array { item 'GPL-3.0-or-later'; }, 'comments; C++ inline style'; like [ parse('t/devscripts/comments-detection.txt') ], array { item 'LGPL-2.1-or-later'; }, 'comments; hash style'; like [ parse('t/devscripts/false-positives') ], array { item 'public-domain'; item '2013 Devscripts developers'; }, 'false positives'; unlike parse('t/devscripts/info-at-eof.h'), qr{notice and this}, 'does not capture non-copyright string at end'; done_testing; reading.t000644001750001750 575714451001241 16550 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9/tuse Test2::V0; use Test2::Require::Module 'Regexp::Pattern::License' => '3.9.0'; use Test2::Require::Module 'String::Copyright' => '0.003009'; use Log::Any::Test; use Log::Any qw($log); use String::License::Naming::Custom; use App::Licensecheck; plan 14; my $naming = String::License::Naming::Custom->new( schemes => [qw(debian spdx internal)] ); my @defaults = ( naming => $naming, top_lines => 10, ); my @short_tail = ( @defaults, end_bytes => 10, ); my $only_at_end = 't/devscripts/artistic-2-0-modules.pm'; my $at_end = 't/devscripts/info-at-eof.h'; my $complex_tail = 't/exception/Bison/grammar.cxx'; my $complex = 't/exception/Cecill/tv_implementpoly.reference'; sub parse { my ( $path, @opts ) = @_; @opts = @defaults unless @opts; my ( $license, $copyright ) = App::Licensecheck->new(@opts)->parse($path); return wantarray ? ( $license, $copyright ) : $license; } sub msgs { return map { $_->{message} } @{ $log->msgs }; } sub some_msgs { return [ grep {/^(?:header|tail|-----)/} msgs() ]; } is [ parse($only_at_end) ], [ 'Artistic-2.0', '2009 Moritz Lenz and the SVG::Plot contributors (see file' ], 'Detected trailing Artistic license and owner'; is some_msgs(), [ match qr/label-font-size;\n----- end header -----$/s, 'tail offset set to 2498', match qr/^----- tail -----\n\};\n/s, ], 'logs', msgs(); $log->clear; is [ parse($at_end) ], [ 'Expat', '1994-2012 Lua.org, PUC-Rio.' ], 'Detected trailing Expat license and owner'; is some_msgs(), [ match qr/#define lua_h\n----- end header -----$/s, 'tail offset set to 7131', match qr/^----- tail -----\n\(lua_State /s, ], 'logs', msgs(); $log->clear; is [ parse($complex_tail) ], [ 'MPL-2.0', '' ], 'Missed complex licensing and owner'; is some_msgs(), [ match qr/notice:\n \*\n----- end header -----$/s, 'tail offset set to 13328', ], 'logs', msgs(); $log->clear; is [ parse($complex) ], [ 'CECILL-C with Sollya-4.1 exception', '2006-2018' ], 'Missed owner at top'; is some_msgs(), [ match qr/exception below\.\n----- end header -----$/s, 'tail offset set to 669 (end of header)', match qr/^----- tail -----\n Sollya is\n/s, ], 'logs', msgs(); $log->clear; is [ parse( $only_at_end, @short_tail ) ], [ 'UNKNOWN', '' ], 'Missed trailing Artistic license and owner'; is some_msgs(), [ match qr/label-font-size;\n----- end header -----$/s, 'tail offset set to 7488', match qr/^----- tail -----\n ft=perl6/s, ], 'logs', msgs(); $log->clear; is [ parse( $at_end, @short_tail ) ], [ 'UNKNOWN', '' ], 'Missed trailing Expat license and owner'; is some_msgs(), [ match qr/#define lua_h\n----- end header -----$/s, 'tail offset set to 12121', match qr/^----- tail -----\n\n\n\n#endif/s, ], 'logs', msgs(); $log->clear; is [ parse( $complex, @short_tail ) ], [ 'UNKNOWN', '' ], 'Missed owner at top and complex licensing at end'; is some_msgs(), [ match qr/exception below\.\n----- end header -----$/s, 'tail offset set to 4899', match qr/^----- tail -----\n\.\n/s, ], 'logs', msgs(); done_testing; Licensecheck.pm000644001750001750 2313314451001241 20717 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9/lib/Appuse v5.12; use utf8; use warnings; use autodie; use Feature::Compat::Class 0.04; =head1 NAME App::Licensecheck - functions for a simple license checker for source files =head1 VERSION Version v3.3.9 =head1 SYNOPSIS use Path::Tiny; use App::Licensecheck; my $tempfile = Path::Tiny->tempfile; $tempfile->spew(<new( top_lines => 0 ); # Parse whole files my @output = $app->parse($tempfile); my $license = $output[0]; # => is "GPL-2.0-or-later" my $copyrights = $output[1]; # => is "2020, 2022 Foo Bar." =head1 DESCRIPTION L is the core of L script to check for licenses of source files. See the script for casual usage. =cut package App::Licensecheck v3.3.9; class App::Licensecheck; use Carp qw(croak); use Log::Any (); use Scalar::Util qw(blessed); use Path::Tiny(); use Feature::Compat::Try; use Fcntl qw(:seek); use Encode 2.93; use String::Copyright 0.003 { format => sub { join ' ', $_->[0] || (), $_->[1] || () } }; use String::Copyright 0.003 { threshold_after => 5, format => sub { join ' ', $_->[0] || (), $_->[1] || () }, }, 'copyright' => { -as => 'copyright_optimistic' }; use String::License; use String::License::Naming::SPDX; use namespace::clean qw(-except new); # fatalize Unicode::UTF8 and PerlIO::encoding decoding errors use warnings FATAL => 'utf8'; $PerlIO::encoding::fallback = Encode::FB_CROAK; no if ( $] >= 5.034 ), warnings => "experimental::try"; field $log; field $path; # resolve patterns field $naming :param = undef; # parse field $top_lines :param //= 60; field $end_bytes :param //= 5000; # roughly 60 lines of 80 chars field $encoding :param = undef; field $fh; field $content :param = undef; field $tail_content; field $offset; field $license; field $copyrights; ADJUST { $log = Log::Any->get_logger; if ( defined $naming ) { croak $log->fatal( 'parameter "naming" must be a String::License::Naming object') unless defined blessed($naming) and $naming->isa('String::License::Naming'); } else { $naming = String::License::Naming::SPDX->new; } if ( $encoding and not ref($encoding) eq 'OBJECT' ) { $encoding = find_encoding($encoding); } } method parse { ($path) = @_; $path = Path::Tiny::path($path); try { return $self->parse_file; } catch ($e) { if ( $encoding and $e =~ /does not map to Unicode/ ) { $log->debugf( 'decoding error: %s', $e ); $log->warnf( 'failed decoding file %s as %s, will try iso-8859-1', $path, $encoding->name ); try { $encoding = find_encoding('iso-8859-1'); return $self->parse_file; } catch ($e) { if ( $e =~ /does not map to Unicode/ ) { $log->debugf( 'decoding error: %s', $e ); $log->warnf( 'failed decoding file %s as iso-8859-1, will try raw', $path ); $encoding = undef; return $self->parse_file; } else { die $log->fatalf( 'unknown error: %s', $e ); } } } else { die $log->fatalf( 'unknown error: %s', $e ); } } } method parse_file { # TODO: stop reuse slots across files, and drop this hack $content = undef; $license = undef; $copyrights = undef; if ( $top_lines == 0 ) { my $licensed = String::License->new( string => $self->content_extracleaned, naming => $naming, ); $license = $licensed->as_text; $copyrights = copyright( $self->content_cleaned ); } else { my $licensed = String::License->new( string => $self->content_extracleaned, naming => $naming, ); $license = $licensed->as_text; $copyrights = copyright_optimistic( $self->content_cleaned ); if ( $offset and not $copyrights and $license eq 'UNKNOWN' ) { # TODO: stop reuse slots across files, and drop this hack $tail_content = undef; my $licensed = String::License->new( string => $self->content_extracleaned, naming => $naming, ); $license = $licensed->as_text; $copyrights = copyright_optimistic( $self->content_cleaned ); } $fh->close; } return ( $license, $copyrights ); } method content { if ( $top_lines == 0 ) { return $content if defined($content); if ( not defined($encoding) ) { $log->debugf( 'reading whole file %s as raw bytes', $path ); $content = $path->slurp_raw; } else { my $id = $encoding->name; $log->debugf( 'decoding whole file %s as %s', $path, $id ); $content = $path->slurp( { binmode => ":encoding($id)" } ); } $log->trace("----- content -----\n$content----- end content -----") if $log->is_trace; } elsif ( not defined($license) or not defined($copyrights) ) { # TODO: distinguish header from full content return $content if defined($content); $content = ''; if ( not defined($encoding) ) { $log->debugf( 'reading part(s) of file %s as raw bytes', $path ); $fh = $path->openr_raw; } else { my $id = $encoding->name; $log->debugf( 'decoding part(s) of file %s as %s', $path, $id ); $fh = $path->openr(":encoding($id)"); } while ( my $line = $fh->getline ) { last if ( $fh->input_line_number > $top_lines ); $content .= $line; } $log->trace("----- header -----\n$content----- end header -----") if $log->is_trace; if ($end_bytes) { my $position = $fh->tell; # see IO::Seekable my $filesize = $path->stat->size; if ( $position >= $filesize - $end_bytes ) { # header overlaps if ( $position < $filesize ) { $log->debugf( 'tail offset set to %s (end of header)', $position ); $offset = $position; } elsif ( $position = $filesize ) { $log->debug('header end matches file size'); $offset = 0; } else { $log->error('header end beyond file size'); $offset = 0; } } elsif ( $position > 0 ) { $offset = $filesize - $end_bytes; $log->debugf( 'tail offset set to %s', $offset ); } elsif ( $position < 0 ) { $log->error('header end could not be resolved'); $offset = 0; } else { $log->error('header end oddly at beginning of file'); $offset = 0; } } } elsif ($offset) { # TODO: distinguish tail from full content return $content if defined($tail_content); $tail_content = ''; $fh->seek( $offset, SEEK_SET ); # see IO::Seekable $tail_content .= join( '', $fh->getlines ); $log->trace("----- tail -----\n$tail_content----- end tail -----") if $log->is_trace; $content = $tail_content; } else { $log->errorf( 'tail offset not usable: %s', $offset ); return ''; } # TODO: distinguish comment-mangled content from pristine content local $_ = $content or return ''; # Remove generic comments: look for 4 or more lines beginning with # regular comment pattern and trim it. Fall back to old algorithm # if no such pattern found. my @matches = m/^[ \t]*([^a-zA-Z0-9\s]{1,3})[ \t]+\S/mg; if ( @matches >= 4 ) { my $comment_re = qr/^[ \t]*[\Q$matches[0]\E]{1,3}[ \t]*/m; s/$comment_re//g; } my @wordmatches = m/^[ \t]*(dnl|REM|COMMENT)[ \t]+\S/mg; if ( @wordmatches >= 4 ) { my $comment_re = qr/^[ \t]*\Q$wordmatches[0]\E[ \t]*/m; s/$comment_re//g; } # Remove other side of "boxed" comments s/[ \t]*[*#][ \t]*$//gm; # Remove Fortran comments s/^[cC]$//gm; s/^[cC] //gm; # Remove C / C++ comments s#(\*/|/\*|(?]*)?>/i; # clean cruft method content_cleaned { local $_ = $self->content or return ''; # strip common html and xml tags s/$html_xml_tags_re//g; # TODO: decode latin1/UTF-8/HTML data instead s/\xcb\x97|\xe2\x80[\x90-\x95|\xe2\x81\x83|\xe2\x88\x92|\xef\x89\xa3|\xef\xbc\x8d]|[&](?:ndash|mdash|horbar|minus|[#](?:727|820[8-9]|821[0-3]|8259|8722|65123|65293|x727|z201[0-5]|x2043|x2212|xFE63|xFF0D))[;]/-/gm; s/\x58\xa9|\xc2\xa9|\xe2\x92\x9e|\xe2\x92\xb8|\xe2\x93\x92|\xf0\x9f\x84\x92|\xf0\x9f\x84\xab|\xf0\x9f\x85\x92|[&](?:copy|[#](?:169|9374|9400|9426|127250|127275|127314|x0A9|x249E|x24b8|x24D2|x0F112|x0F12B|x0F152))[;]/©/gm; # TODO: decode nroff files specifically instead s/\\//gm; # de-cruft nroff files return $_; } # clean cruft and whitespace method content_extracleaned { local $_ = $self->content or return ''; # strip trailing dash, assuming it is soft-wrap # (example: disclaimers in GNU autotools file "install-sh") s/-\r?\n//g; # strip common html and xml tags s/$html_xml_tags_re//g; tr/\t\r\n/ /; # this also removes quotes tr% A-Za-z.,:@;0-9\(\)/-%%cd; tr/ //s; return $_; } =encoding UTF-8 =head1 AUTHOR Jonas Smedegaard C<< >> =head1 COPYRIGHT AND LICENSE This program is based on the script "licensecheck" from the KDE SDK, originally introduced by Stefan Westerfeld C<< >>. Copyright © 2007, 2008 Adam D. Barratt Copyright © 2012 Francesco Poli Copyright © 2016-2022 Jonas Smedegaard Copyright © 2017-2022 Purism SPC This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . =cut 1; artistic-2-0-modules.pm000644001750001750 1651214451001241 23271 0ustar00jonasjonas000000000000App-Licensecheck-v3.3.9/t/devscriptsuse SVG::Box; enum SVG::Plot::AxisPosition ; unit class SVG::Plot; has $.height = 300; has $.width = 500; has $.fill-width = 0.80; has $.label-font-size = 12; has $.legend-font-size = $!label-font-size; has @.legends is rw; has @.values is rw; has @.x is rw; # only used in 'xy' variants has @.labels is rw = @!values[0].keys; has @.links is rw; has $.plot-width = $!width * 0.80; has $.plot-height = $!height * (@!legends ?? 0.5 !! 0.65); has $.title = ''; has &.x-tick-step = -> $max { 10 ** $max.log10.floor / 2 } has &.y-tick-step = -> $max { 10 ** $max.log10.floor / 2 } has $.max-x-labels = $!plot-width / (1.5 * $!label-font-size); has $.label-spacing = ($!height - $!plot-height) / 20; has @.colors = <#3333ff #ffdd66 #aa2222 #228844 #eebb00 #8822bb>; has $.min-y-axis = Inf; multi method plot(:$full = True, :$stacked-bars!) { my $label-skip = ceiling(@.values[0] / $.max-x-labels); my $max_x = @.values[0].elems; # maximum value of the sum over each column my $max_y = [max] @.values[0].keys.map: { [+] @.values.map: -> $a { $a[$_] } }; my $datasets = +@.values; my $step_x = $.plot-width / $max_x; my $step_y = $.plot-height / $max_y; my @svg_d = gather { my $bar-width = $.fill-width * $step_x; for flat @.values[0].keys Z @.labels -> $k, $l { my $y-offset = 0; for ^$datasets -> $d { my $v = @.values[$d][$k]; my $p = 'rect' => [ :y(-$v * $step_y - $y-offset), :x($k * $step_x), :width($bar-width), :height($v * $step_y), :style("fill:{ @.colors[$d % *] }; stroke: none"), ]; $y-offset += $v * $step_y; take |$.linkify($k, $p); } } $.plot-x-labels(:$step_x, :$label-skip); $.y-ticks(0, $max_y, $step_y); } my $svg = $.apply-standard-transform( @svg_d, @.eyecandy(), ); @.wrap-in-svg-header-if-necessary($svg, :wrap($full)); } # snip... =begin Pod =head1 NAME SVG::Plot - simple SVG bar charts =head1 VERSION $very_early =head1 SYNOPSIS use SVG; use SVG::Plot; my @d1 = (0..100).map: { sin($_ / 10.0) }; my @d2 = (0..100).map: { cos($_ / 10.0) }; say SVG.serialize: SVG::Plot.new( width => 400, height => 250, values => ([@d1], [@d2]), title => 'sin(x/10), cos(x/10)', ).plot(:lines); =head1 DESCRIPTION SVG::Plot turns a set of data points (and optionally labels) into a data structure which Carl Mäsak's module L serializes into SVG, and displays a bar chart of the data. See L for the initial announcement and future plans. Note that the module itself does not depend on SVG.pm, only the examples (and maybe in future the tests). =head1 A WORD OF WARNING Please note that the interface of this module is still in flux, and might change without further notice. If you actually use it, send the author an email to inform him, maybe he'll try to keep the interface backwards compatible, or notify you on incompatible changes. =head1 METHODS =head2 new(*%options) Constructs a L object. You can set various attributes as options, see their documentation below. No attribute is mandatory. =head2 multi method plot(:$type!, :$full = True) If the argument C<$!full> is provided, the returned data structure contains only the body of the SVG, not the C<< >> header. Each multi method renders one type of chart, and has a mandatory named parameter with the name of the type. Currently available are C, C, C and C. =head1 Attributes The following attributes can be set with the C constructor, and can be queried later on (those marked with C can also be set later on). =head2 @.values is rw The values to be plotted =head2 @.labels is rw The labels printed below the bars. Note that this must be either left empty (in which case C<@.values.keys> is used as a default), or of the same length as C<@.values>. To suppress printing of labels just set them all to the empty string, C<$svg.labels = ('' xx $svg.values.elems)>. =head2 @.links is rw If some values of @.links are set to defined values, the corresponding bars and labels will be turned into links =head2 $.width =head2 $.height The overall size of the image (what is called the I in SVG jargon). SVG::Plot tries not to draw outside the canvas. =head2 $.plot-width =head2 $.plot-height The size of the area to which the chart is plotted (the rest is taken up by ticks, labels and in future probably captions). The behaviour is undefined if C<< $.plot-width < $.width >> or C<< $.plot-height >>. Note that if you chose C<$.plot-width> or C<$.plot-height> too big in comparison to C<$.width> and C<$.height>, label texts and ticks might exceed the total size, and be either clipped to or drawn outside the canvas, depending on your SVG renderer. =head2 $.fill-width (Might be renamed to a more meaning name in future) For each bar in the bar chart a certain width is allocated, but only a ratio of C<$.fill-width> is actually filled with a bar. Set to value between 0 and 1 to get spaces between your bars, or to 1 if you don't want spaces. =head2 $.label-font-size Font size for the axis labels =head2 &.y-tick-step Closure which computes the step size in which ticks and labels on the y axis are drawn. It receives the maximal C value as a single positional argument. =head2 &.x-tick-step Closure which computes the step size in which ticks and labels on the x axis are drawn. It receives the maximal C value as a single positional argument. =head2 $.max-x-labels Maximal number of plotted labels in C direction. If you experience overlapping labels you might set this to a smaller value. The default is dependent on C<$.plot-width> and C<$.label-font-size>. =head2 $.label-spacing Distance between I axis and labels. Also affects width of I ticks and distance of labels and I ticks. =head2 $.min-y-axis By default the C axis is scaled between the minimum and maximum y values. Set this if you want the C axis to scale off of a different lower bound. Only has an effect if the C<$.min-y-axis> value is less then the minimum C value. =head1 LICENSE AND COPYRIGHT Copyright (C) 2009 by Moritz Lenz and the SVG::Plot contributors (see file F), all rights reserved. You may distribute, use and modify this module under the terms of the Artistic License 2.0 as published by The Perl Foundation. See the F file for details. The example code in the F directory and the examples from the documentation can be used, modified and distributed freely without any restrictions (think "public domain", except that by German law the author can't place things into the public domain). =head1 WARRANTY EXCLUSION This software is provided as-is, in the hope that it is useful to somebody. Not fitness for a particular purpose or any kind of guarantuee of functionality is implied. No responsibilities are taken by author to the extend allowed by applicable law. =end Pod # vim: ft=perl6 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������beerware.cpp����������������������������������������������������������������������������������������000644��001750��001750�� 465�14451001241� 21407� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������/* * Copyright (c) 2012 Devscripts developers * * "THE BEER-WARE LICENSE" (Revision 42): * Benjamin Drung wrote this file. As long as you retain this notice you * can do whatever you want with this stuff. If we meet some day, and you think * this stuff is worth it, you can buy me a beer in return. */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bsd-regents.c���������������������������������������������������������������������������������������000644��001750��001750�� 3211�14451001241� 21500� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������/* $NetBSD: getopt.c,v 1.26 2003/08/07 16:43:40 agc Exp $ */ /* * Copyright (c) 1987, 1993, 1994 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bsd.f�����������������������������������������������������������������������������������������������000644��001750��001750�� 2477�14451001241� 20053� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������c Copyright (c) 2012, Devscripts developers c c Redistribution and use in source and binary forms, with or without c modification, are permitted provided that the following conditions are c met: c c - Redistributions of source code must retain the above copyright c notice, this list of conditions and the following disclaimer. c c - Redistributions in binary form must reproduce the above copyright c notice, this list of conditions and the following disclaimer in the c documentation and/or other materials provided with the c distribution. c c THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS c IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED c TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A c PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT c HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, c SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT c LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, c DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY c THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT c (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE c OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������comments-detection.h��������������������������������������������������������������������������������000644��001750��001750�� 1261�14451001241� 23074� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������// Copyright (c) 2013 Devscripts developers. // All rights reserved. // // You can redistribute it and/or modify it under the terms of the GNU // General Public License as published by the Free Software Foundation, // either version 3 of the License, or (at your option) any later version. // // Licensees holding a valid commercial license may use this file in // accordance with the commercial license agreement provided with the software. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. int main() { int return_value = 42 / 2 / 3; return return_value; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������comments-detection.txt������������������������������������������������������������������������������000644��001750��001750�� 410�14451001241� 23437� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������# kitchen is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. .. seealso ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dual.c����������������������������������������������������������������������������������������������000644��001750��001750�� 2060�14451001241� 20211� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������/************************************************************************* * Copyright 2012 Devscripts developers * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. * * This file may incorporate work that is in the public domain and/or * covered under the following copyright and permission notice: * * Written by devscripts developers and released to the public domain, * as explained at http://creativecommons.org/publicdomain/zero/1.0/ ************************************************************************/ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������false-positives�������������������������������������������������������������������������������������000644��001750��001750�� 3243�14451001241� 22164� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������/* * Copyright (c) 2013 Devscripts developers * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * ... * 3. Neither the name of the copyright holder nor the names of contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * ... * [The next bit comes from freeswitch/libs/apr/poll/unix/port.c:] * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * ... * [this from freeswitch/libs/apr-util/include/apr_md5.h] * The RSA copyright statement and Licence for that original material is * included below. This is followed by the Apache copyright statement and * ... * [from freeswitch/libs/libzrtp/include/zrtp_legal.h and .../libzrtp/third_party/bnlib/legal.h] * We want the copyright string accessable to the unix strings command in * We want the copyright string to be accessable to the unix strings command * [and .../libs/libwebsockets/win32port/zlib/deflate.c] copyright string in the executable of your product. * [from .../libs/sofia-sip/libsofia-sip-ua/su/su_md5.c ] * 1993, no copyright is claimed. This code is in the public domain; do with * copyright in any changes I have made; this code remains in the * [from most of sqlite] ** The author disclaims copyright to this source code. In place of */ # from freeswitch/libs/sofia-sip/libsofia-sip-ua/msg/msg_date.c #define is_digit(c) ((c) >= '0' && (c) <= '9') �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gpl-2�����������������������������������������������������������������������������������������������000644��001750��001750�� 764�14451001241� 17755� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������# Copyright (c) 2012 Devscripts developers # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License as published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. ������������info-at-eof.h���������������������������������������������������������������������������������������000644��001750��001750�� 27543�14451001241� 21432� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������/* ** $Id: lua.h,v 1.218.1.7 2012/01/13 20:36:20 roberto Exp $ ** Lua - An Extensible Extension Language ** Lua.org, PUC-Rio, Brazil (http://www.lua.org) ** See Copyright Notice at the end of this file */ #ifndef lua_h #define lua_h #include #include #include "luaconf.h" #define LUA_VERSION "Lua 5.1" #define LUA_RELEASE "Lua 5.1.5" #define LUA_VERSION_NUM 501 #define LUA_COPYRIGHT "Copyright (C) 1994-2012 Lua.org, PUC-Rio" #define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes" /* mark for precompiled code (`Lua') */ #define LUA_SIGNATURE "\033Lua" /* option for multiple returns in `lua_pcall' and `lua_call' */ #define LUA_MULTRET (-1) /* ** pseudo-indices */ #define LUA_REGISTRYINDEX (-10000) #define LUA_ENVIRONINDEX (-10001) #define LUA_GLOBALSINDEX (-10002) #define lua_upvalueindex(i) (LUA_GLOBALSINDEX-(i)) /* thread status; 0 is OK */ #define LUA_YIELD 1 #define LUA_ERRRUN 2 #define LUA_ERRSYNTAX 3 #define LUA_ERRMEM 4 #define LUA_ERRERR 5 typedef struct lua_State lua_State; typedef int (*lua_CFunction) (lua_State *L); /* ** functions that read/write blocks when loading/dumping Lua chunks */ typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz); typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud); /* ** prototype for memory-allocation functions */ typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); /* ** basic types */ #define LUA_TNONE (-1) #define LUA_TNIL 0 #define LUA_TBOOLEAN 1 #define LUA_TLIGHTUSERDATA 2 #define LUA_TNUMBER 3 #define LUA_TSTRING 4 #define LUA_TTABLE 5 #define LUA_TFUNCTION 6 #define LUA_TUSERDATA 7 #define LUA_TTHREAD 8 /* minimum Lua stack available to a C function */ #define LUA_MINSTACK 20 /* ** generic extra include file */ #if defined(LUA_USER_H) #include LUA_USER_H #endif /* type of numbers in Lua */ typedef LUA_NUMBER lua_Number; /* type for integer functions */ typedef LUA_INTEGER lua_Integer; /* ** state manipulation */ LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud); LUA_API void (lua_close) (lua_State *L); LUA_API lua_State *(lua_newthread) (lua_State *L); LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); /* ** basic stack manipulation */ LUA_API int (lua_gettop) (lua_State *L); LUA_API void (lua_settop) (lua_State *L, int idx); LUA_API void (lua_pushvalue) (lua_State *L, int idx); LUA_API void (lua_remove) (lua_State *L, int idx); LUA_API void (lua_insert) (lua_State *L, int idx); LUA_API void (lua_replace) (lua_State *L, int idx); LUA_API int (lua_checkstack) (lua_State *L, int sz); LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); /* ** access functions (stack -> C) */ LUA_API int (lua_isnumber) (lua_State *L, int idx); LUA_API int (lua_isstring) (lua_State *L, int idx); LUA_API int (lua_iscfunction) (lua_State *L, int idx); LUA_API int (lua_isuserdata) (lua_State *L, int idx); LUA_API int (lua_type) (lua_State *L, int idx); LUA_API const char *(lua_typename) (lua_State *L, int tp); LUA_API int (lua_equal) (lua_State *L, int idx1, int idx2); LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); LUA_API int (lua_lessthan) (lua_State *L, int idx1, int idx2); LUA_API lua_Number (lua_tonumber) (lua_State *L, int idx); LUA_API lua_Integer (lua_tointeger) (lua_State *L, int idx); LUA_API int (lua_toboolean) (lua_State *L, int idx); LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); LUA_API size_t (lua_objlen) (lua_State *L, int idx); LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); LUA_API void *(lua_touserdata) (lua_State *L, int idx); LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); LUA_API const void *(lua_topointer) (lua_State *L, int idx); /* ** push functions (C -> stack) */ LUA_API void (lua_pushnil) (lua_State *L); LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); LUA_API void (lua_pushlstring) (lua_State *L, const char *s, size_t l); LUA_API void (lua_pushstring) (lua_State *L, const char *s); LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, va_list argp); LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n); LUA_API void (lua_pushboolean) (lua_State *L, int b); LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p); LUA_API int (lua_pushthread) (lua_State *L); /* ** get functions (Lua -> stack) */ LUA_API void (lua_gettable) (lua_State *L, int idx); LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k); LUA_API void (lua_rawget) (lua_State *L, int idx); LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n); LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz); LUA_API int (lua_getmetatable) (lua_State *L, int objindex); LUA_API void (lua_getfenv) (lua_State *L, int idx); /* ** set functions (stack -> Lua) */ LUA_API void (lua_settable) (lua_State *L, int idx); LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); LUA_API void (lua_rawset) (lua_State *L, int idx); LUA_API void (lua_rawseti) (lua_State *L, int idx, int n); LUA_API int (lua_setmetatable) (lua_State *L, int objindex); LUA_API int (lua_setfenv) (lua_State *L, int idx); /* ** `load' and `call' functions (load and run Lua code) */ LUA_API void (lua_call) (lua_State *L, int nargs, int nresults); LUA_API int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); LUA_API int (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud); LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, const char *chunkname); LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); /* ** coroutine functions */ LUA_API int (lua_yield) (lua_State *L, int nresults); LUA_API int (lua_resume) (lua_State *L, int narg); LUA_API int (lua_status) (lua_State *L); /* ** garbage-collection function and options */ #define LUA_GCSTOP 0 #define LUA_GCRESTART 1 #define LUA_GCCOLLECT 2 #define LUA_GCCOUNT 3 #define LUA_GCCOUNTB 4 #define LUA_GCSTEP 5 #define LUA_GCSETPAUSE 6 #define LUA_GCSETSTEPMUL 7 LUA_API int (lua_gc) (lua_State *L, int what, int data); /* ** miscellaneous functions */ LUA_API int (lua_error) (lua_State *L); LUA_API int (lua_next) (lua_State *L, int idx); LUA_API void (lua_concat) (lua_State *L, int n); LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud); /* ** =============================================================== ** some useful macros ** =============================================================== */ #define lua_pop(L,n) lua_settop(L, -(n)-1) #define lua_newtable(L) lua_createtable(L, 0, 0) #define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) #define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) #define lua_strlen(L,i) lua_objlen(L, (i)) #define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) #define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) #define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) #define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL) #define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN) #define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD) #define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE) #define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0) #define lua_pushliteral(L, s) \ lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) #define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, (s)) #define lua_getglobal(L,s) lua_getfield(L, LUA_GLOBALSINDEX, (s)) #define lua_tostring(L,i) lua_tolstring(L, (i), NULL) /* ** compatibility macros and functions */ #define lua_open() luaL_newstate() #define lua_getregistry(L) lua_pushvalue(L, LUA_REGISTRYINDEX) #define lua_getgccount(L) lua_gc(L, LUA_GCCOUNT, 0) #define lua_Chunkreader lua_Reader #define lua_Chunkwriter lua_Writer /* hack */ LUA_API void lua_setlevel (lua_State *from, lua_State *to); /* ** {====================================================================== ** Debug API ** ======================================================================= */ /* ** Event codes */ #define LUA_HOOKCALL 0 #define LUA_HOOKRET 1 #define LUA_HOOKLINE 2 #define LUA_HOOKCOUNT 3 #define LUA_HOOKTAILRET 4 /* ** Event masks */ #define LUA_MASKCALL (1 << LUA_HOOKCALL) #define LUA_MASKRET (1 << LUA_HOOKRET) #define LUA_MASKLINE (1 << LUA_HOOKLINE) #define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) typedef struct lua_Debug lua_Debug; /* activation record */ /* Functions to be called by the debuger in specific events */ typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar); LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar); LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n); LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n); LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n); LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n); LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count); LUA_API lua_Hook lua_gethook (lua_State *L); LUA_API int lua_gethookmask (lua_State *L); LUA_API int lua_gethookcount (lua_State *L); struct lua_Debug { int event; const char *name; /* (n) */ const char *namewhat; /* (n) `global', `local', `field', `method' */ const char *what; /* (S) `Lua', `C', `main', `tail' */ const char *source; /* (S) */ int currentline; /* (l) */ int nups; /* (u) number of upvalues */ int linedefined; /* (S) */ int lastlinedefined; /* (S) */ char short_src[LUA_IDSIZE]; /* (S) */ /* private part */ int i_ci; /* active function */ }; /* }====================================================================== */ /****************************************************************************** * Copyright (C) 1994-2012 Lua.org, PUC-Rio. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������multi-line-copyright.c������������������������������������������������������������������������������000644��001750��001750�� 2402�14451001241� 23351� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������/************************************************************************* * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. * 2005 Lars Knoll & Zack Rusin, Trolltech * 2008 Aaron Plattner, NVIDIA Corporation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. * * This file may incorporate work that is in the public domain and/or * covered under the following copyright and permission notice: * * Written by devscripts developers and released to the public domain, * as explained at http://creativecommons.org/publicdomain/zero/1.0/ ************************************************************************/ /* See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=519080 */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������texinfo.tex�����������������������������������������������������������������������������������������000644��001750��001750�� 2375�14451001241� 21327� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/devscripts�����������������������������������������������������������������������������������������������������������������������������������% texinfo.tex -- TeX macros to handle Texinfo files. % % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % \def\texinfoversion{2012-03-11.15} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as % published by the Free Software Foundation, either version 3 of the % License, or (at your option) any later version. % % This texinfo.tex file is distributed in the hope that it will be % useful, but WITHOUT ANY WARRANTY; without even the implied warranty % of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU % General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program. If not, see . % % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. (This has been our intent since Texinfo was invented.) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������README.gs550j���������������������������������������������������������������������������������������000644��001750��001750�� 263�14451001241� 20377� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/encoding�������������������������������������������������������������������������������������������������������������������������������������GNU Ghostscript version 5.50 ܸ첽ѥå gs550j Copyright 1999 by 翹 (ohmori@p.chiba-u.ac.jp) Copyright (C) 1996-1999 Daisuke SUZUKI. Copyright (C) 1999 Norihito Ohmori. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������copr-iso8859.h��������������������������������������������������������������������������������������000644��001750��001750�� 1356�14451001241� 20771� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/encoding�������������������������������������������������������������������������������������������������������������������������������������/* * This file * Copyright (C) 2011 Heinrich Mller * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������copr-utf8.h�����������������������������������������������������������������������������������������000644��001750��001750�� 3126�14451001241� 20524� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/encoding�������������������������������������������������������������������������������������������������������������������������������������/******************************************************************************* * superduper - main.h * * Copyright (C) 2001-2010 Paul 'bar' Stevénsön * * Copyright (C) 2004-2015 Oliva 'f00' Oberto * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * * ******************************************************************************/ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������grammar.cxx�����������������������������������������������������������������������������������������000644��001750��001750�� 43630�14451001241� 22204� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/exception/Bison������������������������������������������������������������������������������������������������������������������������������/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 . */ /* A Bison parser, made from grammar.y by GNU Bison version 1.28 */ #ifndef YYDEBUG #define YYDEBUG 0 #endif #ifndef YYMAXDEPTH #define YYMAXDEPTH 0 #endif #include #include #include #include "grammar.hxx" #include "lexer.hxx" #include "nodes.h" extern "C" { #include "grammar.h" } std::vector> nodelist; static void yyerror(const char *); static Node *top=nullptr; int Node::count = 0; #ifdef PARSE_DEBUG #define debug printf #else static int debug(const char *format, ...); #endif #include #define YYFINAL 102 #define YYFLAG -32768 #define YYNTBASE 43 #define YYTRANSLATE(x) (static_cast(x) <= 285 ? yytranslate[x] : 66) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 33, 37, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 2, 40, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 34, 2, 38, 42, 41, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 35, 32, 39, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }; #if YYDEBUG != 0 static const short yyprhs[] = { 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 39, 42, 45, 48, 51, 54, 58, 60, 63, 66, 69, 72, 75, 79, 81, 85, 89, 92, 96, 99, 103, 106, 110, 114, 120, 124, 130, 132, 135, 137, 140, 143, 147, 150, 154, 157, 159, 161, 165, 167, 169, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194 }; static const short yyrhs[] = { 4, 0, 9, 0, 10, 0, 5, 0, 11, 0, 12, 0, 20, 0, 21, 0, 7, 0, 6, 0, 23, 0, 17, 0, 18, 0, 8, 0, 32, 0, 31, 0, 22, 0, 43, 0, 44, 43, 0, 26, 33, 0, 26, 34, 0, 26, 35, 0, 26, 36, 0, 26, 32, 0, 26, 32, 32, 0, 29, 0, 27, 37, 0, 27, 38, 0, 27, 39, 0, 27, 40, 0, 27, 32, 0, 27, 32, 32, 0, 30, 0, 45, 64, 46, 0, 33, 64, 37, 0, 33, 37, 0, 35, 64, 39, 0, 35, 39, 0, 34, 64, 38, 0, 34, 38, 0, 65, 41, 65, 0, 65, 42, 65, 0, 65, 41, 49, 42, 49, 0, 14, 49, 49, 0, 35, 64, 16, 64, 39, 0, 3, 0, 54, 49, 0, 19, 0, 56, 49, 0, 13, 49, 0, 13, 50, 49, 0, 24, 49, 0, 24, 49, 49, 0, 25, 49, 0, 62, 0, 63, 0, 62, 28, 63, 0, 64, 0, 65, 0, 64, 65, 0, 49, 0, 48, 0, 47, 0, 51, 0, 52, 0, 53, 0, 57, 0, 58, 0, 55, 0, 44, 0, 59, 0, 60, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, 59, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 81, 84, 86, 87, 88, 89, 90, 91, 94, 96, 97, 98, 99, 100, 101, 104, 108, 110, 113, 115, 118, 120, 123, 125, 126, 129, 133, 138, 142, 145, 149, 153, 155, 158, 160, 163, 168, 172, 174, 177, 181, 183, 186, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198 }; #endif #if YYDEBUG != 0 || defined (YYERROR_VERBOSE) static const char * const yytname[] = { "$","error","$undefined.","ACCENT", "SMALL_GREEK","CAPITAL_GREEK","BINARY_OPERATOR","RELATION_OPERATOR","ARROW", "GENERAL_IDEN","GENERAL_OPER","BIG_SYMBOL","FUNCTION","ROOT","FRACTION","SUBSUP", "EQOVER","DELIMETER","LARGE_DELIM","DECORATION","SPACE_SYMBOL","CHARACTER","STRING", "OPERATOR","EQBEGIN","EQEND","EQLEFT","EQRIGHT","NEWLINE","LEFT_DELIM","RIGHT_DELIM", "DIGIT","'|'","'('","'['","'{'","'<'","')'","']'","'}'","'>'","'_'","'^'","Identifier", "PrimaryExpr","EQLeft","EQRight","Fence","Parenth","Block","Bracket","SubSupExpr", "FractionExpr","OverExpr","Accent","AccentExpr","Decoration","DecorationExpr", "RootExpr","BeginExpr","EndExpr","MathML","Lines","Line","ExprList","Expr", NULL }; #endif static const short yyr1[] = { 0, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 45, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 47, 48, 48, 49, 49, 50, 50, 51, 51, 51, 52, 53, 54, 55, 56, 57, 58, 58, 59, 59, 60, 61, 62, 62, 63, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65 }; static const short yyr2[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 1, 2, 2, 2, 2, 2, 3, 1, 3, 3, 2, 3, 2, 3, 2, 3, 3, 5, 3, 5, 1, 2, 1, 2, 2, 3, 2, 3, 2, 1, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; static const short yydefact[] = { 0, 46, 1, 4, 10, 9, 14, 2, 3, 5, 6, 0, 0, 12, 13, 48, 7, 8, 17, 11, 0, 0, 0, 26, 16, 15, 0, 0, 18, 70, 0, 63, 62, 61, 64, 65, 66, 0, 69, 0, 67, 68, 71, 72, 55, 56, 58, 59, 0, 0, 50, 0, 0, 52, 54, 24, 20, 21, 22, 23, 36, 0, 38, 0, 19, 0, 47, 49, 0, 60, 0, 0, 40, 0, 0, 51, 44, 53, 25, 35, 0, 37, 0, 33, 34, 57, 61, 41, 42, 39, 0, 31, 27, 28, 29, 30, 0, 45, 32, 43, 0, 0, 0 }; static const short yydefgoto[] = { 28, 29, 30, 84, 31, 32, 33, 51, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 100, 44, 45, 46, 47 }; static const short yypact[] = { 393, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -30, -19,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -19, -19, -3,-32768,-32768,-32768, 290, 107,-32768, 425, 393, -32768,-32768,-32768,-32768,-32768,-32768, -19,-32768, -19,-32768, -32768,-32768,-32768, -20,-32768, 393, -21, 218, 107,-32768, -19, -19, -19,-32768, -15,-32768,-32768,-32768,-32768,-32768, 325,-32768, 70,-32768, 360,-32768,-32768, 393, -21, 393, 393,-32768, 254, 144,-32768,-32768,-32768,-32768,-32768, 393, -32768, -25,-32768,-32768,-32768, -31, -21, -21,-32768, 181, -14,-32768,-32768,-32768,-32768, -19,-32768,-32768,-32768, 22, 23,-32768 }; static const short yypgoto[] = { -2, -32768,-32768,-32768,-32768,-32768, -11,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -33, -24, -27 }; #define YYLAST 457 static const short yytable[] = { 50, 52, 61, 63, 48, 49, 65, 91, 68, 53, 54, 96, 92, 93, 94, 95, 49, 78, 98, 69, 70, 71, 101, 102, 73, 74, 66, 64, 67, 55, 56, 57, 58, 59, 69, 85, 69, 0, 69, 0, 75, 76, 77, 87, 88, 0, 69, 69, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 86, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 99, 80, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 24, 25, 26, 0, 27, 0, 0, 0, 81, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 24, 25, 26, 0, 27, 0, 0, 0, 62, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 24, 25, 26, 0, 27, 0, 0, 0, 81, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 24, 25, 26, 0, 27, 0, 0, 0, 97, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 24, 25, 26, 0, 27, 0, 0, 72, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 24, 25, 26, 0, 27, 0, 0, 89, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 24, 25, 26, 0, 27, 0, 60, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 24, 25, 26, 0, 27, 0, 79, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 82, 0, 23, 83, 24, 25, 26, 0, 27, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 23, 0, 24, 25, 26, 0, 27, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 13, 14, 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 24, 25 }; static const short yycheck[] = { 11, 12, 26, 27, 34, 35, 30, 32, 28, 20, 21, 42, 37, 38, 39, 40, 35, 32, 32, 46, 41, 42, 0, 0, 48, 49, 37, 29, 39, 32, 33, 34, 35, 36, 61, 68, 63, -1, 65, -1, 51, 52, 53, 70, 71, -1, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, 70, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 96, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, 31, 32, 33, -1, 35, -1, -1, -1, 39, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, 31, 32, 33, -1, 35, -1, -1, -1, 39, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, 31, 32, 33, -1, 35, -1, -1, -1, 39, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, 31, 32, 33, -1, 35, -1, -1, -1, 39, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, 31, 32, 33, -1, 35, -1, -1, 38, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, 31, 32, 33, -1, 35, -1, -1, 38, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, 31, 32, 33, -1, 35, -1, 37, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, 31, 32, 33, -1, 35, -1, 37, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 30, 31, 32, 33, -1, 35, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, -1, 31, 32, 33, -1, 35, 4, 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, -1, 17, 18, -1, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, 31, 32 }; /* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ /* This is the parser code that is written into each bison parser when the %semantic_parser declaration is not specified in the grammar. It was written by Richard Stallman by simplifying the hairy parser used when %semantic_parser is specified. */ /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action as one case of the switch. */ #define YYEMPTY -2 #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab ��������������������������������������������������������������������������������������������������������tv_implementpoly.reference��������������������������������������������������������������������������000644��001750��001750�� 11455�14451001241� 25442� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/exception/Cecill�����������������������������������������������������������������������������������������������������������������������������Caught the message: the implemented polynomial is different from the original one. implementpoly(649037107316853453566312041152512 - 108172851219475575594385340192085 * x^2,[-1b-10;1b-10],1b-44,double,p,"timplementpoly.implementation.c") returns 649037107316853453566312041152512 + x^2 * (-108172851219475569589585837031424) and produces the following code: /* This code was generated using non-trivial code generation commands of the Sollya software program. Before using, modifying and/or integrating this code into other software, review the copyright and license status of this generated code. In particular, see the exception below. Sollya is Copyright 2006-2018 by Laboratoire de l'Informatique du Parallelisme, UMR CNRS - ENS Lyon - UCB Lyon 1 - INRIA 5668, LORIA (CNRS, INPL, INRIA, UHP, U-Nancy 2), Laboratoire d'Informatique de Paris 6, equipe PEQUAN, UPMC Universite Paris 06 - CNRS - UMR 7606 - LIP6, Paris, France, Laboratoire d'Informatique de Paris 6 - Équipe PEQUAN Sorbonne Universités UPMC Univ Paris 06 UMR 7606, LIP6 Boîte Courrier 169 4, place Jussieu F-75252 Paris Cedex 05 France, Sorbonne Université CNRS, Laboratoire d'Informatique de Paris 6, LIP6 F - 75005 Paris France, CNRS, LIP6, UPMC Sorbonne Universités, UPMC Univ Paris 06, CNRS, LIP6 UMR 7606, 4 place Jussieu 75005 Paris, University of Alaska Anchorage, College of Engineering and by Centre de recherche INRIA Sophia Antipolis Mediterranee, Equipes APICS, FACTAS, Sophia Antipolis, France. Contributors Ch. Lauter, S. Chevillard, M. Joldes, N. Jourdan, M. Mezzarobba, J. Benoit christoph.lauter@ens-lyon.org sylvain.chevillard@ens-lyon.org joldes@laas.fr marc@mezzarobba.net The Sollya software is a computer program whose purpose is to provide an environment for safe floating-point code development. It is particularly targeted to the automated implementation of mathematical floating-point libraries (libm). Amongst other features, it offers a certified infinity norm, an automatic polynomial implementer and a fast Remez algorithm. The Sollya software is governed by the CeCILL-C license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL-C license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info". As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors have only limited liability. In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security. The fact that you are presently reading this means that you have had knowledge of the CeCILL-C license and that you accept its terms. The Sollya program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This generated program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. As a special exception, you may create a larger work that contains part or all of this software generated using Sollya and distribute that work under terms of your choice, so long as that work isn't itself a numerical code generator using the skeleton of this code or a modified version thereof as a code skeleton. Alternatively, if you modify or redistribute this generated code itself, or its skeleton, you may (at your option) remove this special exception, which will cause this generated code and its skeleton and the resulting Sollya output files to be licensed under the CeCILL-C licence without this special exception. This special exception was added by the Sollya copyright holders in version 4.1 of Sollya. */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������one_helper.rb���������������������������������������������������������������������������������������000644��001750��001750�� 3441�14451001241� 21677� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/grant/Apache���������������������������������������������������������������������������������������������������������������������������������# -------------------------------------------------------------------------- # # Copyright 2002-2015, OpenNebula Project (OpenNebula.org), C12G Labs # # # # Licensed 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. # #--------------------------------------------------------------------------- # require 'cli_helper' begin require 'opennebula' rescue Exception => e puts "Error: "+e.message.to_s exit(-1) end include OpenNebula module OpenNebulaHelper ONE_VERSION=<<-EOT OpenNebula #{OpenNebula::VERSION} Copyright 2002-2015, OpenNebula Project (OpenNebula.org), C12G Labs Licensed 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 EOT if ONE_LOCATION TABLE_CONF_PATH=ONE_LOCATION+"/etc/cli" else TABLE_CONF_PATH="/etc/one/cli" end �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WorkingUtf8.pm��������������������������������������������������������������������������������������000644��001750��001750�� 413�14451001241� 22622� 0����������������������������������������������������������������������������������������������������ustar�00jonas���������������������������jonas���������������������������000000��000000��App-Licensecheck-v3.3.9/t/lib/Test2/Require����������������������������������������������������������������������������������������������������������������������������package Test2::Require::WorkingUtf8; use strict; use warnings; use base 'Test2::Require'; sub WORKING_UTF8 { return 0 if $^O eq 'cygwin'; return 1; } sub skip { return "Skipped because there are no working utf-8" unless WORKING_UTF8(); return undef; } 1; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������