Closed psteinb closed 5 years ago
Good Morning Peter: Can you direct me to the centos version where the existing static linked binaries do not function ?
Of course, your issue here touches upon a much discussed subject over the years. It somewhat depends upon what the intended audience is for the source tree and the resultant binaries. We have tended to side with the users who do not have the ability to build the source tree, but just want to run one of the kent commands. The static linked binaries helps with that difficulty.
See also: http://hgdownload.soe.ucsc.edu/admin/exe/linux.x86_64/
I'm also curious about the odd locations you have changed in your alterations. Many of those files you touched have nothing to do with either the web browser binaries, or the user apps binaries. A lot of that was obscure one time experiments with some function, often obsolete after the experiment was concluded. That is one reason why those makefiles you touched have no relationship to current practice of our makefile structure. Most of our current makefiles are simple three line items with no specifics, e.g.:
kentSrc = ../../..
A = pslUniq
include ${kentSrc}/inc/userApp.mk
Good Morning Peter: Can you direct me to the centos version where the existing static linked binaries do not function ?
Sure thing: I am trying to build kent on centos 7.4.1708. But please don't bother too much with this fact. I am debugging environment overrides of
MYSQLINC
andMYSQLLIBS
as well which I found. These were historically inherited locally. So let me get them out of the way first.Of course, your issue here touches upon a much discussed subject over the years. It somewhat depends upon what the intended audience is for the source tree and the resultant binaries. We have tended to side with the users who do not have the ability to build the source tree, but just want to run one of the kent commands. The static linked binaries helps with that difficulty.
See also: http://hgdownload.soe.ucsc.edu/admin/exe/linux.x86_64/
Unfortunately, this is not an option to me, as my client added some private code ... reusing the library infrastructure inside kent. I do see better now what you are targeting with the Makefiles then and why you prefer static includes. However, I feel that the build system is overly coarse grained (applying one-fits-all global variables to all targets irrespective of their need) and dependency management is quite flawed or even missing.
I'm also curious about the odd locations you have changed in your alterations. Many of those files you touched have nothing to do with either the web browser binaries, or the user apps binaries. A lot of that was obscure one time experiments with some function, often obsolete after the experiment was concluded. That is one reason why those makefiles you touched have no relationship to current practice of our makefile structure. Most of our current makefiles are simple three line items with no specifics, e.g.:
kentSrc = ../../.. A = pslUniq include ${kentSrc}/inc/userApp.mk
Thank you for the explanation. I see the situation more clear now. I
just followed the readme and started with a plain make
(after building
the libs) inside the src
folder. That was a mistake, I think in
retrospective. It would be nice, if those experiments you mentioned,
would be removed from the main build targets alpha
, beta
and all
inside src/makefile
. I feel these 3 are the main targets in use. We
use alpha
mostly AFAIK.
All in all, I have no problem, getting this PR rejected. It would be
nice though, to see the kent src in a cleaner state (experiments removed
from main targets). The setup of the makefiles could use some upgrades
too or a rethinking if GNU make is really the right choice, given that
kent exposes quite a hierarchy of source folders (GNU make was never
good at recursive builds). Simply put: Don't forget the users which
want/need to build kent
.
Hey kent developers, I worked quite a bit on your build system for @MichaelHiller. The
makefile
of each binary (e.g. insrc/hg/
) appear rather inflexible to me. Some link against libraries they don't even need. I applied tons of quick fixes. Not sure if they are too specific. In any case, as this is a server app, why do you prefer linking against static libs, e.g. here? I thought that kent is aimed at webserver workloads. Wouldn't it be better to dynamically link to be able to upgrade the underlying runtime environment? Just wondering.