Solved pkg versions and the port tree.

Using Poudriere I am rebuilding ncurses with debgging to track down a segfault that occurs when its libraries are used with aubit4gl. After sorting out where the repo I create is actually located I used the following build command:

Code:
export RELEASE=12_2 ; \
  poudriere ports -u -p PORTS_${RELEASE}  &&  \
  poudriere bulk -C  -j freebsd_${RELEASE}x64  -p PORTS_${RELEASE}  -f  /root/Poudriere/poudr_ncurses.txt

[00:00:00] Updating portstree "PORTS_12_2" with svn+https... done
[00:00:00] Creating the reference jail... done
[00:00:01] Mounting system devices for freebsd_12_2x64-PORTS_12_2
. . .
[00:00:05] Building 1 packages using 1 builders
[00:00:05] Starting/Cloning builders
[00:00:06] Hit CTRL+t at any time to see build progress and stats
[00:00:06] [01] [00:00:00] Building devel/ncurses | ncurses-6.2.20210313_1
[00:01:08] [01] [00:01:02] Finished devel/ncurses | ncurses-6.2.20210313_1: Success
[00:01:08] Stopping 1 builders
. . .

The problem is that Poudriere is building ncurses-6.2.20210313_1. However, if I look at the version from the binary package I see ncurses-6.2.20210626. The ports tree is updated immediately before the build so one expects that the latest version is used by Poudriere. But that seems not to be the case.

My question is: Why is Poudriere building an older version? Have I mistyped something?
 
Using Poudriere I am rebuilding ncurses with debgging to track down a segfault that occurs when its libraries are used with aubit4gl. After sorting out where the repo I create is actually located I used the following build command:

Code:
export RELEASE=12_2 ; \
  poudriere ports -u -p PORTS_${RELEASE}  &&  \
  poudriere bulk -C  -j freebsd_${RELEASE}x64  -p PORTS_${RELEASE}  -f  /root/Poudriere/poudr_ncurses.txt

[00:00:00] Updating portstree "PORTS_12_2" with svn+https... done
[00:00:00] Creating the reference jail... done
[00:00:01] Mounting system devices for freebsd_12_2x64-PORTS_12_2
. . .
[00:00:05] Building 1 packages using 1 builders
[00:00:05] Starting/Cloning builders
[00:00:06] Hit CTRL+t at any time to see build progress and stats
[00:00:06] [01] [00:00:00] Building devel/ncurses | ncurses-6.2.20210313_1
[00:01:08] [01] [00:01:02] Finished devel/ncurses | ncurses-6.2.20210313_1: Success
[00:01:08] Stopping 1 builders
. . .

The problem is that Poudriere is building ncurses-6.2.20210313_1. However, if I look at the version from the binary package I see ncurses-6.2.20210626. The ports tree is updated immediately before the build so one expects that the latest version is used by Poudriere. But that seems not to be the case.

My question is: Why is Poudriere building an older version? Have I mistyped something?
My immediate thinking is that Poudriere is tracking the version of ports tree for PORTS_12_2. The version of ncurses in packages (ncurses-6.2.20210626) is from LATEST, as per the freebsd.org ports search.

I compile everything from ports, but I don't try to track stuff that targets a specific FreeBSD release. I just go for LATEST or MAIN. That approach did allow me to avoid segfaults when compiling, but I'm debugging some dep issues myself...
 
The ports tree is updated immediately before the build so one expects that the latest version is used by Poudriere. But that seems not to be the case.
Then your ports tree might not be up to date. Check port version: make package-name -C /usr/ports/devel/ncurses. How do you update ports? Or do you have multiple ports trees and haven't updated them all?
 
Is your ports tree from a quarterly branch? Did you update that branch when the new quarterly branch was released? It's not going to do that automagically, you're going to need to switch branches yourself.
 
FreeBSD.conf for pkg(8) tracks the Quarterly branch. I am not aware of any similar setting for poudriere and I cannot seem to find a reference to how configure a separate branch to be tracked by poudriere.

The command I used to create the port tree for poudriere was: poudriere ports -c -p PORTS_12_2. I canNot find in /usr/local/etc/poudriere.conf anything that to me looks like a configuration for a particular branch.

The port tree is updated immediately prior to running a poudriere build.

According to fresh ports https://www.freshports.org/devel/ncurses/ both the Quarterly and Latest branches have the same version of ncurses:
Code:
    ABI                latest            quarterly
    . . .
FreeBSD:12:amd64    6.2.20210626    6.2.20210626

I do understand why poudriere is picking up a different version or where it is getting it.
 
I canot find in /usr/local/etc/poudriere.conf anything that to me looks like a configuration for a particular branch.
It's main aka latest. Not sure if the default changed but poudriere used to use portsnap(8) by default to fetch a ports tree. I prefer to fetch the ports trees with git as it allows more flexibility for me.
 
The phrase 'main aka latest' does not convey anything that I comprehend. How is poudriere configured to use a particular branch?
Both Quarterly and Latest are stated as having the same version. I certainly have never knowingly used anything other than these two. And, as far as I can recall, I have never used anything other than the defaults, whatever they are.

The build host packages are up-to-date. Where is poudriere getting the older version?
 
How is poudriere configured to use a particular branch?
It isn't. So the question is not relevant. In your case poudriere used portsnap(8) to fetch (and update) a ports tree. portsnap(8) uses a copy of the main branch of the ports tree. The main branch of the ports tree produces the latest package repositories.

I would recommend just throwing that ports tree away and get a fresh new one. I would recommend using git for it. Something like poudriere ports -c -p latest -U https://git.freebsd.org/ports.git -B main -m git+https. It doesn't make sense to add the release version to a ports tree name, the ports tree is not linked to a particular version of FreeBSD. All versions use the exact same ports tree.
 
But the lastest version of ncurses is not being built. So, the question remains, how is poudriere getting the older version?
 
This is fixed following deleting an recreating the jails and ports tree. However, now my question is: What does poudriere ports -u -p <port_name> do if it does not update <port_name> to the latest port?
 
It does update that ports tree. But sometimes failures happen, and they happen silently unfortunately. There was no need to remove the jail, only the ports tree.
 
Back
Top