Index: trunk/PS-IPP-Metadata-Config/Build.PL
===================================================================
--- trunk/PS-IPP-Metadata-Config/Build.PL	(revision 8583)
+++ trunk/PS-IPP-Metadata-Config/Build.PL	(revision 8947)
@@ -4,4 +4,8 @@
 my $class = Module::Build->subclass(code => <<'EOF');
 use File::Copy;
+use File::stat;
+
+my $grammar = "config_grammar.txt";
+my $parser  = "lib/PS/IPP/Metadata/Parser.pm";
 
 sub ACTION_code {
@@ -10,8 +14,9 @@
     $self->SUPER::ACTION_code(@_);
 
-    system("perl -MParse::RecDescent - config_grammar.txt PS::IPP::Metadata::Parser") == 0
-        or die "Parse::RecDecent code gen failed: $?";
-    move("Parser.pm", "lib/PS/IPP/Metadata/Parser.pm")
-        or die "move failed: $!";
+    if (stat($grammar)->mtime > stat($parser)->mtime) {
+        system("perl -MParse::RecDescent - $grammar PS::IPP::Metadata::Parser") == 0
+            or die "Parse::RecDecent code gen failed: $?";
+        move("Parser.pm", $parser) or die "move failed: $!";
+    }
 }
 EOF
