poudriere ports -u

Need some help understanding what poudriere-ports(8) does... Specifically when I run the command poudriere ports -u... I tried googling around, but have been unable to find any usable examples of specifically that option. I can imagine it's something like portsnap extract math/adol-c (assuming that math/adol-c is the port I want to update). portsnap extract will clean out the work/ subdirectory, but respect any makefile knobs I modify, and I like that. I just want to learn about the behavior of poudriere ports -u... can I feed a list into that, or not?
 
Need some help understanding what poudriere-ports(8) does... Specifically when I run the command poudriere ports -u...
It depends on how that ports tree was set up to begin with. If you created it without providing any options then portsnap(8) is used to check out a copy and keeping it updated. I have checked out ports trees using git(1) so for me a poudriere ports -u uses git to update it.

Code:
root@molly:/usr/local/etc/poudriere.d # poudriere ports -l
desktop   git+https 2021-08-29 14:14:04 /usr/local/poudriere/ports/desktop
server    git+https 2021-08-29 14:14:08 /usr/local/poudriere/ports/server

I can imagine it's something like portsnap extract math/adol-c (assuming that math/adol-c is the port I want to update).
poudriere-ports(8) doesn't update single ports, it updates the ports tree as a whole.

portsnap extract will clean out the work/ subdirectory, but respect any makefile knobs I modify, and I like that.
A port's configuration options are stored in /var/db/ports/, not in the port's work/ directory (See PORT_DBDIR in ports(7)). poudriere-options(8) stores them in /usr/local/etc/poudriere.d/<jail name>-<ports tree>-options/.

Code:
root@molly:/usr/local/etc/poudriere.d # poudriere jail -l
122-release 12.2-RELEASE-p9 amd64 ftp                                       2021-08-04 12:20:35 /usr/local/poudriere/jails/122-release
130-release 13.0-RELEASE-p3 amd64 ftp                                       2021-07-16 17:34:36 /usr/local/poudriere/jails/130-release
13-stable   13.0-STABLE     amd64 url=file:///storage/release/13-stable/ftp 2021-08-18 09:14:53 /usr/local/poudriere/jails/13-stable

Code:
root@molly:/usr/local/etc/poudriere.d # ls -ald *-options
drwxr-xr-x  316 root  wheel  316 Jan  3  2021 122-release-server-options
drwxr-xr-x  166 root  wheel  166 Jan 30  2021 13-stable-server-options
drwxr-xr-x  399 root  wheel  399 Aug 28 17:58 130-release-desktop-options
drwxr-xr-x  342 root  wheel  342 Jun 21 21:21 130-release-server-options
 
poudriere-ports(8) doesn't update single ports, it updates the ports tree as a whole.
Thanks, SirDice . That part above is one thing I was looking for (It does have implications for how I choose to handle this enchilada), but your post did provide a LOT of info I didn't even realize I should be paying attention to. So, if I got you correctly,
Code:
# poudriere ports -u
would be a rough equivalent to
Code:
# portsnap fetch
# portsnap extract
With the difference being that I cannot feed a list of specific ports to # poudriere ports -u, while # portsnap extract will take a list no problem...

As an aside, I imagine that it's not impossible to set up git(1) to only track the list of ports that I want to keep updated within the ports tree, then # poudriere ports -u would be usable for me. Looking even further down the road, some deps that I don't care to track/update will eventually become too stale, and require an update, as well. But that - I'll cross that bridge when I get there.
 
would be a rough equivalent to
It does a portsnap fetch update when updating, portsnap fetch extract is used to checkout the initial tree.

With the difference being that I cannot feed a list of specific ports to # poudriere ports -u, while # portsnap extract will take a list no problem...
Correct.
As an aside, I imagine that it's not impossible to set up git(1) to only track the list of ports that I want to keep updated within the ports tree, then # poudriere ports -u would be usable for me.
Just checkout the ports tree with git(1). With a git tree you can just go to /usr/local/poudriere/ports/<ports tree>/ and use the usual git commands to manage it. I use it for example to downgrade a single port if I run into problems with one (usually you can just git revert the last commit to that port). I also created my own branches in order to test some updates I was working on.

This will get you a ports tree named latest using git:
poudriere ports -c -p latest -U https://git.freebsd.org/ports.git -B main -m git+https
The -B main causes it to track the latest branch, if you want you can substitute it for one of the quarterly branches for example. And just remove the -p latest if you want to use the default ports tree for this.

Looking even further down the road, some deps that I don't care to track/update will eventually become too stale, and require an update, as well.
Just checkout the whole tree and keep that updated. It's really not that much data. It's much more cumbersome to only update some individual ports with the added risk you'll eventually forget about some dependency that has gone stale.
 
What I'm seeing above is good info... In the big picture, I'm trying to use port lists (that I generate) to isolate Wayland issues to specific ports. Yeah, there's benefits to keeping the whole ports tree updated, but - seems like there's a group of Wayland-related ports that worked at some point, but not any more. Updating them together with KDE conflates the results and makes troubleshooting difficult.
 
In the big picture, I'm trying to use port lists (that I generate) to isolate Wayland issues to specific ports. Yeah, there's benefits to keeping the whole ports tree updated, but - seems like there's a group of Wayland-related ports that worked at some point, but not any more. Updating them together with KDE conflates the results and makes troubleshooting difficult.
I'd still use the git method. Then create your own branch, you can then easily selectively merge changes (cherry-picking) from the main branch into your own branch. Or rebase your changes on top of the main branch. There are various different ways how this could be achieved. With git you have a lot more freedom to "work" the ports tree while still keeping track of all the changes in the main branch.
 
Code:
Code:
root@molly:/usr/local/etc/poudriere.d # poudriere ports -l
desktop   git+https 2021-08-29 14:14:04 /usr/local/poudriere/ports/desktop
server    git+https 2021-08-29 14:14:08 /usr/local/poudriere/ports/server
What's the point of maintaining separate trees for desktop and server sets?

Just trying to understand if that is absolutely necessary due to how poudriere works, or if it's possible to set up differently? I can see the idea of wanting 3 different versions of FreeBSD to have the same set of server software...

My goal/idea is to have KDE be upgradeable independently from everything else, and have a few other sets also be upgradeable in the same way, but is it really necessary to maintain separate trees for that? If I had a port I maintain, and needed to test it, and make sure it plays nice with the rest of the tree, then yeah, I do see a need for a separate tree.
 
What's the point of maintaining separate trees for desktop and server sets?
For starters my package directories are now nicely named;
Code:
root@molly:/usr/local/poudriere/data/packages # ls -al
total 134
drwxr-xr-x  6 root  wheel   8 Mar 23 09:43 .
drwxr-xr-x  7 root  wheel   7 Mar  4  2021 ..
drwxr-xr-x  7 root  wheel  18 Sep 13 17:20 122-release-server
drwxr-xr-x  7 root  wheel  18 Sep 13 10:10 13-stable-server
drwxr-xr-x  8 root  wheel  19 Sep 13 17:20 130-release-desktop
drwxr-xr-x  7 root  wheel  18 Sep 13 14:53 130-release-server
lrwxr-xr-x  1 root  wheel  18 Nov  7  2020 FreeBSD:12:amd64 -> 122-release-server
lrwxr-xr-x  1 root  wheel  18 Feb 15  2021 FreeBSD:13:amd64 -> 130-release-server

Second reason is that I have different options enabled between the server and desktop builds, separating them based on ports tree makes sense from a option directory naming:
Code:
root@molly:/usr/local/etc/poudriere.d # ls -ld *-options
drwxr-xr-x  316 root  wheel  316 Jan  3  2021 122-release-server-options
drwxr-xr-x  166 root  wheel  166 Jan 30  2021 13-stable-server-options
drwxr-xr-x  399 root  wheel  399 Aug 28 17:58 130-release-desktop-options
drwxr-xr-x  342 root  wheel  342 Jun 21 21:21 130-release-server-options

Third reason is that I have two ports trees I can individually manage (revert changes, add custom tests, etc) without interfering the other tree.
Code:
root@molly:/usr/local/poudriere/ports # ls -al
total 36
drwxr-xr-x   4 root  wheel   4 Aug 18 09:54 .
drwxr-xr-x   5 root  wheel   5 Jan 31  2021 ..
drwxr-xr-x  70 root  wheel  81 Sep 12 20:37 desktop
drwxr-xr-x  70 root  wheel  81 Sep 12 20:37 server

Just trying to understand if that is absolutely necessary due to how poudriere works
No, not necessary, it's just my setup. You can have one default ports tree to work with, I just like to have my 'server' and 'desktop' separated.
or if it's possible to set up differently?
You can set it up however you like. You could have a latest and quarterly tree. Or a custom tree, or just stick to one. It's all up to you.

If I had a port I maintain, and needed to test it, and make sure it plays nice with the rest of the tree, then yeah, I do see a need for a separate tree.
I just use the 'server' or 'desktop' tree I already have (whichever one is more appropriate for the port I'm working on). I make a new branch, put my changes in it and start the appropriate build (and poudriere-testport(8)).
 
Back
Top