[haiku-development] Re: Several script-based errors in the build system

  • From: Ingo Weinhold <ingo_weinhold@xxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Mon, 06 Jul 2009 19:36:53 +0200

On 2009-07-06 at 17:12:58 [+0200], André Braga <meianoite@xxxxxxxxx> wrote:
> 2009/7/6 Ingo Weinhold <ingo_weinhold@xxxxxx>:
> > I believe I have nailed the problem in r31419. Builds with multiple jobs
> > should work fine now, if xattr support is enabled. If you find any further
> > problems, please file a ticket. The disclaimer for builds without xattrs
> > still applies.
> 
> Unfortunately the build failed with a -j8 build on, surprise, the time
> zones. I'm pasting here the (still enormous) relevant error message
> out of the jam log. Does it warrant creating a ticket?

That looks like the script corruption problem. You sure you updated to r31419 
or later? I'm asking because I'm pretty confident that I understood and fixed 
the problem. I could reliably reproduce it with -j4 or -j8 and cannot 
reproduce it with the current revision anymore. Even the attached patch which 
detects concurrent executation of actions for the "copy files" script (more 
reliably than hoping for the script to get corrupted) isn't triggered 
anymore. I also just took the time to verify that things are fine under 
FreeBSD, which seems to be your build platform.

So, if you're indeed using the current revision and encounter the problem 
with it, please create a new trac ticket. Please also try the attached patch.

CU, Ingo
Index: build/jam/ImageRules
===================================================================
--- build/jam/ImageRules        (revision 31419)
+++ build/jam/ImageRules        (working copy)
@@ -535,28 +535,36 @@
 
 actions piecemeal AppendToContainerCopyFilesScript bind OUTPUT_SCRIPT
 {
+       mkdir /tmp/haiku-image-serialization-copy-files || exit 1
        echo \$cp "\"\${sPrefix}$(2)\"" "\"\${tPrefix}$(TARGET_DIR)\"" \
                >> $(OUTPUT_SCRIPT)
+       rmdir /tmp/haiku-image-serialization-copy-files
 }
 
 
 actions AppendToContainerCopyFilesScriptSingleFile
 {
+       mkdir /tmp/haiku-image-serialization-copy-files || exit 1
        echo \$cp "\"\${sPrefix}$(2[2])\"" \
                "\"\${tPrefix}$(TARGET_DIR)/$(INSTALL_TARGET_NAME)\"" >> $(2[1])
+       rmdir /tmp/haiku-image-serialization-copy-files
 }
 
 
 actions AddSymlinkToContainerCopyFilesScript
 {
+       mkdir /tmp/haiku-image-serialization-copy-files || exit 1
        echo \$ln -sfn "\"$(SYMLINK_TARGET)\"" "\"\${tPrefix}$(1:G=)\"" >> 
$(2[1])
+       rmdir /tmp/haiku-image-serialization-copy-files
 }
 
 
 actions AddDirectoryToContainerCopyFilesScript
 {
+       mkdir /tmp/haiku-image-serialization-copy-files || exit 1
        echo \$cp -r $(EXCLUDE_PATTERNS) "\"\${sPrefix}$(SOURCE_DIRECTORY)/.\"" 
\
                "\"\${tPrefix}$(TARGET_DIRECTORY:G=)\"" >> $(2[1])
+       rmdir /tmp/haiku-image-serialization-copy-files
 }
 
 

Other related posts: