Bug 191455 - x11-fm/doublecmd: no remember editors/lazarus dependency
Summary: x11-fm/doublecmd: no remember editors/lazarus dependency
Status: Closed Works As Intended
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Many People
Assignee: freebsd-ports-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-06-28 11:49 UTC by Toni Ballesta
Modified: 2014-07-11 14:46 UTC (History)
3 users (show)

See Also:


Attachments
Patch for DoubleCMD dependencies (507 bytes, patch)
2014-06-28 11:49 UTC, Toni Ballesta
no flags Details | Diff
Patch2 for DoubleCMD dependencies (772 bytes, patch)
2014-06-28 16:22 UTC, Toni Ballesta
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Toni Ballesta 2014-06-28 11:49:04 UTC
The build is ok thought bug #191452. But, when installed, doublecmd has not required dependencies and lazarus and all his dependencies will be removed on packages autoremove.

Ok, running it doesn't need, but when update doublecmd is needed, it will build aaaallll the lazarus and dependencies anytime.

Other: Doublecmd noes NOT require de last version of Lazarus. It is specified here: http://doublecmd.sourceforge.net/mediawiki/index.php/Versions. Can be epecified the "minimal" version of Lazarus and lazarus-lcl-gtk for build? Looking on Makefile, I don't know everything and I cannot change this, for now.
Comment 1 Toni Ballesta 2014-06-28 11:49:42 UTC
Created attachment 144218 [details]
Patch for DoubleCMD dependencies
Comment 2 Toni Ballesta 2014-06-28 16:21:40 UTC
Solved! I can build DoubleCMD listening to the actual version of Lazarus, and resolving minimum requirements of dependencies. It works OK for me.

Replacing previous patch for this other.
Comment 3 Toni Ballesta 2014-06-28 16:22:49 UTC
Created attachment 144223 [details]
Patch2 for DoubleCMD dependencies
Comment 4 Mark Linimon freebsd_committer freebsd_triage 2014-07-04 01:13:56 UTC
Notify maintainer.
Comment 5 Beñat Gonzalez Etxepare 2014-07-04 19:21:39 UTC
Hello Toni,

Thanks for your contributions, but I am afraid I must decline your patch.

There is a good reason why a port has both buildtime and runtime dependencies:

Usually builtime dependencies are formed by a large chain of ports which are not needed to run the application. Installing them adds an unnecessary bloat to your system.

By separating them, a user who uses binary packages will just have the minimum necessary ones to run the application.


With your patch, installing Double Commander alone would also install all Lazarus and Free Pascal dependencies, which are not needed by most people.


In any case, you have several ways to avoid the problems you are having:

1) Manually install Lazarus, so autoremove won't deinstall it. As an alternative, use this command if Lazarus is already installed:
# pkg set -A 0 editors/lazarus
(It will mark Lazarus port as non-automatic)

2) Use official binary packages, this way you won't need to build anything, and your system will be clean of builtime dependencies.

3) Use an automated port building system, like Poudriere, so it creates packages of every dependency which can be reused later when compiling Double Commander again. It will also prevent from leaving you with a broken system by ports which fail to build.


If you need help with any of the mentioned methods, you can ask me personally by mail (in spanish if you prefer), and I will assist you.



For the second part of your patch, AFAIK the use of != assignment in Makefiles is discouraged.

It is true Double Commander doesn't require latest Lazarus, but the port system is meant to be used in a consistent way, and using a different port tree revision for a dependency can result in breakage as you have already seen in the past.

You should always build doublecmd port with the equivalent lazarus version in the ports.
Comment 6 Toni Ballesta 2014-07-05 08:25:06 UTC
Thanks bbtruk. I didn't know the pkg set and the automatic/nonautomatic flag (I must document more!). And yes, if installing binaries call to lazarus and all this dependencies, then doesn't the best solution.

But, when I update the ports tree and only I will update doublecmd, why I'm forced to update the lazarus too if it doesn't needed? Ok if the port tree is consistent but, if it doesn't need for run (only for build), then I think that  Lazarus maximum update isn't necessary.

Saludos!
Comment 7 Beñat Gonzalez Etxepare 2014-07-05 09:58:37 UTC
Because each revision in the ports tree works as a single unit. Things may change in a port between revisions, and every other port which has a dependency on it has to be aware of this change.

As an example, you can see that lazarus port recently changed its install location from /usr/local/share/lazarus/ (until v1.2) to /usr/local/share/lazarus-{VERSION}/ (starting from v1.2.4).

Now, imagine you have lazarus v1.2 installed and try to update doublecmd port (to v0.5.10_1) without updating lazarus port first. Doublecmd port would be unable to find your lazarus installation directory (it would search in /usr/local/share/lazarus-{VERSION}/ instead of /usr/local/share/lazarus/) and the build process would fail.

This is the reason why updating a single port without its dependencies is a bad idea.
Comment 8 Toni Ballesta 2014-07-05 10:20:50 UTC
Ok, I understand.

Thanks very much.
Comment 9 Adam Weinberger freebsd_committer freebsd_triage 2014-07-10 22:17:52 UTC
Has this issue been satisfactorily resolved for both the submitter and maintainer? Can this PR be closed?
Comment 10 Beñat Gonzalez Etxepare 2014-07-11 05:28:22 UTC
Yes, unless Toni has anything else to add, this PR can be closed.

Thanks!
Comment 11 Toni Ballesta 2014-07-11 14:46:54 UTC
Yes, sorry!