Solved Poudriere - best way to build old versions of some packages but not all?

Hi,

I need to build an older version of port A. Let's say pkg is v2 and I need v1. So I noted down the ports tree commit for that v1, called c1, checked it out and built with poudriere. Works fine.

Now I need to build port B. Problem: port B at commit c1 is borked. It is fixed in commit c3. But commit c3 is after commit c2 that upgraded port A to the v2 I don't want.

What's the best way to deal with this?

I thought of just checking out the port A directory at c1 and use the latest commit for the rest, but I am afraid dependencies would break. Am I right?
 
I would open a new hierarchy in /opt/specialversions/bin

Do `make patch` in the ports tree, then cd into work/$portname and call ./configure with the new prefix.
 
The only way to figure out this is to read enough of the code in the ports (port A and B) to figure out if c3 for port B is independent of the state of the rest of the ports tree at c1. For example if c3 only changes things in port B.
 
The only way to figure out this is to read enough of the code in the ports (port A and B) to figure out if c3 for port B is independent of the state of the rest of the ports tree at c1. For example if c3 only changes things in port B.
Yeah so I could patch my tree with the B commits while keeping at the c1 level for the rest. That's probably the easiest.

I would open a new hierarchy in /opt/specialversions/bin

Do `make patch` in the ports tree, then cd into work/$portname and call ./configure with the new prefix.
Okay I need to learn what make patch does and how that would work with poudriere. Would having this new hierarchy mean I also install all the specific deps to that path? So some deps that might already exist on the system would exist in both paths? Potentially in different versions? So far I built with poudriere and the installed with pkg. Will it work or do I need to build from source directly in the jail that needs the software?

I am thinking tingo's approach will be easier as long as it's just one port that fails.
 
Okay I need to learn what make patch does and how that would work with poudriere. Would having this new hierarchy mean I also install all the specific deps to that path? So some deps that might already exist on the system would exist in both paths? Potentially in different versions? So far I built with poudriere and the installed with pkg. Will it work or do I need to build from source directly in the jail that needs the software?

I am thinking tingo's approach will be easier as long as it's just one port that fails.

In my approach I would not use poudriere. And not make packages.

`make patch` applies FreeBSD specific changes to the source code after unpacking. You want those in most cases.
 
Back
Top