Solved Is it possible to not build but install heavy packages in poudriere?

nxjoseph@

Developer
Hi. I want to test ports that I have made with poudriere testport but I don't want to build heavy packages that would took long time to build on my computer. Is it possible to install binary packages like electron and/or rust into jail owned by poudriere? I tried pkg -j <jailname> install <path to package.pkg> but couldn't succeed.
 
The -devel version of poudriere allows you to use packages whenever possible.

Code:
     -b name      Specify the name of the binary package branch to use to
                  prefetch packages.  Should be "latest", "quarterly",
                  "release_*", or url.

                  See poudriere-bulk(8) for further details.
 
I was wondering what the -devel version of poudriere provide and it seems I found the feature I needed in it, thanks.
I read the poudriere-bulk(8) page and I see the same feature in there too, so is it merged into normal poudriere or not?
 
I read the poudriere-bulk(8) page and I see the same feature in there too, so is it merged into normal poudriere or not?
No, I don't think so. The web manual browser suffers a bit when two different ports have the same manual pages. So it's probably showing the manual pages from poudriere-devel, not poudriere.
 
Okay. Fortunately they made a feature like that, it is a life saver. Thanks for making me realize there is this feature existing again.
 
I see this is marked as solved, but it seems to only work if whatever packages you're building against have no updates. Is this the intended outcome?

The reason I ask is because I've been trying for the life of me to build certain ports in Poudriere using all dependent packages available with the "latest" repo. However, if there's a newer port available than what is provided in the "latest" repo, it will build that instead of using the package. For instance, building security/clamav directly using the "-b latest" will pull the "lang/rust" package. However, if the lang/rust port is newer than the "latest" package, it will attempt to build it instead of just using the package from the "latest" package repo.

Is there a way to force Poudriere to *ONLY* build certain port(s) specified by command-line or file list and use packages for everything else regardless if the ports tree has a newer version? (I hope this makes sense)

Sorry to re-open a previously closed thread, but it seemed the closest to what I was looking for and I can't tell if the solved answer was what the OP was looking for or not. It seemed to work for them, but for how long? If a new version of a large/heavy port is available outside of the "latest" repo, does it not try to build that as a dependency instead of just using the latest package?
 
I see this is marked as solved, but it seems to only work if whatever packages you're building against have no updates. Is this the intended outcome?

The reason I ask is because I've been trying for the life of me to build certain ports in Poudriere using all dependent packages available with the "latest" repo. However, if there's a newer port available than what is provided in the "latest" repo, it will build that instead of using the package. For instance, building security/clamav directly using the "-b latest" will pull the "lang/rust" package. However, if the lang/rust port is newer than the "latest" package, it will attempt to build it instead of just using the package from the "latest" package repo.

Is there a way to force Poudriere to *ONLY* build certain port(s) specified by command-line or file list and use packages for everything else regardless if the ports tree has a newer version? (I hope this makes sense)

Sorry to re-open a previously closed thread, but it seemed the closest to what I was looking for and I can't tell if the solved answer was what the OP was looking for or not. It seemed to work for them, but for how long? If a new version of a large/heavy port is available outside of the "latest" repo, does it not try to build that as a dependency instead of just using the latest package?
You are right about it. I think package version mismatches seem to cause it to build the packages too instead of fetching them. I don't use poudriere anymore because of that problem. I wonder if there is a solution for that. I saw some forum posts that say, "you need to get the ports tree which FreeBSD build system builds all of them. Checkout to their git hash and try again." but that seemed me hard to do.
 
I see this is marked as solved, but it seems to only work if whatever packages you're building against have no updates. Is this the intended outcome?

The reason I ask is because I've been trying for the life of me to build certain ports in Poudriere using all dependent packages available with the "latest" repo. However, if there's a newer port available than what is provided in the "latest" repo, it will build that instead of using the package. For instance, building security/clamav directly using the "-b latest" will pull the "lang/rust" package. However, if the lang/rust port is newer than the "latest" package, it will attempt to build it instead of just using the package from the "latest" package repo.

Is there a way to force Poudriere to *ONLY* build certain port(s) specified by command-line or file list and use packages for everything else regardless if the ports tree has a newer version? (I hope this makes sense)

Sorry to re-open a previously closed thread, but it seemed the closest to what I was looking for and I can't tell if the solved answer was what the OP was looking for or not. It seemed to work for them, but for how long? If a new version of a large/heavy port is available outside of the "latest" repo, does it not try to build that as a dependency instead of just using the latest package?
Sorry, my brain is very lazy at this particular moment, so I don't fully understand the problem, but just in case I want to mention the "new" poudriere(-devel?) option: PKG_NO_VERSION_FOR_DEPS=yes. Could this be what you need?
 
Sorry, my brain is very lazy at this particular moment, so I don't fully understand the problem, but just in case I want to mention the "new" poudriere(-devel?) option: PKG_NO_VERSION_FOR_DEPS=yes. Could this be what you need?
So, the PKG_NO_VERSION_FOR_DEPS=yes does help for some things. But, what I'm mainly looking for is that whatever the latest packages are for any dependencies are used as opposed to being built. Don't get me wrong here, this does work in the current ports-mgmt/poudriere-devel but only if there isn't a newer port version available at the time of the Poudriere run... if that makes sense?

For instance, if I want to run a testport in Poudriere, I can state the port to test and when it checks the dependencies it'll use packages for everything aside from the port I want to test (which is what I want.) However, when checking the dependencies, if there is a port version that is newer than what is available in the package base, it will insist on building the newer port version for the dependency instead of just using the currently available package. It's generally not a big deal because the package database isn't all that far behind the ports versions. However, with large dependencies such as lang/rust, lang/cmake-core, or lang/go121, that can be a difference of a 5 minute test build or a 4 hour test build.

I understand that the port builds should be tested against the latest available port code, but this just makes it painfully resource- and time-hungry for users just trying to keep their own local repos going. 5 (very warm and loud) hours of compilation for Rust and Go to test or bulk a few ports that need updated is rough. Again, this doesn't happen all that often, but it does happen. I was just hoping for a switch that was basically " USE_PKGS_FOR_ALL_DEPS=yes" or something. Seems like it would make things very quick and simple for users.

Of course, I also see how this could potentially cause problems if building against old packages and then new ones come out. However, if you're only using Poudriere as the repo for your system(s), I would think everything would stay in sync since the builds would all be against packages that only available to the system via Poudriere. Having some sort of priority FBSD and Poudriere repos together, I believe this would break many things with this idea. But, at the same time, I'd think that might break many things anyway? I dunno. Just my two cents.
 
Back
Top