On 2022-07-22 12:23, Gary Mills wrote:
I need a bit more information about the process that the OI build
server uses.
I know, of course, that the "download" target is intended to download
a source archive into a cache, the "unpack" target is intended to
unpack the archive into a directory within the component directory,
and that the "build" target is intended to compile the source files.
I'm attempting to develop a package for zrepl, another backup system
for ZFS. Zrepl is written in the GO language. Like other GO
applications, the "build" target downloads a large number of source
files (aka GO modules) from various Internet sites before it does the
actual compile. This is how GO resolves references to other GO
modules. Is this behavior likely to be a problem for the OI build
process?
I may be able to move GO's download to the "unpack" target. It will
still download many files. There still isn't a cache. Will this
change offer any improvement to the OI build process?
It has been a few years since I built userland, but there were a few
components that downloaded, unpacked and patched multiple archives prior
to building I know that when I was with Sun/Oracle, we discouraged
things downloading required bits during the "build" phase. We wanted to
be sure that we were able to cache the source that we downloaded to have
a copy of it for a variety of reasons. Downloading into a cache was
more community friendly, provided some stability that was worthwhile,
and more. The archive hashes also provide some guarantees.
GCC is an example of something that downloads, unpacks and patches
multiple archives. It downloads gcc, mpfr, mpc, and gmp prior to
building.
"build" depends on "prep", which depends on "download", "unpack", and
"patch". "patch" depends on "unpack". "unpack" depends on "download" and
"download" depends on each downloaded archive. There are intermediate
targets and variations on this, but that is the high level. By the time
that you hit the "build" phase, the expectation was that you had the
full component source and that it was ready to build. The reality is
that the "download" target was/is expected to download all of the source
that you need.
I don't know if it is a goal of oi-userland, but there was a time when
the Solaris userland build was expected to and did work disconnected
from the internet. I used to run "gmake download", prior to travel and
update the cache on my laptop so that I could work disconnected on the
plane.
At least that is what my addled brain is reminding me.
Just my $.02,
-Norm
_______________________________________________
oi-dev mailing list
oi-dev@openindiana.org
https://openindiana.org/mailman/listinfo/oi-dev