[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: new restriction in rubygems: installing symlink pointing to parent path not allowed - causes ruby-handlebars-assets to ftbfs



On Fri, Jun 03, 2022 at 09:52:17PM +0530, Pirate Praveen wrote:
> 
> 
> On വ്യാ, ജൂൺ 2 2022 at 08:58:37 വൈകു -03:00:00 -03:00:00, Antonio Terceiro
> <terceiro@debian.org> wrote:
> > On Thu, Jun 02, 2022 at 06:03:47PM -0300, Lucas Kanashiro wrote:
> > >  Em 01/06/2022 15:42, Pirate Praveen escreveu:
> > >  > On Sun, 13 Feb 2022 08:59:18 +0100 Lucas Nussbaum
> > > <lucas@debian.org>
> > >  > wrote:
> > >  > > During a rebuild of all packages in sid, your package failed to
> > > build
> > >  > > on amd64.
> > >  > >
> > >  > >
> > >  > > Relevant part (hopefully):
> > >  > > > make[1]: Entering directory '/<<PKGBUILDDIR>>'
> > >  > > > mkdir -p vendor/assets/javascripts
> > >  > > > ln -s /usr/share/javascript/handlebars/handlebars.js
> > >  > vendor/assets/javascripts/handlebars.js
> > >  > > > ln -s
> > >  > /usr/share/javascript/handlebars.runtime/handlebars.runtime.js
> > >  > vendor/assets/javascripts/handlebars.runtime.js
> > >  >
> > >  > [...]
> > >  >
> > >  > > > Failed to load /dev/null because it doesn't contain valid
> > > YAML hash
> > >  > > > ERROR:  While executing gem ... (Gem::Package::SymlinkError)
> > >  > > >     installing symlink
> > > 'vendor/assets/javascripts/handlebars.js'
> > >  > pointing to parent path
> > > /usr/share/javascript/handlebars/handlebars.js
> > >  > of
> > >  > /<<PKGBUILDDIR>>/debian/ruby-handlebars-assets/usr/share/rubygems-integration/all/gems/handlebars_assets-0.23.8
> > >  > is not allowed
> > >  >
> > >  > How do we handle this issue? Should we copy instead? If that is
> > > the
> > >  > solution, we will have to rebuild ruby package whenever the js
> > > package
> > >  > changes. Can we modify rubygems to allow this link?
> > 
> > Can you try creating the symlink *after* rubygems has done its thing?
> > i.e. instead of creating the link in the source tree, create it at the
> > installation directory, after the installation has been done.
> 
> We won't be able to run the tests. If I comment out the ln commands, tests
> fail with
> 
> Errno::ENOENT: No such file or directory @ rb_sysopen -
> vendor/assets/javascripts/handlebars.js
> 
> May be we can copy during build and replace it by symlink in install?

Right, because the entire process happens at the install target. I have
an experimental gem2deb branch that puts build, test and install in the
expected phases of the build (dh_auto_{build,test,install}), so that you
could put the symlinks in place in, e.g.  executed_after_dh_auto_build,
so the symlinks could be in place during both the tests and the
installation.

We should be able to play with this soon.

Attachment: signature.asc
Description: PGP signature


Reply to: