You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@buildr.apache.org by Daniel Spiewak <dj...@gmail.com> on 2009/07/30 05:47:34 UTC

Re: svn commit: r799160 - in /buildr/trunk: CHANGELOG lib/buildr/core/util.rb

I don't see a problem with leaving this patch on for all platforms -- at
least until JRUBY-3381 is resolved.  Moving across devices requires a fully
copy anyway, so it's not like the workaround is any less efficient.

Daniel

On Wed, Jul 29, 2009 at 10:38 PM, <vb...@apache.org> wrote:

> Author: vborja
> Date: Thu Jul 30 03:38:58 2009
> New Revision: 799160
>
> URL: http://svn.apache.org/viewvc?rev=799160&view=rev
> Log:
> BUILDR-292 Workaround for JRUBY-3381.
>
> Recent JRuby versions 1.3+ have a bug in FileUtils.mv that doesn't allow to
> rename a file when target directory is in different device, this workaround
> is enabled when running on JRuby.
> I was getting the "Permission denied" error when running on linux,
> should this fix be enabled only or certain OS ?
>
> Modified:
>    buildr/trunk/CHANGELOG
>    buildr/trunk/lib/buildr/core/util.rb
>
> Modified: buildr/trunk/CHANGELOG
> URL:
> http://svn.apache.org/viewvc/buildr/trunk/CHANGELOG?rev=799160&r1=799159&r2=799160&view=diff
>
> ==============================================================================
> --- buildr/trunk/CHANGELOG (original)
> +++ buildr/trunk/CHANGELOG Thu Jul 30 03:38:58 2009
> @@ -9,6 +9,7 @@
>  * Added:  BUILDR-295 Eclipse task: make 'M2_REPO' repository variable
> configurable
>  * Change: Monkey-Patched FileUtils::sh on JRuby to use POSIX `system`
>  * Change: Updated to Rake 0.8.7, RSpec 1.2.6 and JRuby-openssl 0.5.1.
> +* Fixed:  BUILDR-292 Workaround for JRUBY-3381 on FileUtils.mv
>  * Fixed:  BUILDR-23 Support for setting file mode when packaging (Ittay
> Dror).
>  * Fixed:  BUILDR-290 Dependencies cannot be downloaded over SSL.
>  * Fixed:  BUILDR-291 Local tasks do not support arguments (Ittay Dror).
>
> Modified: buildr/trunk/lib/buildr/core/util.rb
> URL:
> http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/core/util.rb?rev=799160&r1=799159&r2=799160&view=diff
>
> ==============================================================================
> --- buildr/trunk/lib/buildr/core/util.rb (original)
> +++ buildr/trunk/lib/buildr/core/util.rb Thu Jul 30 03:38:58 2009
> @@ -311,8 +311,29 @@
>
>  if Buildr::Util.java_platform?
>   require 'ffi'
> +
> +  # Fix for BUILDR-292.
> +  # JRuby fails to rename a file on different devices
> +  # this monkey-patch wont be needed when JRUBY-3381 gets resolved.
> +  module FileUtils #:nodoc:
> +    alias_method :__mv_native, :mv
> +
> +    def mv(from, to, options = nil)
> +      dir_to = File.directory?(to) ? to : File.dirname(to)
> +      Array(from).each do |from|
> +        dir_from = File.dirname(from)
> +        if File.stat(dir_from).dev != File.stat(dir_to).dev
> +          cp from, to, options
> +          rm to, options
> +        else
> +          __mv_native from, to, options
> +        end
> +      end
> +    end
> +    private :mv
> +  end
>
> -  module RakeFileUtils
> +  module RakeFileUtils #:nodoc:
>     def rake_merge_option(args, defaults)
>       defaults[:verbose] = false if defaults[:verbose] == :default
>
>
>
>

Re: svn commit: r799160 - in /buildr/trunk: CHANGELOG lib/buildr/core/util.rb

Posted by Alex Boisvert <bo...@intalio.com>.
Agreed.

alex


On Wed, Jul 29, 2009 at 8:47 PM, Daniel Spiewak <dj...@gmail.com> wrote:

> I don't see a problem with leaving this patch on for all platforms -- at
> least until JRUBY-3381 is resolved.  Moving across devices requires a fully
> copy anyway, so it's not like the workaround is any less efficient.
>
> Daniel
>
> On Wed, Jul 29, 2009 at 10:38 PM, <vb...@apache.org> wrote:
>
> > Author: vborja
> > Date: Thu Jul 30 03:38:58 2009
> > New Revision: 799160
> >
> > URL: http://svn.apache.org/viewvc?rev=799160&view=rev
> > Log:
> > BUILDR-292 Workaround for JRUBY-3381.
> >
> > Recent JRuby versions 1.3+ have a bug in FileUtils.mv that doesn't allow
> to
> > rename a file when target directory is in different device, this
> workaround
> > is enabled when running on JRuby.
> > I was getting the "Permission denied" error when running on linux,
> > should this fix be enabled only or certain OS ?
> >
> > Modified:
> >    buildr/trunk/CHANGELOG
> >    buildr/trunk/lib/buildr/core/util.rb
> >
> > Modified: buildr/trunk/CHANGELOG
> > URL:
> >
> http://svn.apache.org/viewvc/buildr/trunk/CHANGELOG?rev=799160&r1=799159&r2=799160&view=diff
> >
> >
> ==============================================================================
> > --- buildr/trunk/CHANGELOG (original)
> > +++ buildr/trunk/CHANGELOG Thu Jul 30 03:38:58 2009
> > @@ -9,6 +9,7 @@
> >  * Added:  BUILDR-295 Eclipse task: make 'M2_REPO' repository variable
> > configurable
> >  * Change: Monkey-Patched FileUtils::sh on JRuby to use POSIX `system`
> >  * Change: Updated to Rake 0.8.7, RSpec 1.2.6 and JRuby-openssl 0.5.1.
> > +* Fixed:  BUILDR-292 Workaround for JRUBY-3381 on FileUtils.mv
> >  * Fixed:  BUILDR-23 Support for setting file mode when packaging (Ittay
> > Dror).
> >  * Fixed:  BUILDR-290 Dependencies cannot be downloaded over SSL.
> >  * Fixed:  BUILDR-291 Local tasks do not support arguments (Ittay Dror).
> >
> > Modified: buildr/trunk/lib/buildr/core/util.rb
> > URL:
> >
> http://svn.apache.org/viewvc/buildr/trunk/lib/buildr/core/util.rb?rev=799160&r1=799159&r2=799160&view=diff
> >
> >
> ==============================================================================
> > --- buildr/trunk/lib/buildr/core/util.rb (original)
> > +++ buildr/trunk/lib/buildr/core/util.rb Thu Jul 30 03:38:58 2009
> > @@ -311,8 +311,29 @@
> >
> >  if Buildr::Util.java_platform?
> >   require 'ffi'
> > +
> > +  # Fix for BUILDR-292.
> > +  # JRuby fails to rename a file on different devices
> > +  # this monkey-patch wont be needed when JRUBY-3381 gets resolved.
> > +  module FileUtils #:nodoc:
> > +    alias_method :__mv_native, :mv
> > +
> > +    def mv(from, to, options = nil)
> > +      dir_to = File.directory?(to) ? to : File.dirname(to)
> > +      Array(from).each do |from|
> > +        dir_from = File.dirname(from)
> > +        if File.stat(dir_from).dev != File.stat(dir_to).dev
> > +          cp from, to, options
> > +          rm to, options
> > +        else
> > +          __mv_native from, to, options
> > +        end
> > +      end
> > +    end
> > +    private :mv
> > +  end
> >
> > -  module RakeFileUtils
> > +  module RakeFileUtils #:nodoc:
> >     def rake_merge_option(args, defaults)
> >       defaults[:verbose] = false if defaults[:verbose] == :default
> >
> >
> >
> >
>