www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - what i don't like about dub

reply Alain De Vos <devosalain ymail.com> writes:
What i don't like about dub is that is does not check which 
software is installed on the host.
Currentlu tck86 is installed on the host including header files & 
shared libraries.
But dub says let me just download my own personal version and i 
will compile it in your home directory
/home/myuser/.dub
There is something inherently wrong in doing so.

Note other package managers of different languages do the same 
thing.
dub should really check if something should really be downloaded.
Otherwise you end up in a library hell, in Gates words known as 
dll hell.
Nov 22 2021
next sibling parent reply bauss <jj_1337 live.dk> writes:
On Tuesday, 23 November 2021 at 01:19:44 UTC, Alain De Vos wrote:
 What i don't like about dub is that is does not check which 
 software is installed on the host.
 Currentlu tck86 is installed on the host including header files 
 & shared libraries.
 But dub says let me just download my own personal version and i 
 will compile it in your home directory
 /home/myuser/.dub
 There is something inherently wrong in doing so.

 Note other package managers of different languages do the same 
 thing.
 dub should really check if something should really be 
 downloaded.
 Otherwise you end up in a library hell, in Gates words known as 
 dll hell.
Well, it's not always possible to check such things without heavy performance cost. It can take a long time to verify whether something is already installed, as it could be unzipped in some obscure folder deep into many subfolders. The solution here would probably be the ability to specify certain installations and their paths etc. within your project. It comes at almost no expense on running dub and the only real expense is users having to specify such installations.
Nov 22 2021
parent reply Tejas <notrealemail gmail.com> writes:
On Tuesday, 23 November 2021 at 07:06:17 UTC, bauss wrote:
 On Tuesday, 23 November 2021 at 01:19:44 UTC, Alain De Vos 
 wrote:
 [...]
Well, it's not always possible to check such things without heavy performance cost. It can take a long time to verify whether something is already installed, as it could be unzipped in some obscure folder deep into many subfolders. The solution here would probably be the ability to specify certain installations and their paths etc. within your project. It comes at almost no expense on running dub and the only real expense is users having to specify such installations.
Doesn't dub cache stuff that it downloads? If, however, the user is asking it to search the __entirety__ of their storage device(s) to check for some arbitrary folder where the package exists... Yeah that's a very though ask
Nov 23 2021
parent bauss <jj_1337 live.dk> writes:
On Tuesday, 23 November 2021 at 10:19:29 UTC, Tejas wrote:
 On Tuesday, 23 November 2021 at 07:06:17 UTC, bauss wrote:
 On Tuesday, 23 November 2021 at 01:19:44 UTC, Alain De Vos 
 wrote:
 [...]
Well, it's not always possible to check such things without heavy performance cost. It can take a long time to verify whether something is already installed, as it could be unzipped in some obscure folder deep into many subfolders. The solution here would probably be the ability to specify certain installations and their paths etc. within your project. It comes at almost no expense on running dub and the only real expense is users having to specify such installations.
Doesn't dub cache stuff that it downloads? If, however, the user is asking it to search the __entirety__ of their storage device(s) to check for some arbitrary folder where the package exists... Yeah that's a very though ask
Yes, dub caches everything it uses. Honestly I'd never want dub to search my device for files that might exist that it might need.
Nov 23 2021
prev sibling next sibling parent reply Imperatorn <johan_forsberg_86 hotmail.com> writes:
On Tuesday, 23 November 2021 at 01:19:44 UTC, Alain De Vos wrote:
 What i don't like about dub is that is does not check which 
 software is installed on the host.
 Currentlu tck86 is installed on the host including header files 
 & shared libraries.
 But dub says let me just download my own personal version and i 
 will compile it in your home directory
 /home/myuser/.dub
 There is something inherently wrong in doing so.

 Note other package managers of different languages do the same 
 thing.
 dub should really check if something should really be 
 downloaded.
 Otherwise you end up in a library hell, in Gates words known as 
 dll hell.
How do you propose dub would do that? Check in path? What if it exists but is not exactly the same version? 🤔
Nov 23 2021
parent reply Adam D Ruppe <destructionator gmail.com> writes:
On Tuesday, 23 November 2021 at 13:49:36 UTC, Imperatorn wrote:
 How do you propose dub would do that
By asking the system package manager.
Nov 23 2021
parent reply Imperatorn <johan_forsberg_86 hotmail.com> writes:
On Tuesday, 23 November 2021 at 14:01:15 UTC, Adam D Ruppe wrote:
 On Tuesday, 23 November 2021 at 13:49:36 UTC, Imperatorn wrote:
 How do you propose dub would do that
By asking the system package manager.
Well yeah, but how without doing a lot of work
Nov 23 2021
parent reply =?ISO-8859-1?Q?Lu=EDs?= Ferreira <contact lsferreira.net> writes:
On Tue, 2021-11-23 at 17:36 +0000, Imperatorn via Digitalmars-d-learn
wrote:
 On Tuesday, 23 November 2021 at 14:01:15 UTC, Adam D Ruppe wrote:
 On Tuesday, 23 November 2021 at 13:49:36 UTC, Imperatorn wrote:
 How do you propose dub would do that
=20 By asking the system package manager.
=20 Well yeah, but how without doing a lot of work
If I iterpret system package manager as distribution-specific, relying on system package manager is not the way. There is tools like pkg- config or pkgconf that provides mechanisms to manage dependencies and its required configurations to link/compile the library with the dependent software. --=20 Sincerely, Lu=C3=ADs Ferreira lsferreira.net
Nov 23 2021
parent reply Imperatorn <johan_forsberg_86 hotmail.com> writes:
On Tuesday, 23 November 2021 at 18:00:16 UTC, Luís Ferreira wrote:
 On Tue, 2021-11-23 at 17:36 +0000, Imperatorn via 
 Digitalmars-d-learn wrote:
 On Tuesday, 23 November 2021 at 14:01:15 UTC, Adam D Ruppe 
 wrote:
 On Tuesday, 23 November 2021 at 13:49:36 UTC, Imperatorn 
 wrote:
 How do you propose dub would do that
By asking the system package manager.
Well yeah, but how without doing a lot of work
If I iterpret system package manager as distribution-specific, relying on system package manager is not the way. There is tools like pkg- config or pkgconf that provides mechanisms to manage dependencies and its required configurations to link/compile the library with the dependent software.
Yeah, and also just on some platforms
Nov 23 2021
parent =?ISO-8859-1?Q?Lu=EDs?= Ferreira <contact lsferreira.net> writes:
On Tue, 2021-11-23 at 21:00 +0000, Imperatorn via Digitalmars-d-learn
wrote:
 On Tuesday, 23 November 2021 at 18:00:16 UTC, Lu=C3=ADs Ferreira wrote:
 On Tue, 2021-11-23 at 17:36 +0000, Imperatorn via=20
 Digitalmars-d-learn wrote:
 On Tuesday, 23 November 2021 at 14:01:15 UTC, Adam D Ruppe=20
 wrote:
 On Tuesday, 23 November 2021 at 13:49:36 UTC, Imperatorn=20
 wrote:
 How do you propose dub would do that
=20 By asking the system package manager.
=20 Well yeah, but how without doing a lot of work
=20 If I iterpret system package manager as distribution-specific,=20 relying on system package manager is not the way. There is=20 tools like pkg- config or pkgconf that provides mechanisms to=20 manage dependencies and its required configurations to=20 link/compile the library with the dependent software.
=20 Yeah, and also just on some platforms
Ideally we should cover the platforms that have this mechanisms standardized and also have something similar to e.g. Python packaging, which have a list of paths like $PATH to look for packages in order. --=20 Sincerely, Lu=C3=ADs Ferreira lsferreira.net
Nov 23 2021
prev sibling next sibling parent Steven Schveighoffer <schveiguy gmail.com> writes:
On 11/22/21 8:19 PM, Alain De Vos wrote:
 What i don't like about dub is that is does not check which software is 
 installed on the host.
 Currentlu tck86 is installed on the host including header files & shared 
 libraries.
 But dub says let me just download my own personal version and i will 
 compile it in your home directory
 /home/myuser/.dub
 There is something inherently wrong in doing so.
 
 Note other package managers of different languages do the same thing.
 dub should really check if something should really be downloaded.
 Otherwise you end up in a library hell, in Gates words known as dll hell.
If I understand correctly, you have a library that is already installed on your system (is it tcl86? I couldn't find a tck86), and you want to use it's headers and library file? Yet, the dub package you are depending on is downloading its own copy? 1. Are the installed headers D headers? D can't currently reasonably use C headers. I don't know of D bindings that are installed by OS package managers. 2. Is the package maybe downloading a binary library to avoid having to ask users to install their own copy? This is something you need to bring up to the package developer, it's not a dub feature. Also, if there are differences between the C bindings of the version you have installed and the version the package is expecting, you are in for some trouble, so that may be a valid reason to include the binary. Since this is a package issue, and not a dub issue, I'd recommend posting the package you are using, and maybe contact its author. -Steve
Nov 23 2021
prev sibling parent =?ISO-8859-1?Q?Lu=EDs?= Ferreira <contact lsferreira.net> writes:
On Tue, 2021-11-23 at 01:19 +0000, Alain De Vos via Digitalmars-d-learn
wrote:
 What i don't like about dub is that is does not check which=20
 software is installed on the host.
 Currentlu tck86 is installed on the host including header files &=20
 shared libraries.
 But dub says let me just download my own personal version and i=20
 will compile it in your home directory
 /home/myuser/.dub
 There is something inherently wrong in doing so.
=20
 Note other package managers of different languages do the same=20
 thing.
 dub should really check if something should really be downloaded.
 Otherwise you end up in a library hell, in Gates words known as=20
 dll hell.
I can totally understand your point on this. I think dub lacks a lot of important features and behave wrongly in a lot of different ways: 1) it should search for dependencies instead of downloading and compiling them. 2) it should have/use a standard user and system path or pkg-config to check for dependencies 3) it should use XDG base directory paths to store cache, config and data files. 4) if the user prefers to download and compile the dependencies, it should provide a mechanism to isolate the environment 5) it should use a correct mechanism to do incremental compilation instead of compiling everything in one compiler invocation by default 6) it should be able to install packages correctly with pkg-config or other similar mechanisms, providing a correct way for the packagers to manage dependencies externally I have some strong opinions on this. These are some real problems of dub that I see as a blocker. Doing packaging right is the cornerstone of a growing and healthy ecosystem. --=20 Sincerely, Lu=C3=ADs Ferreira lsferreira.net
Nov 23 2021