Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/debian/cdbs/1/rules/copyright-check.mk
diff options
context:
space:
mode:
Diffstat (limited to 'debian/cdbs/1/rules/copyright-check.mk')
-rw-r--r--debian/cdbs/1/rules/copyright-check.mk93
1 files changed, 93 insertions, 0 deletions
diff --git a/debian/cdbs/1/rules/copyright-check.mk b/debian/cdbs/1/rules/copyright-check.mk
new file mode 100644
index 0000000..d4ead0d
--- /dev/null
+++ b/debian/cdbs/1/rules/copyright-check.mk
@@ -0,0 +1,93 @@
+# -*- mode: makefile; coding: utf-8 -*-
+# Copyright © 2005-2008 Jonas Smedegaard <dr@jones.dk>
+# Description: Check for changes to copyright notices in source
+#
+# 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.
+
+_cdbs_scripts_path ?= /usr/lib/cdbs
+_cdbs_rules_path ?= /usr/share/cdbs/1/rules
+_cdbs_class_path ?= /usr/share/cdbs/1/class
+
+ifndef _cdbs_rules_copyright-check
+_cdbs_rules_copyright-check := 1
+
+include $(_cdbs_rules_path)/buildcore.mk$(_cdbs_makefile_suffix)
+
+CDBS_BUILD_DEPENDS := $(CDBS_BUILD_DEPENDS), devscripts (>= 2.10.7)
+
+# Single regular expression for files to include or ignore
+DEB_COPYRIGHT_CHECK_REGEX = .*
+DEB_COPYRIGHT_CHECK_IGNORE_REGEX = ^(debian/.*|(.*/)?config\.(guess|sub|rpath)(\..*)?)$
+
+pre-build:: debian/stamp-copyright-check
+
+debian/stamp-copyright-check:
+ @echo 'Scanning upstream source for new/changed copyright notices (except debian subdir!)...'
+
+# Perl in shell in make requires extra care:
+# * Single-quoting ('...') protects against shell expansion
+# * Double-dollar ($$) expands to plain dollar ($) in make
+ licensecheck -c '$(DEB_COPYRIGHT_CHECK_REGEX)' -r --copyright -i '$(DEB_COPYRIGHT_CHECK_IGNORE_REGEX)' * \
+ | LC_ALL=C perl -e \
+ '$$n=0; while (<>) {'\
+ ' if (/^([^:\s][^:]+):[\s]+(\S.*?)\s*$$/) {'\
+ ' $$files[$$n]{name}=$$1;'\
+ ' $$files[$$n]{license}=$$2;'\
+ ' };'\
+ ' if (/^\s*\[Copyright:\s*(\S.*?)\s*\]/) {'\
+ ' $$files[$$n]{copyright}=$$1;'\
+ ' };'\
+ ' /^$$/ and $$n++;'\
+ '};'\
+ 'foreach $$file (@files) {'\
+ ' $$file->{license} =~ s/\s*\(with incorrect FSF address\)//;'\
+ ' $$file->{license} =~ s/\s+\(v([^)]+) or later\)/-$$1+/;'\
+ ' $$file->{copyright} =~ s/(?<=(\b\d{4}))(?{$$y=$$^N})\s*[,-]\s*((??{$$y+1}))\b/-$$2/g;'\
+ ' $$file->{copyright} =~ s/(?<=\b\d{4})\s*-\s*\d{4}(?=\s*-\s*(\d{4})\b)//g;'\
+ ' $$pattern = "$$file->{license} [$$file->{copyright}]";'\
+ ' push @{ $$patternfiles{"$$pattern"} }, $$file->{name};'\
+ '};'\
+ 'foreach $$pattern ( sort {'\
+ ' @{$$patternfiles{$$b}} <=> @{$$patternfiles{$$a}}'\
+ ' ||'\
+ ' $$a cmp $$b'\
+ ' } keys %patternfiles ) {'\
+ ' print "$$pattern: ", join(", ", sort @{ $$patternfiles{$$pattern} }), "\n";'\
+ '};'\
+ > debian/copyright_newhints
+ @patterncount="`cat debian/copyright_newhints | sed 's/^[^:]*://' | LANG=C sort -u | grep . -c -`"; \
+ echo "Found $$patterncount different copyright and licensing combinations."
+ @if [ ! -f debian/copyright_hints ]; then touch debian/copyright_hints; fi
+ @newstrings=`diff -u debian/copyright_hints debian/copyright_newhints | sed '1,2d' | egrep '^\+' - | sed 's/^\+//'`; \
+ if [ -n "$$newstrings" ]; then \
+ echo "ERROR: The following new or changed copyright notices discovered:"; \
+ echo; \
+ echo "$$newstrings"; \
+ echo; \
+ echo "To fix the situation please do the following:"; \
+ echo " 1) Investigate the above changes and update debian/copyright as needed"; \
+ echo " 2) Replace debian/copyright_hints with debian/copyright_newhints"; \
+ exit 1; \
+ fi
+
+ @echo 'No new copyright notices found - assuming no news is good news...'
+ rm -f debian/copyright_newhints
+ touch $@
+
+clean::
+ rm -f debian/stamp-copyright-check
+
+endif