<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake">
    <title>gmane.comp.lang.ruby.rake</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/708"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/707"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/706"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/705"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/704"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/703"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/702"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/701"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/700"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/699"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/698"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/697"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/696"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/695"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/694"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/693"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/692"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/691"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/690"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/689"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/708">
    <title>Overloading the divide symbol on String to facilitate path concatenation?</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/708</link>
    <description>&lt;pre&gt;Hello fellow rake developers,

I started using this construction in my rake files and I wanted to get your opinion on it (though if there is a better forum, please direct me there).


Problem
-------

In my rake scripts, I like to assign directory paths to variables so I can use the variables later in my program. The problem is, when concatenating the variables, I end up with ugly combinations like:

  File.join(BUILD_D, "bin", "x86")
  File.join(CACHE_D, "scripts", SCRIPT_TEMP_NAME)


Possible Solution
-----------------

I find this hard to read so I tried something:

  class String
  
    def /(path)
      if !path
        self
      else
        File.join(self, path)
      end
    end
  
  end

Now I can make paths like:

  BUILD_D/"bin"/"x86"
  CACHE_D/"scripts"/SCRIPT_TEMP_NAME


Discussion
----------

My spidey sense is on overload from former C++ days where I was filled with "operator overloading is bad. Always. Never ever do it. Ever... ever"

But I have to say, the more I use this, the more I like i&lt;/pre&gt;</description>
    <dc:creator>Michael Bishop</dc:creator>
    <dc:date>2012-04-30T19:00:12</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/707">
    <title>ANN: (yet another) version of -j implementation (includes -m for multitask)</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/707</link>
    <description>&lt;pre&gt;Hello Everyone,

My last implementation of -j had a fatal flaw which could have led to stack overflow for large amounts of tasks. I discovered this after prototyping a version with drake's feature of turning tasks into multitasks.

I have a new version with a rewritten MultiTask implementation which removes that flaw, is smaller, and easily fits into Rake code. In addition, I've added an optional "--multitask -m" flag to turn every task into a multitask (in direct homage to drake).

   https://github.com/michaeljbishop/rake

I've again added a pull-request for the inclusion of the change to the master branch (as always allowing for further changes to match the style and simplicity of the original)

  https://github.com/jimweirich/rake/pull/113

Questions and comments as always, are welcome.

Sincerely,

Michael Bishop


---


## PROBLEM SUMMARY (THE CASE FOR -j and -m)

Rake can be unusable for builds invoking large numbers of concurrent external processes.

## PROBLEM DESCRIPTION

Rake makes it easy to maxi&lt;/pre&gt;</description>
    <dc:creator>Michael Bishop</dc:creator>
    <dc:date>2012-04-27T13:54:53</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/706">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/706</link>
    <description>&lt;pre&gt;
Yes, in the sense that all tasks can be executed in parallel with other tasks.

Upside parallelism is octagonal to the method
('file'/'directory'/'task') used to define the task.

It has the downside that some tasks may not be suitable for executing
in parallel.  E.g. the dependencies are wrong, or the task itself
incorrectly shares some resource with other tasks (say multiple tasks
modify the same file as an intermediate step during the task
execution).  IMHO, making stuff work in parallel requires thinking
about the problem anyway and often leads to better code.  If one
needed to make something single thread a mutex should do the trick.
So it's not that hard to be a good -j citizen :)


Yes, this is whatever is set in the -j option.


Yes, it's to help people debug rakefile dependencies, as you've
probably figured :)

On 20 April 2012 09:51, Michael Bishop &amp;lt;mbishop&amp;lt; at &amp;gt;me.com&amp;gt; wrote:
&lt;/pre&gt;</description>
    <dc:creator>Mark Watson</dc:creator>
    <dc:date>2012-04-20T21:33:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/705">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/705</link>
    <description>&lt;pre&gt;Quick question for the list:

After reading more about drake, I wanted to summarize the differences for my own understanding.

Differences in drake from rake:

1 - All tasks are implicitly multitask
2 - There is a cap on the number of concurrent tasks
3 - There is a control to create a repeatable single-threaded random invocation of tasks (--randomize[=SEED])

Is this correct?

_ michael
&lt;/pre&gt;</description>
    <dc:creator>Michael Bishop</dc:creator>
    <dc:date>2012-04-20T08:51:17</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/704">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/704</link>
    <description>&lt;pre&gt;
On Apr 19, 2012, at 2:40 PM, Hongli Lai wrote:


I went through this just this week, after getting tired of some C++ builds using only 1 core. I first looked at multitask but got stopped by the file dependence issue. Then I did some wider searching and stumbled across drake. Been happy ever since.

I used make a lot in the past and always made the effort to make all the dependencies explicit (rather than implicit through dependence list order) so that make -j would work. But a lot of Makefiles don't do this and break with make -j just as many rakefiles would.

I can see this being a bigger issue with rake since its expressiveness makes it a lot easier to write things that have side-effects and won't parallelize. (Just like I see people write rakefiles that don't converge: that rebuild artifacts because they haven't described the dependencies correctly.)

But in any case, for my part, with (d)rake -j, I don't go back to make anymore at all, which makes my world a little nicer.
&lt;/pre&gt;</description>
    <dc:creator>Steven Parkes</dc:creator>
    <dc:date>2012-04-20T02:25:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/703">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/703</link>
    <description>&lt;pre&gt;
I agree. I would really love to see a 'make -j' equivalent in Rake.

&lt;/pre&gt;</description>
    <dc:creator>Hongli Lai</dc:creator>
    <dc:date>2012-04-19T21:40:18</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/702">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/702</link>
    <description>&lt;pre&gt;
Second that. The option to specify parallel builds for any task is
handy because the task may not derive from multitask, e.g. it could be
a file task to build a c library from multiple source files that you
want to build in parallel.

Personally I've used my own patch to rake to do this, that was before
drake, but I still use it due to drake having an extra dependency.

https://github.com/watsonmw/rakecpp/blob/master/minusj/minusj.rb

On 19 April 2012 17:21, Jos Backus &amp;lt;jos&amp;lt; at &amp;gt;catnook.com&amp;gt; wrote:
&lt;/pre&gt;</description>
    <dc:creator>Mark Watson</dc:creator>
    <dc:date>2012-04-19T17:03:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/701">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/701</link>
    <description>&lt;pre&gt;
On Apr 19, 2012, at 11:48 AM, Jim Weirich wrote:


That is exactly right. It only affects Multitask.

Some additional interesting tidbits: There is a queue of blocks that is a class member of Multitask which all Multitask instances use to queue their prerequisites. So, your thread's call to MultiTask#invoke_prerequisites may end up processing prerequisites for another's call to MultiTask#invoke_prerequisites. No matter though, your call won't return until all your prerequisites are completed.


Thank you for that clarification. I'd only assumed that, given my rather cursory look, and it's nice to have it confirmed.

_ michael
&lt;/pre&gt;</description>
    <dc:creator>Michael Bishop</dc:creator>
    <dc:date>2012-04-19T16:28:24</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/700">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/700</link>
    <description>&lt;pre&gt;
On Apr 19, 2012, at 11:48 AM, Jim Weirich wrote:


That is exactly right. It only affects Multitask.

Some additional interesting tidbits: There is a queue of blocks that is a class member of Multitask which all Multitask instances use to queue their prerequisites. So, your thread's call to MultiTask#invoke_prerequisites may end up processing prerequisites for another's call to MultiTask#invoke_prerequisites. No matter though, your call won't return until all your prerequisites are completed.


Thank you for that clarification. I'd only assumed that, given my rather cursory look, and it's nice to have it confirmed.

_ michael
&lt;/pre&gt;</description>
    <dc:creator>Michael Bishop</dc:creator>
    <dc:date>2012-04-19T16:36:32</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/699">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/699</link>
    <description>&lt;pre&gt;To be honest, I prefer the drake semantics as they are closer to make's.

I would love to see rake and drake merged.

Jos
&lt;/pre&gt;</description>
    <dc:creator>Jos Backus</dc:creator>
    <dc:date>2012-04-19T16:21:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/698">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/698</link>
    <description>&lt;pre&gt;
On Apr 19, 2012, at 10:34 AM, Hongli Lai wrote:


Michael can correct me if I'm wrong, but the -j option just limits the number of concurrent tasks used to service the "multitask" task targets.  Multitask is an existing rake facility that the -j option makes more usable.

Drake actually changes the semantics of the regular rake tasks so that they run in parallel.

&lt;/pre&gt;</description>
    <dc:creator>Jim Weirich</dc:creator>
    <dc:date>2012-04-19T15:48:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/697">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/697</link>
    <description>&lt;pre&gt;Hi Hongli Lai,

This is a good question. I only knew of the Drake project as of last night so I haven't had a long period of time to investigate its implementation.

My initial analysis based on the Drake official pull-request announcement indicates a few differences but please add corrections if I am misinformed. I might be.

Drake links:

  https://github.com/quix/rake/tree/mainline-merge-candidate#readme

  http://quix.github.com/rake/files/doc/parallel_rdoc.html


For the purposes of discussion, I'll refer to my submitted rake as "mjbrake" here.


Dependency differences:
-----------------------

Drake relies on an external gem named comp_tree for parallelism. mjbrake relies on no library but instead, like the original rake, leverages the stack to make sure all the prerequisites are executed in order.


Code size differences:
----------------------

Github shows the change for mjbrake at

  "Showing 3 changed files with 74 additions and 7 deletions."

Drake shows 79 lines (+257 lines of code for comp_tree&lt;/pre&gt;</description>
    <dc:creator>Michael Bishop</dc:creator>
    <dc:date>2012-04-19T15:48:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/696">
    <title>Re: Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/696</link>
    <description>&lt;pre&gt;Have you also looked at http://drake.rubyforge.org? How does your
implementation differ from his?

On Thu, Apr 19, 2012 at 1:36 PM, Michael Bishop &amp;lt;mbishop&amp;lt; at &amp;gt;me.com&amp;gt; wrote:



&lt;/pre&gt;</description>
    <dc:creator>Hongli Lai</dc:creator>
    <dc:date>2012-04-19T14:34:08</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/695">
    <title>Announcement: Alternate -j implementation</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/695</link>
    <description>&lt;pre&gt;Hello Everyone,

I've recently finished an implementation of -j &amp;lt;max_concurrent_jobs&amp;gt; and would be delighted if the members of this list would take a detailed look at it

It's in this rake branch on github:

   https://github.com/michaeljbishop/rake/commit/295c7a4d6d58b3e10c27b940a8259dd3e01c52f0
 or
   http://bit.ly/JMVARy

In addition, I've added a pull-request for the inclusion of the change to the master branch (allowing of course for further changes to match the style and simplicity of the original)

 https://github.com/jimweirich/rake/pull/112

My apologies if this has been hashed out many times on this list. I'm hoping to offer a fresh look at the problem. Thank you for your consideration.

Sincerely,

Michael Bishop


---


SUMMARY
-------

USER INTERFACE:

The user-interface is simply a new -j flag that specifies the maximum number of tasks that can execute simultaneously (discussed here before as I've seen). If the -j flag is omitted, the old behavior of unlimited concurrent tasks is retained.


IM&lt;/pre&gt;</description>
    <dc:creator>Michael Bishop</dc:creator>
    <dc:date>2012-04-19T11:36:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/694">
    <title>Re: Merging drake and rake?</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/694</link>
    <description>&lt;pre&gt;
I would also like to know.

&lt;/pre&gt;</description>
    <dc:creator>Hongli Lai</dc:creator>
    <dc:date>2011-09-17T07:28:59</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/693">
    <title>Merging drake and rake?</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/693</link>
    <description>&lt;pre&gt;Hi,

Are there any plans to merge drake's features back into rake?

Jos
&lt;/pre&gt;</description>
    <dc:creator>Jos Backus</dc:creator>
    <dc:date>2011-09-17T05:39:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/692">
    <title>No longer able to run Rake tests due fork() usage</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/692</link>
    <description>&lt;pre&gt;Hello,

I guess the subject explain it completely, but I'm not able to run
Rake tests anymore due fork usage in them.

This not only affects Windows but also JRuby.

I know this is related to session gem removal, but was wondering if
there isn't another workaround?

Thank you.
&lt;/pre&gt;</description>
    <dc:creator>Luis Lavena</dc:creator>
    <dc:date>2011-08-16T17:03:08</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/691">
    <title>Beta 1 for Rake 0.9.3 is out</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/691</link>
    <description>&lt;pre&gt;I've pushed a beta version of 0.9.3 out to Rubygems.org.  

Here is the change list.

* The rake test loader now removes arguments it has processed.  Issue #51
* Rake::TaskArguments now responds to #values_at
* RakeFileUtils.verbose_flag = nil silences output the same as 0.8.7
* Rake tests are now directory-independent
* Rake tests are no longer require flexmock
* Commands constant is no longer polluting top level namespace.
* Show only the interesting portion of the backtrace by default (James M. Lawrence).
* Added --reduce-compat optiont to remove backward compatible DSL hacks (James M. Lawrence).

The rake tests task pattern issue isn't explicitly mentioned here, but it seems to be resolved.  Eric, I'm assuming you did something to fix that (cf. https://github.com/jimweirich/rake/issues/51)

Anyways, grab the beta and give it a spin and report back if there are issues.

Thanks.

&lt;/pre&gt;</description>
    <dc:creator>Jim Weirich</dc:creator>
    <dc:date>2011-08-06T03:05:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/690">
    <title>3 Failures at master (a774ef8)</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/690</link>
    <description>&lt;pre&gt;Hello,

I'm getting the following failures running against 1.8.7, 1.9.2 and trunk:

  1) Failure:
test_directory_win32(TestRakeDirectoryTask)
[C:/Users/Luis/Projects/oss/jimweirich/rake/test/test_rake_directory_task.rb:32]:
Expected Rake::FileCreationTask, not Rake::FileTask.

  2) Failure:
test_egrep_with_output(TestRakeFileList)
[C:/Users/Luis/Projects/oss/jimweirich/rake/test/test_rake_file_list.rb:345]:
Expected "xyzzy.txt:2:XYZZY", not "xyzzy.txt:2:XYZZY\r\n".

  3) Failure:
test_egrep_with_block(TestRakeFileList)
[C:/Users/Luis/Projects/oss/jimweirich/rake/test/test_rake_file_list.rb:356]:
Expected ["xyzzy.txt", 2, "XYZZY\n"], not ["xyzzy.txt", 2, "XYZZY\r\n"].

Is worth mentioning that I'm using Windows :-)

Seems to me that #2 and #3 are related to newlines output in the
console, perhaps there is another way to verify the output
independently of LF/CR?

&lt;/pre&gt;</description>
    <dc:creator>Luis Lavena</dc:creator>
    <dc:date>2011-06-23T23:37:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/689">
    <title>Re: Deprecating Import ???</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/689</link>
    <description>&lt;pre&gt;
On Mar 14, 2011, at 9:37 AM, Wayne E. Seguin wrote:


Ola tweeted that the JRuby 'import' is not recommend anymore and jruby_import is the recommended method now.  Given that, I think the question is moot at this point.

I'm leaning to either A (or C with a default to A).

&lt;/pre&gt;</description>
    <dc:creator>Jim Weirich</dc:creator>
    <dc:date>2011-03-14T18:05:02</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.ruby.rake/688">
    <title>Re: Deprecating Import ???</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.ruby.rake/688</link>
    <description>&lt;pre&gt;I  have never used import myself directly, I vote for B.  IMHO namespacing a
loading mechanism
specifc to the library (Rake.import) is always a better option in order to
avoid general conflicts even
with other libraries.

  ~Wayne

On Mon, Mar 14, 2011 at 6:55 AM, Jim Weirich &amp;lt;jim.weirich&amp;lt; at &amp;gt;gmail.com&amp;gt; wrote:




&lt;/pre&gt;</description>
    <dc:creator>Wayne E. Seguin</dc:creator>
    <dc:date>2011-03-14T13:37:15</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lang.ruby.rake">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lang.ruby.rake</link>
  </textinput>
</rdf:RDF>

