#!/usr/bin/rubyfiles = []skip = trueIO.popen("git-diff-index -z -M --cached HEAD").each("\0") { |line| if not skip files.push(line.strip()) end skip = !skip}$ok = truedef error(msg) $stderr.puts "Error: " + msg $ok = falseenddef do_initialize_h(files) if files.include?("libswfdec/swfdec_initialize.as") || files.include?("libswfdec/swfdec_initialize.h") || files.include?("libswfdec/swfdec_as_initialize.as") || files.include?("libswfdec/swfdec_as_initialize.h") if not system("gcc -Wall -Werror `pkg-config --libs --cflags libming glib-2.0` libswfdec/compiler.c -o libswfdec/compiler") error("Couldn't compile libswfdec/compiler") return end if files.include?("libswfdec/swfdec_initialize.as") || files.include?("libswfdec/swfdec_initialize.h") if not system("libswfdec/compiler libswfdec/swfdec_initialize.as 2> /dev/null | diff libswfdec/swfdec_initialize.h - > /dev/null") error("libswfdec/swfdec_initialize.h is not in sync with swfdec_initialize.as"); end end if files.include?("libswfdec/swfdec_as_initialize.as") || files.include?("libswfdec/swfdec_as_initialize.h") if not system("libswfdec/compiler libswfdec/swfdec_as_initialize.as 2> /dev/null | diff libswfdec/swfdec_as_initialize.h - > /dev/null") error("libswfdec/swfdec_as_initialize.h is not in sync with swfdec_as_initialize.as"); end end endenddef do_test_trace_makefile_am(files) found = false files.each { |file| if file =~ /^test\/trace/ found = true break end } if not found then return end ignore = [".gitignore", "Makefile.am", "trace.c", "swfdec_interaction.c", "swfdec_interaction.h"] files_directory = [] files_makefile = [] dist = false IO.popen("git-ls-files -z test/trace").each("\0") { |line| line.strip!() if not ignore.include?(line["test/trace/".length..-1]) files_directory.push(line) end } File.open("test/trace/Makefile.am").each { |line| if dist == false if line =~ /^EXTRA_DIST/ dist = true end else if line =~ /\\\s*$/ line.gsub!(/\\\s*$/, "") else dist = false end files_makefile.push("test/trace/" + line.strip()) end } files_directory.each { |file| if files.include?("test/trace/Makefile.am") || files.include?(file) if not files_makefile.include?(file) error("File " + file + " is not mentioned in Makefile.am") end end if files.include?(file) if file =~ /\.swf$/ if not files_directory.include?(file+".trace") error("File " + file + " doesn't have corresponding .trace file") end elsif file =~ /\.swf\.trace$/ if not files_directory.include?(file[0..-7]) error("File " + file + " doesn't have corresponding .swf file") end end end } # FIXME only check the changed parts of Makefile.am if files.include?("test/trace/Makefile.am") files_makefile.each { |file| if not files_directory.include?(file) error("test/trace/Makefile.am mentions non-existing file " + file) end } endenddo_initialize_h(files)do_test_trace_makefile_am(files)if not $ok exit 1else exit 0end