<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>Objective-J/Tools/objj/lib-js/objj/objj.js</filename>
    </added>
    <added>
      <filename>Objective-J/Tools/objj/lib-js/objj/objjc.js</filename>
    </added>
    <added>
      <filename>Objective-J/Tools/objj/lib-js/objj/regexp-rhino-patch.js</filename>
    </added>
    <added>
      <filename>Objective-J/Tools/objj/shrinksafe/js.jar</filename>
    </added>
    <added>
      <filename>Objective-J/Tools/objj/shrinksafe/shrinksafe.jar</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -7,20 +7,14 @@ require 'rake/clean'
 
 require 'fileutils'
 
-$ENVIRONMENT_NARWHAL_PRODUCT = File.join($ENVIRONMENT_DIR, 'narwhal')
+$ENVIRONMENT_NARWHAL_PRODUCT = $ENVIRONMENT_DIR
 $ENVIRONMENT_BROWSERJS_PRODUCT = File.join($ENVIRONMENT_NARWHAL_PRODUCT, 'packages', 'browserjs')
 $ENVIRONMENT_JACK_PRODUCT = File.join($ENVIRONMENT_NARWHAL_PRODUCT, 'packages', 'jack')
 
-$ENVIRONMENT_NARWHAL_EXECUTABLE = File.join($ENVIRONMENT_BIN_DIR, 'narwhal')
-
 file_d $ENVIRONMENT_DIR do
   mkdir_p $ENVIRONMENT_DIR
 end
 
-file_d $ENVIRONMENT_NARWHAL_EXECUTABLE do
-  FileUtils.ln_sf('../narwhal/bin/narwhal', $ENVIRONMENT_NARWHAL_EXECUTABLE)
-end
-
 task :update_submodules do
   if executable_exists? &quot;git&quot;
     system %{cd .. &amp;&amp; git submodule init &amp;&amp; git submodule update}
@@ -30,11 +24,11 @@ task :update_submodules do
   end
 end
 
-task :build =&gt; [:update_submodules, $ENVIRONMENT_DIR, $ENVIRONMENT_NARWHAL_EXECUTABLE] do
+task :build =&gt; [:update_submodules, $ENVIRONMENT_DIR] do
   rm_rf($ENVIRONMENT_NARWHAL_PRODUCT)
   cp_r('narwhal', $ENVIRONMENT_NARWHAL_PRODUCT)
   cp_r('browserjs', $ENVIRONMENT_BROWSERJS_PRODUCT)
   cp_r('jack', $ENVIRONMENT_JACK_PRODUCT)
 end
 
-CLOBBER.include($ENVIRONMENT_NARWHAL_PRODUCT, $ENVIRONMENT_NARWHAL_EXECUTABLE)
+CLOBBER.include($ENVIRONMENT_NARWHAL_PRODUCT)</diff>
      <filename>External/Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1 @@
-Subproject commit 7b410a1323367d309b9cf77bf332f1496b086b84
+Subproject commit a93518cd13bd0a92286b25cdb38806f7bbc883c7</diff>
      <filename>External/jack</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1 @@
-Subproject commit e0bb2640c541ecff490e2e3d8f7c57301e4209f6
+Subproject commit 64a6c684c5cc8a16dbfa07c45b57f849cd02d3a9</diff>
      <filename>External/narwhal</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,8 @@ end
 
 #Framework in environment directory
 file_d $ENVIRONMENT_PRODUCT =&gt; [:Products] do
-    cp_r(File.join($PRODUCT, '.'), $ENVIRONMENT_PRODUCT)
+  rm_rf $ENVIRONMENT_PRODUCT
+  cp_r($PRODUCT, $ENVIRONMENT_PRODUCT)
 end
 
 file_d $LICENSE_PRODUCT =&gt; [$LICENSE_FILE] do
@@ -69,7 +70,7 @@ def build_product(path, flags)
     rake abort if ($? != 0)
 end
 
-task :build =&gt; [:Products, $ENVIRONMENT_PRODUCT, :build_subprojects]
+task :build =&gt; [:Products, :build_subprojects, $ENVIRONMENT_PRODUCT]
 
 task :clean =&gt; :clean_suprojects
 </diff>
      <filename>Objective-J/Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -5,35 +5,18 @@ require 'objective-j'
 require 'rake'
 require 'rake/clean'
 
-$ENVIRONMENT_NARWHAL_PRODUCT = File.join($ENVIRONMENT_DIR, 'narwhal')
+$ENVIRONMENT_NARWHAL_PRODUCT = $ENVIRONMENT_DIR
 $ENVIRONMENT_OBJJ_PRODUCT = File.join($ENVIRONMENT_NARWHAL_PRODUCT, 'packages', 'objj')
 
-$OBJJC_JS_COMPILER = File.join($ENVIRONMENT_LIB_DIR, 'shrinksafe.jar')
-$OBJJC_JS_COMPILER_RHINO = File.join($ENVIRONMENT_LIB_DIR, 'js.jar')
-
 $EXECUTABLES = ['objj', 'objjc', 'cplutil']
-$EXECUTABLES_PRODUCTS = $EXECUTABLES.map {|e| File.join($ENVIRONMENT_BIN_DIR, e) }
 
-$EXECUTABLES.each do |executable|
-  source = File.join('objj', 'bin', executable)
-  dest = File.join($ENVIRONMENT_BIN_DIR, executable)
-  file_d dest =&gt; source do
-    #cp(source, dest)
-    FileUtils.ln_sf(&quot;../narwhal/packages/objj/bin/#{executable}&quot;, dest)
-  end
-end
-
-file_d $OBJJC_JS_COMPILER =&gt; 'shrinksafe.jar' do
-  cp('shrinksafe.jar', $OBJJC_JS_COMPILER)
-end
-
-file_d $OBJJC_JS_COMPILER_RHINO =&gt; 'js.jar' do
-  cp('js.jar', $OBJJC_JS_COMPILER_RHINO)
-end
-
-task :build =&gt; [$OBJJC_JS_COMPILER, $OBJJC_JS_COMPILER_RHINO].concat($EXECUTABLES_PRODUCTS) do
+task :build do
   rm_rf($ENVIRONMENT_OBJJ_PRODUCT)
   cp_r('objj', $ENVIRONMENT_OBJJ_PRODUCT)
+  
+  $EXECUTABLES.each do |executable|
+    symlink_executable File.join($ENVIRONMENT_BIN_DIR, executable)
+  end
 end
 
-CLOBBER.include($ENVIRONMENT_OBJJ_PRODUCT, $EXECUTABLES_PRODUCTS, $OBJJC_JS_COMPILER, $OBJJC_JS_COMPILER_RHINO)
+CLOBBER.include($ENVIRONMENT_OBJJ_PRODUCT)</diff>
      <filename>Objective-J/Tools/Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -10,6 +10,8 @@ importPackage(java.lang);
 
 importClass(java.io.BufferedReader);
 
+var SHRINKSAFE_PATH = File.join(OBJJ_HOME, &quot;shrinksafe&quot;, &quot;shrinksafe.jar&quot;),
+    RHINO_PATH = File.join(OBJJ_HOME, &quot;shrinksafe&quot;, &quot;js.jar&quot;)
 
 OBJJ_PREPROCESSOR_PREPROCESS    = 1 &lt;&lt; 10;
 OBJJ_PREPROCESSOR_COMPRESS      = 1 &lt;&lt; 11;
@@ -53,7 +55,7 @@ function compress(/*String*/ aCode, /*Object*/ flags, /*File*/ tmpFile)
 {
     File.write(tmpFile, aCode, { charset:&quot;UTF-8&quot; });
 
-    return exec([&quot;java&quot;, &quot;-Dfile.encoding=UTF-8&quot;, &quot;-classpath&quot;, OBJJ_HOME + &quot;/lib/js.jar&quot; + &quot;:&quot; + OBJJ_HOME + &quot;/lib/shrinksafe.jar&quot;, &quot;org.dojotoolkit.shrinksafe.Main&quot;, tmpFile.getCanonicalPath()]);
+    return exec([&quot;java&quot;, &quot;-Dfile.encoding=UTF-8&quot;, &quot;-classpath&quot;, [RHINO_PATH, SHRINKSAFE_PATH].join(&quot;:&quot;), &quot;org.dojotoolkit.shrinksafe.Main&quot;, tmpFile.getCanonicalPath()]);
 }
 
 //#define SET_CONTEXT(aFragment, aContext) aFragment.context = aContext</diff>
      <filename>Objective-J/Tools/objj/bin/objjc</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 {
     &quot;author&quot;: &quot;Tom Robinson&quot;,
     &quot;dependencies&quot;: [],
-    &quot;js&quot;: &quot;lib&quot;,
+    &quot;lib&quot;: &quot;lib-js&quot;,
     &quot;jars&quot;: &quot;jars/&quot;
 }</diff>
      <filename>Objective-J/Tools/objj/package.json</filename>
    </modified>
    <modified>
      <diff>@@ -37,8 +37,8 @@ task :downloads =&gt; [:starter_download, :tools_download]
 
 file_d $TOOLS_DOWNLOAD_ENV =&gt; [:debug, :release] do
     rm_rf($TOOLS_DOWNLOAD_ENV)
-    cp_r(File.join($RELEASE_ENV, '.'), $TOOLS_DOWNLOAD_ENV)
-    cp_r(File.join($DEBUG_ENV, 'lib', 'Frameworks', '.'), File.join($TOOLS_DOWNLOAD_ENV, 'lib', 'Frameworks', 'Debug'))
+    cp_r(File.join($RELEASE_ENV), $TOOLS_DOWNLOAD_ENV)
+    cp_r(File.join($DEBUG_ENV, 'packages', 'objj', 'lib', 'Frameworks'), File.join($TOOLS_DOWNLOAD_ENV, 'packages', 'objj', 'lib', 'Frameworks', 'Debug'))
 end
 
 file_d $TOOLS_DOWNLOAD_EDITORS =&gt; [$TOOLS_EDITORS] do</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -23,18 +23,19 @@ while [ $# -ge 1 ]; do
 done
 
 mkdir -p $INSTALL_DIR/bin
-mkdir -p $INSTALL_DIR/share/objj
+mkdir -p $INSTALL_DIR/share
 
-cp -fR objj/* $INSTALL_DIR/share/objj/.
+rm -rf $INSTALL_DIR/share/narwhal
+cp -fR objj $INSTALL_DIR/share/narwhal
 
 BINS=`ls objj/bin`
 for BIN in $BINS
 do
-    ln -sf $INSTALL_DIR/share/objj/bin/$BIN $INSTALL_DIR/bin/$BIN
+    ln -sf $INSTALL_DIR/share/narwhal/bin/$BIN $INSTALL_DIR/bin/$BIN
     chmod +x $INSTALL_DIR/bin/$BIN
 done
 
-chmod +x $INSTALL_DIR/share/objj/bin/*
+chmod +x $INSTALL_DIR/share/narwhal/bin/*
 
 gem install *.gem
 gem cleanup objective-j</diff>
      <filename>Tools/Install/install-tools</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,14 @@
 #!/bin/bash
 
-# get path of the executable
+# get the absolute path of the executable
 SELF_PATH=$(cd -P -- &quot;$(dirname -- &quot;$0&quot;)&quot; &amp;&amp; pwd -P) &amp;&amp; SELF_PATH=$SELF_PATH/$(basename -- &quot;$0&quot;)
 
 # resolve symlinks
-if [ -h $SELF_PATH ]; then
-	SELF_PATH=`readlink $SELF_PATH`
-fi
+while [ -h &quot;$SELF_PATH&quot; ]; do
+	DIR=$(dirname -- &quot;$SELF_PATH&quot;)
+	SYM=$(readlink -- &quot;$SELF_PATH&quot;)
+	SELF_PATH=$(cd -- &quot;$DIR&quot; &amp;&amp; cd -- $(dirname -- &quot;$SYM&quot;) &amp;&amp; pwd)/$(basename -- &quot;$SYM&quot;)
+done
 
 SELF_DIR=`dirname $SELF_PATH`
 SELF_HOME=`dirname $SELF_DIR`</diff>
      <filename>Tools/Rake/lib/objj-executable</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 require 'rake'
+require 'pathname'
 
 def gem_command
     case RUBY_PLATFORM
@@ -48,8 +49,9 @@ $CONFIGURATION              = ENV['CONFIG']
 $BUILD_DIR                  = ENV['BUILD_PATH']
 $PRODUCT_DIR                = File.join($BUILD_DIR, $CONFIGURATION)
 $ENVIRONMENT_DIR            = File.join($BUILD_DIR, $CONFIGURATION, 'env')
-$ENVIRONMENT_BIN_DIR        = File.join($ENVIRONMENT_DIR, 'bin')
-$ENVIRONMENT_LIB_DIR        = File.join($ENVIRONMENT_DIR, 'lib') 
+$ENVIRONMENT_NARWHAL_BIN_DIR= File.join($ENVIRONMENT_DIR, 'bin')
+$ENVIRONMENT_BIN_DIR        = File.join($ENVIRONMENT_DIR, 'packages', 'objj', 'bin')
+$ENVIRONMENT_LIB_DIR        = File.join($ENVIRONMENT_DIR, 'packages', 'objj', 'lib') 
 $ENVIRONMENT_FRAMEWORKS_DIR = File.join($ENVIRONMENT_LIB_DIR, 'Frameworks')
 
 $HOME_DIR        = File.expand_path(File.dirname(__FILE__))
@@ -60,7 +62,7 @@ if !(defined? COMMON_DO_ONCE)
     COMMON_DO_ONCE = true
     
     $LOAD_PATH &lt;&lt; File.join($HOME_DIR, 'Tools', 'Rake', 'lib')
-    ENV['PATH'] = $ENVIRONMENT_BIN_DIR + ':' + ENV['PATH']
+    ENV['PATH'] = $ENVIRONMENT_NARWHAL_BIN_DIR + ':' + ENV['PATH']
 end
 
 require 'objective-j'
@@ -93,7 +95,14 @@ $OBJJ_TEMPLATE_EXECUTABLE   = File.join($HOME_DIR, 'Tools', 'Rake', 'lib', 'objj
 
 def make_objj_executable(path)
     cp($OBJJ_TEMPLATE_EXECUTABLE, path)
-    File.chmod 0755, path
+    File.chmod(0755, path)
+    symlink_executable(path)
+end
+
+def symlink_executable(source)
+    relative = Pathname.new(source).relative_path_from(Pathname.new($ENVIRONMENT_NARWHAL_BIN_DIR))
+    destination = File.join($ENVIRONMENT_NARWHAL_BIN_DIR, File.basename(source))
+    FileUtils.ln_sf(relative, destination)
 end
 
 task :build</diff>
      <filename>common.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>3f496f1a10c9bb35b813e60f82213c9074a962dc</id>
    </parent>
  </parents>
  <author>
    <name>Tom Robinson</name>
    <email>tom@280north.com</email>
  </author>
  <url>http://github.com/280north/cappuccino/commit/172c7330ab6f5c745c7214b0a2b3df134339ef9e</url>
  <id>172c7330ab6f5c745c7214b0a2b3df134339ef9e</id>
  <committed-date>2009-08-09T14:39:36-07:00</committed-date>
  <authored-date>2009-08-09T14:39:36-07:00</authored-date>
  <message>Make objj a self contained narwhal package. Invert install so narwhal contains objj not vice versa.

Conflicts:

	Tools/Rake/lib/objective-j/bundletask.rb</message>
  <tree>0ce4aa469791701c56699032ee0171ec78e94015</tree>
  <committer>
    <name>Tom Robinson</name>
    <email>tom@280north.com</email>
  </committer>
</commit>
