Update on porting mono 5

Russell Haley russ.haley at gmail.com
Fri Sep 8 23:35:40 UTC 2017


On Fri, Sep 8, 2017 at 12:41 AM, Romain Tartière <romain at freebsd.org> wrote:
> On Thu, Sep 07, 2017 at 05:36:17PM -0700, Russell Haley wrote:
>> A subtle but important distinction. Also, are all items available in
>> pkg built from source? If yes, does that mean pkg is a source or
>> binary download? (kaboom! My head explodes).
>
> Unfortunately, some packages are not build from source.
>
> Let's recap, FreeBSD has a ports tree and also packages:
>
>   - When installing through the ports tree, you build the software from
>     source.  Any missing build or run dependency is also build from
>     source.  The "ports tree" is basically a set of rules to build each
>     piece of software, and is made available by the FreeBSD project on
>     the internet;
>   - When you install using packages, you install binaries. Only missing
>     run-time dependencies are installed using packages (no
>     build-dependencies since you build nothing, so you end-up with less
>     software installed).  The packages you install have been build using
>     the ports tree (with ports-mgmt/poudriere for example) on some
>     machine of the FreeBSD project, and made available to the wild.
>
> So, when using pkg(8), you only handle binary packages, never source
> code.  But the opposite is not true: the ports tree attempts to cope with
> redistribution restrictions [1], so some ports will just download and
> install binary blobs (e.g. proprietary drivers).
>
> By extension, some ports decided to trim-down build dependencies by
> simply downloading a binary (it works well for things like Java and .Net
> because they are not native binaries).  To check this, have a look at
> the many Java project (e.g. net/activemq downloads a tarball containing
> 107 .jar files and has NO_BUILD set, so the port just put the files at
> the right place, but does nothing more).
>
> Even some upstream projects trend to do so, for example, when compiling
> monodevelop from upstream's source, the build procedure use nugets to
> download dependencies as binary blobs.  I understand that it eases-up
> the life of the project's developers, but is not in-line with the
> philosophy of the ports tree. Ports are supposed to build from source,
> quoting the porter handbook [2]: « Always use mainstream sources when
> and where possible ».
>
> Russell, do these details help preventing your head from exploding?

Thanks for that Romain! I suppose I was more being philosophical then
literal (and a little silly). If the pkg repository server where the
package was built is using the exact same sources, OS version and
dependencies as I would use from Ports, IS it a binary? Your (perfect)
response clearly shows the answer is yes, but I was trying to have
some fun with that idea.

Cheers!

Russ

> References:
>  1. https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#porting-restrictions
>  2. https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#slow-sources
>
> --
> Romain Tartière <romain at FreeBSD.org>  http://people.FreeBSD.org/~romain/
> pgp: 8234 9A78 E7C0 B807 0B59  80FF BA4D 1D95 5112 336F (ID: 0x5112336F)
> (plain text =non-HTML= PGP/GPG encrypted/signed e-mail much appreciated)


More information about the freebsd-mono mailing list