# REINPLACE_CMD and symbolic links



## MrLudo (Jan 22, 2018)

I keep running into problems with a frozen in time ports tree under poudriere.

A complete rebuild of this tree became necessary because the jail used to build it had been accidentally updated and was then incompatible with the frozen tree.

The jails was wound back to the version it was supposed to be but still required a full rebuild.

I now keep running into various ports where the Makefile uses ${REINPLACE_CMD} to adjust various files, some of which are now failing because they are symlinks .

e.g.

`sed: /wrkdirs/usr/ports/audio/libcanberra-gtk3/work/libcanberra-0.30/src/.libs/libcanberra-gtk3.la: in-place editing only works for regular files`

I understand why it says this.

Is there a neat way under a poudriere build to "fix" this generically or am I doomed to adding my own tweaks individually in the "frozen" Makefiles ?


----------



## rigoletto@ (Jan 22, 2018)

I just built audio/libcanberra-gtk3 with ports-mgmt/poudriere (`poudriere testport`) in here without any problem. I guess there is something wrong in your installation since many files are failing in this way.

Have you watched the memory/swap usage during the building processs?


----------



## tobik@ (Jan 22, 2018)

MrLudo said:


> A complete rebuild of this tree became necessary because the jail used to build it had been accidentally updated and was then incompatible with the frozen tree.
> 
> The jails was wound back to the version it was supposed to be but still required a full rebuild.


If the jail was wound back to the last working version then I don't understand why this happens now and not before? It seems that whatever FreeBSD version is installed in the jail now is one in which sed(1) was patched to have this behavior, where the previous version did not.  But let's ignore that. It's probably not important.

There is no magic bullet for this and I think you are very much doomed. The error in audio/libcanberra-gtk3 was fixed in ports r431953. PR 216309 is probably a good starting point for chasing all of these down.

Good luck!


----------



## MrLudo (Jan 22, 2018)

Thankyou for your input* lebarondemerde* but I have already "fixed" the direct problem with libcanberra-gtk3 by hacking the Makefile to replace the symbolic link which is being yelled about by sed when the Makefile is trying to use in-place editing on a symbolic link.

I know that if I could work out how to have *gsed* available in my jail and I could adjust the setting of REINPLACE_CMD to use it I would be happy.


----------



## MrLudo (Jan 22, 2018)

tobik@ said:


> If the jail was wound back to the last working version then I don't understand why this happens now and not before? It seems that whatever FreeBSD version is installed in the jail now is one in which sed(1) was patched to have this behavior, where the previous version did not.  But let's ignore that. It's probably not important.
> 
> There is no magic bullet for this and I think you are very much doomed. The error in audio/libcanberra-gtk3 was fixed in ports r431953. PR 216309 is probably a good starting point for chasing all of these down.
> 
> Good luck!



I think it did not happen before as the packages had been built before and were cached by poudriere.  My world turned pear shaped because of the complete clearing of the cached packges...

I will keep going the way I am.  Thanks for the help.


----------



## tobik@ (Jan 22, 2018)

MrLudo said:


> I know that if I could work out how to have *gsed* available in my jail and I could adjust the setting of REINPLACE_CMD to use it I would be happy.


This sound like a bad idea to me. We use patterns in the ports tree that gsed does not understand at all like e.g. [[:<:]] and [[:>:]]. Who knows what else will break?


----------



## MrLudo (Jan 22, 2018)

tobik@ said:


> This sound like a bad idea to me. We use patterns in the ports tree that gsed does not understand at all like e.g. [[:<:]] and [[:>:]]. Who knows what else will break?



I understand.  Thanks.


----------

