ports-mgmt/poudriere is the tool used to create the FreeBSD official packages. It does build ports in jails ( clean envirolment ). You can set different jails to build for different FreeBSD versions, different OPTIONS etc. but it is quite a work to setup. Think Synth as a light version ( chroot ) of it, intended for the end user.
So, when moving to Synth, the right way ( what those commands do ) is to save your origins packages/ports in a file ( edit it to remove eventual unncessary stuff ), issue Synth to build everything you need ( what is in that file, Synth can read from the file ), and at the end it will create a repository and switch the pkg repository to it ( disabling the official FreeBSD repository too ). Then you should remove
all packages you have installed, and install again but now from the Synth repository ( using that file with your origin ports ).
Later you maintain it just updating the ports tree, issuing
synth prepare-system
[1], and then
pkg upgrade
.
Synth, like Poudriere, every time a port need to be upgraded, will delete all packages that depends on it and build them again. Doing that you almost never will have problems with broken ABI, or stuff like this particular xorgproto thing.
If you get some time to tweak builders/jobs on Synth ( same for Poudriere ) the building time will be considerably lower when compared with more primitive tools.
For reference, I have a AMD FX-8020 ( 8 cores ) and 16GB of RAM, I use Poudriere with 3 builders and 4 jobs, and it build the 600+ ports I use ( including the dependencies ) in less than 5 hours ( with ccache ON and already populated ) - IIRC less than 8 without ccache. But everyone should make its own tests because it can vary a lot depending of the installed ports.
[1] you can use
synth upgrade-system
instead, and at the end it will automatically issue pkg to upgrade the system, but if some dependency fail to build, it was already deleted from the repository and pkg will remove that dependency and everything that depends on it.