Synth: Introducing new custom package repository builder for FreeBSD and DragonFly

I use only the packages I built from ports.
I would like not to also lock packages, that firefox-esr is based on.
I guess what I want is statically built firefox/firefox-esr, but now that ports tree has more recent versions than I need - I guess I need to download an older instance of the ports tree first.
Oh, god, another quest...
 
Who said anything about locking dependencies? If you build it yourself, the issue that binary packages have disappears.
Are you saying is that all I need in my case is just lock 1 port? Could you, please, tell how to do that? I've googled that, but all I've found was pkg lock.
Also, if I lock a port - will it stop synth from building more recent versions of it (luckily, it doesn't attempt to install them, but it still wastes time building something I won't ever need)?
 
You're just not getting this concept.
If you build from source, and install those local packages, they're always going to work together. The only thing you have to "lock" is the source directory (in your case firefox-esr). So you use subversion to update the ports source tree (not portsnap) and just make sure that the firefox-esr port is downgraded and build everything you want. Don't use official packages at all. Then you don't have to mess with pkg locks at all.
 
I seem to remember that you can also build a PBI from ports. That would be firefox and all dependencies in one directory. That way, you might end up with dozens of copies of f.e. libc, but only if you have dozens of pbi's. Maybe you need to check in that direction?
 
The only thing you have to "lock" is the source directory (in your case firefox-esr). So you use subversion to update the ports source tree (not portsnap) and just make sure that the firefox-esr port is downgraded and build everything you want. Don't use official packages at all. Then you don't have to mess with pkg locks at all.
I have 0 experience with subversion, I'd like not to mess with it.
Also, from what I googled: 'SVN does not allow directories to be locked. You can lock individual files, but not an entire directory tree.'

I think there should better be a way for synth to ignore (not attempt to build them) specific ports when doing 'upgrade-system' apart from manipulating files under /usr/ports/.
I'd rather manually manage some exclusion list in some file.

Or, after all, why not teach 'synth upgrade-system' to treat locked packages as a signal that user doesn't want synth to attempt build them? I think that'd be quite a logical behavior.
 
The svn(1) lock is not what you are thinking it is.

To do what you want, you need to switch to the svn tree then 'update' the desired port (directory) to the svn revision version you want. But be aware after some time that would require to be 'updating' several other things to keep the desired package building due to dependecies, and then it will start breaking other stuff due to the same reason...
 
i wasn't using "lock" literally. lebarondemerde is right in that you manually set the port to be frozen. There are many ways to do it. One is with svn at a directory level. Another is just copy files over. But some things in the ports tree get changed/deprecated and even frozen source ports start generating errors because the original functionality isn't supported anymore.

It's basic ports-fu. Once you start talking about not using the default binary packages, then you're basically committing to learn source ports (and how to manipulate the tree via subversion)
 
Well, then it's a shame that there's no proper tool to manage ports in FreeBSD.
For now I just found firefox52 port sources online, downloaded it and now I do `portsnap fetch update && rm -rf /usr/ports/www/firefox-esr/ && cp ~/backup/firefox-esr /usr/ports/www/` and only then I can use a tool to mass upgrade ports.
 
What you are doing is not standard nor recommended. Why would there be a tool dedicated to do something that is sure to eventually fail? Plus more than half your issue is that you're not close to being an expert with customizing ports, yet you're trying to do exactly that, then blaming something vague for not having tools to do it.

Plus I already told you that using portsnap is not the way to go if your trying to lock down sources. The next time that port is updated, it wipes out your changes.

plus plus, why do you need to find random "sources online" when you have SVN and can acquire exact versions from specific dates? If you use the proper tools, at least the non-recommended expert tasks will be easier to do.
 
You seem to pay too little attention, marino.
What you are doing is not standard nor recommended. Why would there be a tool dedicated to do something that is sure to eventually fail?
Makes no sense. I want to preserve a port in an exact version. For reasons. That's a simple thing to ask for, because otherwise it's a dictate (the system tells me what I should be using instead of what I want to use).
Are you telling me there is no Freedom in FreeBSD?

Plus more than half your issue is that you're not close to being an expert with customizing ports, yet you're trying to do exactly that, then blaming something vague for not having tools to do it.
I don't customize firefox, I don't know where you've taken this from, so I just ignore this point of yours.

Plus I already told you that using portsnap is not the way to go if your trying to lock down sources. The next time that port is updated, it wipes out your changes.
That's why there are
Bash:
rm
and then
Bash:
cp
operations after the
Bash:
portsnap
one.

plus plus, why do you need to find random "sources online" when you have SVN and can acquire exact versions from specific dates? If you use the proper tools, at least the non-recommended expert tasks will be easier to do.
Because I'm rational: it was an easier way, because I didn't need to build&install a tool to work with SVN and I didn't need to learn how to work with that tool. The online source with the port is owned by FreeBSD anyways.
 
You seem to pay too little attention, marino.

Makes no sense. I want to preserve a port in an exact version. For reasons. That's a simple thing to ask for, because otherwise it's a dictate (the system tells me what I should be using instead of what I want to use).
Are you telling me there is no Freedom in FreeBSD?

As lebarondemerde implies, this is a troll statement, one that completely ignores the reality how of the ports system works. It's interconnected with a framework. When the framework changes, the entire ports tree is modified. Each version of the tree works together. If you "freeze" any leaf of that tree, it will eventually be incompatible with the core framework. You might as well say car manufacturers are taking away your freedom because the don't offer 400 miles to the gallon mileage.


I don't customize firefox, I don't know where you've taken this from, so I just ignore this point of yours.

Hello! If you freeze the port so its differs from portsnap, you've customized it. It's not a very hard concept to grasp.


That's why there are rm and then cp operations after the portsnap one.

Or just could just, I don't know, learn the basics of svn which should take about half an hour.
Plus its loads faster than portsnap usually.

Because I'm rational: it was an easier way, because I didn't need to build&install a tool to work with SVN and I didn't need to learn how to work with that tool. The online source with the port is owned by FreeBSD anyways.

If you don't want to put in the time to gain expertise, then don't do expert-level work. I've paid all the attention I need to this subject. I grasp it very well.
 
Gentlemen, please behave. I really don't want to put a peg into this long thread, but if the bickering gets out of hand...
 
it should probably be locked anyway. The original thread was about announcing synth, but now it's basically used to ping my attention since it's clear I get email notifications when somebody posts to it. Ideally all these new posts should be individual threads.
 
Create your own ports tree and maintain it. Nobody is holding you.
I don't want to. I just want to freeze a particular leaf of the tree, but marino says it's a bad idea (read below on that).

It's interconnected with a framework. When the framework changes, the entire ports tree is modified. Each version of the tree works together. If you "freeze" any leaf of that tree, it will eventually be incompatible with the core framework.
Freezing a leaf is just a trick to fool synth into not building firefox, because otherwise it compiles firefox of newer version, which I DON'T WANT. And this already resulted once into firefox stopping to work (it built newer version of firefox, didn't install it [AFAIU because I pkg lock'ed it], didn't uninstall the old version, but the old version refused to start due to some lib missing).
I wouldn't have to trick it if I knew how to tell it to not build firefox upon `upgrade-system`.

What if I follow your idea to create a separate ports tree (I don't need the whole tree, I need just a leaf of it) that will not be tied - will synth finally stop attempts to rebuild firefox upon upgrade-system?

Hello! If you freeze the port so its differs from portsnap, you've customized it. It's not a very hard concept to grasp.
I disagree with the wording (I didn't customize the port, but you may say that I customized ports tree), but I got the idea.

Gentlemen, please behave. I really don't want to put a peg into this long thread, but if the bickering gets out of hand...
I don't see anyone misbehaving, we are having a discussion and figuring and fixing out the misunderstanding (mostly mine). Although it may seem as an unpleasant talk - in fact it isn't and these guys are very civil.

it should probably be locked anyway. The original thread was about announcing synth, but now it's basically used to ping my attention since it's clear I get email notifications when somebody posts to it. Ideally all these new posts should be individual threads.
In my opinion it's better to keep 1 thread per port discussion. I did seek your attention, indeed. I didn't know replies here bothered you much, but if the emails really are that bothering - I think you may unsubscribe from this thread if the forum supports it. Otherwise create a rule for emails on this topic.
 
And this already resulted once into firefox stopping to work (it built newer version of firefox, didn't install it [AFAIU because I pkg lock'ed it], didn't uninstall the old version, but the old version refused to start due to some lib missing).

This. This is the point. You didn’t upgrade Firefox (you had it locked) but one of the dynamic libraries it depends on changed underneath it, and the old Firefox would no longer run. This is exactly what everyone is saying when they talk about the ports tree describing a framework that needs to be kept in sync as a whole.

A new build of Firefox (after the underlying library changed) would compile and link against the new library / interface.

If you want to stick at a particular version of an application that depends on other libraries, you can’t allow the libraries under it to change, either, if you want to ensure it still works.
 
Oh, so I'm doomed to either
- not upgrade the ports in my system at all;
or
- upgrade selected ports hoping they won't cause a break in firefox again via [firefox dependencies, firefox dependencies dependencies, firefox dependencies dependencies dependencies, ...] and so on.

Neither of options is optimal for me.

I hoped there's a way to build a package statically (building it in such a way that it'd include every dependency, so it becomes fat, but completely independent from the packages in the system).
Or like a 'portable app' (as an ex-windows user I refer to apps like the ones distributed by portableapps.com).
 
Back
Top