In what sense are {distfiles} functionally different from packages in /usr/ports ?

When building ports manually, tarballs from officially sanctioned servers are downloaded into /usr/ports/distfiles/. These files are the same downloaded for other operating systems, & may be specific to other operating systems. Packages are the result of OpenBSD's building process which may contain patches needed to get these applications to run on OpenBSD.

As an example, compare filesystem layouts between Linux & OpenBSD. OpenBSD's layout is described in hier(7). The two layouts are not the same. It is not uncommon for OpenBSD's ports to have to patch applications found in the wild because they target Linux -- Linux-specific libraries or Linux's filesystem layout.

So going back to the original question, packages are the result of building distfiles with any number of custom-made patches. Sometimes, these patches correct application behavior & are forwarded to the original project for inclusion.

so packages may be set as a local PKG_PATH .. while distfiles can be sourced for building packages .. is this manageable for another machine connected to my server with no need to connect elsewhere ? or is it a necessary to fetch missing ports that can't be saved ? is *every needed piece of software* saved in distfiles once compilation comes to an end ?

is this manageable for another machine connected to my server with no need to connect elsewhere ?

It is not uncommon for users to manage their own package repositories, but recognize that this duplicates a lot of work the project has already done.

Quote:

or is it a necessary to fetch missing ports that can't be saved ?

I don't know what you are trying to say here.

Quote:

is *every needed piece of software* saved in distfiles once compilation comes to an end ?

No, the contents of /usr/ports/distfiles is as I described earlier. This is the directory where source is downloaded.

The actual building of ports is done in /usr/ports/pobj. This is where you will find the intermediate object files + other ilk used to build the application's binaries, manpages, configuration files, etc.

Once a package has been built, the contents of /usr/ports/pobj can be deleted, but it is far simpler to just leave /usr/ports/pobj alone especially if you want to later study the source code for any particular application.

I suspect one of your concerns is that building ports take a lot of diskspace. This is true. It is even more true if you build lots of ports -- to the order of gigabytes of diskspace.