diff --git a/utils/clean_all.rb b/utils/clean_all.rb old mode 100644 new mode 100755 index ad976811..a579114b --- a/utils/clean_all.rb +++ b/utils/clean_all.rb @@ -1,22 +1,43 @@ #!/usr/bin/env ruby +# +# MIT License +# +# Copyright (c) 2018-2019 Andre Richter +# +# 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. +# require 'fileutils' def clean_all - crates = Dir["**/Cargo.toml"].sort! + crates = Dir['**/Cargo.toml'].sort! crates.each do |x| next if x.include?('raspi3_boot') x = File.dirname(x) Dir.chdir(x) do - system('make clean') or exit(1) + system('make clean') || exit(1) end end FileUtils.rm_rf('xbuild_sysroot') end -if __FILE__ == $0 - clean_all() -end +clean_all if $PROGRAM_NAME == __FILE__ diff --git a/utils/clippy_all.rb b/utils/clippy_all.rb old mode 100644 new mode 100755 index 345469d6..98a123b6 --- a/utils/clippy_all.rb +++ b/utils/clippy_all.rb @@ -1,7 +1,30 @@ #!/usr/bin/env ruby +# +# MIT License +# +# Copyright (c) 2018-2019 Andre Richter +# +# 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. +# def clippy_all - crates = Dir["*/Cargo.toml"].sort! + crates = Dir['*/Cargo.toml'].sort! crates.delete_if { |x| x.include?('bareminimum') } crates.each do |x| @@ -13,6 +36,4 @@ def clippy_all end end -if __FILE__ == $0 - clippy_all() -end +clippy_all if $PROGRAM_NAME == __FILE__ diff --git a/utils/copyrighted.rb b/utils/copyrighted.rb new file mode 100644 index 00000000..b6924f70 --- /dev/null +++ b/utils/copyrighted.rb @@ -0,0 +1,63 @@ +# +# MIT License +# +# Copyright (c) 2019 Andre Richter +# +# 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. +# + +def checkin_years(file) + checkin_years = `git --no-pager log \ + --reverse --pretty=format:'%ad' --date=format:'%Y' #{file}` + + checkin_years.split(/\n/).map!(&:to_i) +end + +def copyrighted?(file, is_being_checked_in) + checkin_years = checkin_years(file) + + checkin_years << Time.now.year if is_being_checked_in + + checkin_min = checkin_years.min + checkin_max = checkin_years.max + + copyright_lines = File.readlines(file).grep(/.*Copyright.*/) + + min_seen = false + max_seen = false + copyright_lines.each do |x| + x.scan(/\d\d\d\d/).each do |y| + y = y.to_i + + min_seen = true if y == checkin_min + max_seen = true if y == checkin_max + end + end + + unless min_seen && max_seen + puts file + ': ' + puts "\tHeader: " + copyright_lines.inspect + puts "\tMin year: " + checkin_min.to_s + puts "\tMax year: " + checkin_max.to_s + + return false + end + + true +end diff --git a/utils/fmt_all.rb b/utils/fmt_all.rb old mode 100644 new mode 100755 index bec10f21..8b4e4c82 --- a/utils/fmt_all.rb +++ b/utils/fmt_all.rb @@ -1,7 +1,30 @@ #!/usr/bin/env ruby +# +# MIT License +# +# Copyright (c) 2018-2019 Andre Richter +# +# 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. +# def fmt_all - crates = Dir["**/Cargo.toml"].sort! + crates = Dir['**/Cargo.toml'].sort! crates.each do |x| x = File.dirname(x) @@ -12,6 +35,4 @@ def fmt_all end end -if __FILE__ == $0 - fmt_all() -end +fmt_all if $PROGRAM_NAME == __FILE__ diff --git a/utils/make_all.rb b/utils/make_all.rb old mode 100644 new mode 100755 index 3890f124..5d53187f --- a/utils/make_all.rb +++ b/utils/make_all.rb @@ -1,7 +1,30 @@ #!/usr/bin/env ruby +# +# MIT License +# +# Copyright (c) 2018-2019 Andre Richter +# +# 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. +# def make_all - crates = Dir["**/Cargo.toml"].sort! + crates = Dir['**/Cargo.toml'].sort! crates.each do |x| next if x.include?('raspi3_boot') @@ -17,6 +40,4 @@ def make_all end end -if __FILE__ == $0 - make_all() -end +make_all if $PROGRAM_NAME == __FILE__ diff --git a/utils/make_panic_test.rb b/utils/make_panic_test.rb old mode 100644 new mode 100755 index 553aab65..33ee87fa --- a/utils/make_panic_test.rb +++ b/utils/make_panic_test.rb @@ -1,7 +1,30 @@ #!/usr/bin/env ruby +# +# MIT License +# +# Copyright (c) 2018-2019 Andre Richter +# +# 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. +# def make_panic_test - crates = Dir["**/Cargo.toml"].sort! + crates = Dir['**/Cargo.toml'].sort! crates.each do |x| next if x.include?('raspi3_boot') @@ -14,6 +37,4 @@ def make_panic_test end end -if __FILE__ == $0 - make_panic_test() -end +make_panic_test if $PROGRAM_NAME == __FILE__ diff --git a/utils/ready_for_publish.rb b/utils/ready_for_publish.rb old mode 100644 new mode 100755 index 62295fef..beb6c2a4 --- a/utils/ready_for_publish.rb +++ b/utils/ready_for_publish.rb @@ -1,4 +1,27 @@ #!/usr/bin/env ruby +# +# MIT License +# +# Copyright (c) 2018-2019 Andre Richter +# +# 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. +# require_relative 'clean_all' require_relative 'clippy_all' @@ -7,11 +30,11 @@ require_relative 'make_all' require_relative 'make_panic_test' require_relative 'sanity_checks' -clean_all() -clippy_all() +clean_all +sanity_checks +clippy_all -clean_all() -fmt_all() -make_all() -make_panic_test() -sanity_checks() +clean_all +fmt_all +make_all +make_panic_test diff --git a/utils/sanity_checks.rb b/utils/sanity_checks.rb old mode 100644 new mode 100755 index 65780136..51a4772f --- a/utils/sanity_checks.rb +++ b/utils/sanity_checks.rb @@ -1,16 +1,60 @@ #!/usr/bin/env ruby +# +# MIT License +# +# Copyright (c) 2018-2019 Andre Richter +# +# 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. +# -def sanity_checks - crates = Dir["**/Cargo.toml"].sort! +require_relative 'copyrighted' + +def patched? + crates = Dir['**/Cargo.toml'].sort! - crates.each do |x| - if File.readlines(x).grep(/patch.crates-io/).size > 0 - puts "#{x} contains patch.crates-io!" + crates.each do |f| + unless File.readlines(f).grep(/patch.crates-io/).empty? + puts "#{fb} contains patch.crates-io!" exit(1) end end end -if __FILE__ == $0 - sanity_checks() +def check_old_copyrights + error = false + + sources = Dir.glob('**/*.{S,rs,rb}') + Dir.glob('**/Makefile') + + sources.delete_if do |x| + !system("git ls-files --error-unmatch #{x}", %i[out err] => File::NULL) + end + + sources.sort.reverse_each do |f| + error = true unless copyrighted?(f, false) + end + + exit(1) if error +end + +def sanity_checks + patched? + check_old_copyrights end + +sanity_checks if $PROGRAM_NAME == __FILE__