[fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-29 Thread K. Fossil user
Hello,

Latest stable release or dev release does not compile with option:
--static
This issue occur with/without openSSL.

I would like to point you out that readline is not used.

Distribution : Porteus 1.2, 64bit.
(Slackware based live CD)

Latest stable release or dev release does not compile with option:
--static
This issue occur with/without openSSL.

I would like to point you out that readline is not used.

Distribution : Porteus 1.2, 64bit.
(Slackware based live CD)


 
Best Regards

K.___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-29 Thread Stephan Beal
On Tue, Jan 29, 2013 at 9:00 AM, K. Fossil user <
ticketpersonnal-fos...@yahoo.fr> wrote:

> Latest stable release or dev release does not compile with option:
> --static
> This issue occur with/without openSSL.
>

On Linux the networking-related libraries cannot be statically linked (for
reasons i once knew but no longer recall). Or they _can_ be linked but the
linker will warn you that it's not _really_ statically linking them and
that the DLL will be used at run-time. Fossil's TCL support also appears to
use dlopen(), which cannot be used in statically-linked programs (at least
on Linux). Like networking libs, it will produce warnings like:

warning: Using 'dlopen' in statically linked applications requires at
runtime the shared libraries from the glibc version used for linking

-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Jan Nijtmans
2013/1/29 Stephan Beal :
> On Tue, Jan 29, 2013 at 9:00 AM, K. Fossil user
>  wrote:
>> Latest stable release or dev release does not compile with option:
>> --static
> ...
>  Like networking libs, it will produce warnings like:
>
> warning: Using 'dlopen' in statically linked applications requires at
> runtime the shared libraries from the glibc version used for linking


Those are only warnings, the executable should work fine. I tried it,
and encountered 2 minor problems on Linux:
- "strcmp" from the static C library cannot be used, it should be
  replaced by "fossil_strcmp" everywhere. (that's a good idea
  anyway, as strcmp is locale-dependant)
>Fossil's TCL support also appears to use dlopen()
- The link flag "-ldl" is missing on Linux. That's the shared library
  containing "dlopen",so - indeed - without it, Tcl support will not work.


The first problem is fixed now on trunk, the second one should be easy
to fix (for someone who understands the build system better
than I do).

Regards,
Jan Nijtmans
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Sergei Gavrikov
On Wed, 30 Jan 2013, Jan Nijtmans wrote:
> 2013/1/29 Stephan Beal:
> > On Tue, Jan 29, 2013 at 9:00 AM, K. Fossil user wrote:
> >> Latest stable release or dev release does not compile with option:
> >> --static
> > ...
> >  Like networking libs, it will produce warnings like:
> >
> > warning: Using 'dlopen' in statically linked applications requires
> > at runtime the shared libraries from the glibc version used for
> > linking
> 
> Those are only warnings, the executable should work fine. I tried it,
> and encountered 2 minor problems on Linux:
> - "strcmp" from the static C library cannot be used, it should be
> replaced by "fossil_strcmp" everywhere. (that's a good idea anyway, as
> strcmp is locale-dependant)
> >Fossil's TCL support also appears to use dlopen()

[snip]

> The first problem is fixed now on trunk, the second one should be easy
> to fix (for someone who understands the build system better than I
> do).

[FYI]

An optimized (-O2) default build with entered substitution
-Dstrcmp=fossil_strcmp fails (SIGSEG) on i686 GNU/Linux

  Reading symbols from /home/sg/fossil/build/fossil...done.
  (gdb) set args clean --force
  (gdb) run
  Starting program: /home/sg/fossil/build/fossil clean --force
  
  Program received signal SIGSEGV, Segmentation fault.
  fossil_strcmp (zA=0xb452 "force", zB=0x0) at ../src/printf.c:908
  908 b = *zB++;
  (gdb) bt
  #0  fossil_strcmp (zA=0xb452 "force", zB=0x0) at ../src/printf.c:908
  #1  0x0808d73c in find_option (zLong=0x815454b "quiet", zShort=0x0, hasArg=0)
  at ../src/main.c:865
  #2  0x080902ca in main (argc=3, argv=0xb294) at ../src/main.c:510
  (gdb) detach
  Detaching from program: /home/sg/fossil/build/fossil, process 18084
  (gdb) q
  % ./fossil version
  This is fossil version 1.25 [7ac0fd9d11] 2013-01-30 10:03:19 UTC

The -O0 build does parse the same option without the issue.

Sergei
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Jan Nijtmans
2013/1/30 Sergei Gavrikov :
> [FYI]
>
> An optimized (-O2) default build with entered substitution
> -Dstrcmp=fossil_strcmp fails (SIGSEG) on i686 GNU/Linux
...
>   Program received signal SIGSEGV, Segmentation fault.
...

Thanks! That's fully explainable: When setting -Dstrcmp=fossil_strcmp
before including , and strcmp has a decoration that its
arguments are non-null, that is used by the optimizer to remove
the two first if's from the fossil_strcmp function: if its arguments
cannot be NULL, that's a valid optimization

Should be fixed now, by #undef'fing fossil_strcmp in printf.c

Many Thanks!

Regards,
   Jan Nijtmans
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Stephan Beal
On Wed, Jan 30, 2013 at 11:10 AM, Jan Nijtmans wrote:

> >Fossil's TCL support also appears to use dlopen()
> - The link flag "-ldl" is missing on Linux. That's the shared library
>   containing "dlopen",so - indeed - without it, Tcl support will not work.
>

Which flavour of linux are you on? On my Ubuntu 12.04 and 12.10 systems
-ldl is being included in the linker flags.

-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Jan Nijtmans
2013/1/30 Stephan Beal :
> On Wed, Jan 30, 2013 at 11:10 AM, Jan Nijtmans 
> wrote:
>>
>> >Fossil's TCL support also appears to use dlopen()
>> - The link flag "-ldl" is missing on Linux. That's the shared library
>>   containing "dlopen",so - indeed - without it, Tcl support will not work.
>
>
> Which flavour of linux are you on? On my Ubuntu 12.04 and 12.10 systems -ldl
> is being included in the linker flags.

Looking at auto.def, the problem is with the "with-tcl-stubs" option:
set tclstubs [opt-bool with-tcl-stubs]
if {$tclstubs && $tclconfig(TCL_SUPPORTS_STUBS)} {
set libs "$tclconfig(TCL_STUB_LIB_SPEC)"
define FOSSIL_ENABLE_TCL_STUBS
define USE_TCL_STUBS
} else {
set libs "$tclconfig(TCL_LIB_SPEC) $tclconfig(TCL_LIBS)"
}

The $tclconfig(TCL_LIBS) contains the "-ldl", but
$tclconfig(TCL_STUB_LIB_SPEC) does not, which is
OK. (the stub library doesn't use dlopen, fossil does)

Somehow, fossil should add "-ldl" here, such that the
--with-tcl-stubs option works in combination with --static.

Regards,
  Jan Nijtmans
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Richard Hipp
On Wed, Jan 30, 2013 at 8:11 AM, Jan Nijtmans wrote:

> 2013/1/30 Sergei Gavrikov :
> > [FYI]
> >
> > An optimized (-O2) default build with entered substitution
> > -Dstrcmp=fossil_strcmp fails (SIGSEG) on i686 GNU/Linux
> ...
> >   Program received signal SIGSEGV, Segmentation fault.
> ...
>
> Thanks! That's fully explainable: When setting -Dstrcmp=fossil_strcmp
> before including , and strcmp has a decoration that its
> arguments are non-null, that is used by the optimizer to remove
> the two first if's from the fossil_strcmp function: if its arguments
> cannot be NULL, that's a valid optimization
>
> Should be fixed now, by #undef'fing fossil_strcmp in printf.c
>

I'm uncomfortable with this change.  If we need to use fossil_strcmp()
everywhere (which surprises me, since strcmp() should *not* be subject to
localization) then we should do so explicitly, and not depend on
preprocessor magic, as the preprocessor magic will likely cause maintenance
headaches down the road, and/or introduce subtle bugs such as the above.



>
> Many Thanks!
>
> Regards,
>Jan Nijtmans
> ___
> fossil-users mailing list
> fossil-users@lists.fossil-scm.org
> http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
>



-- 
D. Richard Hipp
d...@sqlite.org
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Richard Hipp
On Wed, Jan 30, 2013 at 5:10 AM, Jan Nijtmans wrote:

> 2013/1/29 Stephan Beal :
> > On Tue, Jan 29, 2013 at 9:00 AM, K. Fossil user
> >  wrote:
> >> Latest stable release or dev release does not compile with option:
> >> --static
> > ...
> >  Like networking libs, it will produce warnings like:
> >
> > warning: Using 'dlopen' in statically linked applications requires at
> > runtime the shared libraries from the glibc version used for linking
>
>
> Those are only warnings, the executable should work fine. I tried it,
> and encountered 2 minor problems on Linux:
> - "strcmp" from the static C library cannot be used, it should be
>   replaced by "fossil_strcmp" everywhere. (that's a good idea
>   anyway, as strcmp is locale-dependant)
>

I don't think so.  Maybe you are thinking of strcasecmp().  strcmp() should
not be locale-dependent and it should not cause static linkage problems on
linux.  The Fossil server on the fossil website is statically linked and it
is running on Ubuntu - no problems at all.



> >Fossil's TCL support also appears to use dlopen()
> - The link flag "-ldl" is missing on Linux. That's the shared library
>   containing "dlopen",so - indeed - without it, Tcl support will not work.
>
>
> The first problem is fixed now on trunk, the second one should be easy
> to fix (for someone who understands the build system better
> than I do).
>
> Regards,
> Jan Nijtmans
> ___
> fossil-users mailing list
> fossil-users@lists.fossil-scm.org
> http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
>



-- 
D. Richard Hipp
d...@sqlite.org
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Scott Robison
While I agree that the -Dstrcmp... solution is inadequate, strcmp is
subject to the system locale setting. While it might default to the C
locale (giving the expected binary comparison behavior), it might not.
One may not consider locale the same as localization, but whatever you
choose to call it, it can result in non-deterministic behavior based
on the exact system configuration.

SDR

On Wed, Jan 30, 2013 at 8:19 AM, Richard Hipp  wrote:
>
>
> On Wed, Jan 30, 2013 at 8:11 AM, Jan Nijtmans 
> wrote:
>>
>> 2013/1/30 Sergei Gavrikov :
>> > [FYI]
>> >
>> > An optimized (-O2) default build with entered substitution
>> > -Dstrcmp=fossil_strcmp fails (SIGSEG) on i686 GNU/Linux
>> ...
>> >   Program received signal SIGSEGV, Segmentation fault.
>> ...
>>
>> Thanks! That's fully explainable: When setting -Dstrcmp=fossil_strcmp
>> before including , and strcmp has a decoration that its
>> arguments are non-null, that is used by the optimizer to remove
>> the two first if's from the fossil_strcmp function: if its arguments
>> cannot be NULL, that's a valid optimization
>>
>> Should be fixed now, by #undef'fing fossil_strcmp in printf.c
>
>
> I'm uncomfortable with this change.  If we need to use fossil_strcmp()
> everywhere (which surprises me, since strcmp() should *not* be subject to
> localization) then we should do so explicitly, and not depend on
> preprocessor magic, as the preprocessor magic will likely cause maintenance
> headaches down the road, and/or introduce subtle bugs such as the above.
>
>
>>
>>
>> Many Thanks!
>>
>> Regards,
>>Jan Nijtmans
>> ___
>> fossil-users mailing list
>> fossil-users@lists.fossil-scm.org
>> http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
>
>
>
>
> --
> D. Richard Hipp
> d...@sqlite.org
> ___
> fossil-users mailing list
> fossil-users@lists.fossil-scm.org
> http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
>
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Scott Robison
And never mind, I guess I was wrong. Not sure why I couldn't have
checked that *before* clicking send, but c'est la vie.

SDR

On Wed, Jan 30, 2013 at 8:19 AM, Richard Hipp  wrote:
>
>
> On Wed, Jan 30, 2013 at 8:11 AM, Jan Nijtmans 
> wrote:
>>
>> 2013/1/30 Sergei Gavrikov :
>> > [FYI]
>> >
>> > An optimized (-O2) default build with entered substitution
>> > -Dstrcmp=fossil_strcmp fails (SIGSEG) on i686 GNU/Linux
>> ...
>> >   Program received signal SIGSEGV, Segmentation fault.
>> ...
>>
>> Thanks! That's fully explainable: When setting -Dstrcmp=fossil_strcmp
>> before including , and strcmp has a decoration that its
>> arguments are non-null, that is used by the optimizer to remove
>> the two first if's from the fossil_strcmp function: if its arguments
>> cannot be NULL, that's a valid optimization
>>
>> Should be fixed now, by #undef'fing fossil_strcmp in printf.c
>
>
> I'm uncomfortable with this change.  If we need to use fossil_strcmp()
> everywhere (which surprises me, since strcmp() should *not* be subject to
> localization) then we should do so explicitly, and not depend on
> preprocessor magic, as the preprocessor magic will likely cause maintenance
> headaches down the road, and/or introduce subtle bugs such as the above.
>
>
>>
>>
>> Many Thanks!
>>
>> Regards,
>>Jan Nijtmans
>> ___
>> fossil-users mailing list
>> fossil-users@lists.fossil-scm.org
>> http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
>
>
>
>
> --
> D. Richard Hipp
> d...@sqlite.org
> ___
> fossil-users mailing list
> fossil-users@lists.fossil-scm.org
> http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
>
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Jan Nijtmans
2013/1/30 Richard Hipp :
> I'm uncomfortable with this change.  If we need to use fossil_strcmp()
> everywhere (which surprises me, since strcmp() should *not* be subject to
> localization) then we should do so explicitly, and not depend on
> preprocessor magic, as the preprocessor magic will likely cause maintenance
> headaches down the road, and/or introduce subtle bugs such as the above.

I'm open to other suggestions how to fix this. The problem was noticed on
64-bit Ubuntu, it might be 64-bit specific (I'm not near that machine now).
I agree that it would be better to rename strcmp->fossil_strcmp everywhere,
but I don't think you want to do that in sqlite as well, therefore I came up
with the macro.

Regards,
 Jan Nijtmans
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Richard Hipp
I'm not yet convinced this is a problem that needs fixing.

D. Richard Hipp - d...@sqlite.org
Sent from phone - pardon brevity

On Jan 30, 2013 11:00 AM, "Jan Nijtmans"  wrote:

2013/1/30 Richard Hipp :

> I'm uncomfortable with this change. If we need to use fossil_strcmp()
> everywhere (which surpris...
I'm open to other suggestions how to fix this. The problem was noticed on
64-bit Ubuntu, it might be 64-bit specific (I'm not near that machine now).
I agree that it would be better to rename strcmp->fossil_strcmp everywhere,
but I don't think you want to do that in sqlite as well, therefore I came up
with the macro.


Regards,
Jan Nijtmans
___
fossil-users mailing...
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Sergei Gavrikov
On Wed, 30 Jan 2013, Jan Nijtmans wrote:

> 2013/1/30 Richard Hipp wrote:
> > I'm uncomfortable with this change.  If we need to use fossil_strcmp()
> > everywhere (which surprises me, since strcmp() should *not* be subject to
> > localization) then we should do so explicitly, and not depend on
> > preprocessor magic, as the preprocessor magic will likely cause maintenance
> > headaches down the road, and/or introduce subtle bugs such as the above.
> 
> I'm open to other suggestions how to fix this. The problem was noticed on
> 64-bit Ubuntu, it might be 64-bit specific (I'm not near that machine now).
> I agree that it would be better to rename strcmp->fossil_strcmp everywhere,
> but I don't think you want to do that in sqlite as well, therefore I came up
> with the macro.
 
AFAIS, fossil_strcmp() != strcmp()

  
http://fossil-scm.org/index.html/artifact/eda142ab1e3e0a0213d522c5b7a22831023cab0f?ln=898-902

  # plain STRCMP (3)
  % for i in str{,n}cmp;do echo -n "$i - ";grep $i src/*.c|egrep -v 
"(sqlite3|fossil)_$i"|wc -l;done
  strcmp - 143
  strncmp - 210

I would undo "magic" and rename nothing :-)

Sergei
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Joerg Sonnenberger
On Wed, Jan 30, 2013 at 11:10:46AM +0100, Jan Nijtmans wrote:
> and encountered 2 minor problems on Linux:
> - "strcmp" from the static C library cannot be used, it should be
>   replaced by "fossil_strcmp" everywhere. (that's a good idea
>   anyway, as strcmp is locale-dependant)

No, it isn't. That's what strcoll(3) is for.

Joerg
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread K. Fossil user
-DLL = Windows.
I do not use window$
-Warning does not stop compiling... :-)

-Why do I ask for --static compilation to succeed

Don't forget that if you would like Fossil to be used, it must be easy to 
compile, especially with option --static.
People would like to use a DVCS everywhere with any distro with the SAME 
binary, not the one specific to a distro.
Darcs, I've downloaded, runs everywhere...


I do use at least, Linux Mint, Porteus, Slackware, CentOS, debian...
Sometimes in Live CD mode sometimes not...

Sometimes Ubuntu.

Just sayin'


BTW, Thanks to people who tries to fix this.

 
Best Regards


K.

stephan beal wrote :


On Linux the networking-related libraries cannot be statically linked (for 
reasons i once knew but no longer recall). Or they _can_ be linked but the 
linker will warn you that it's not _really_ statically linking them and that 
the DLL will be used at run-time. Fossil's TCL support also appears to use 
dlopen(), which cannot be used in statically-linked programs (at least on 
Linux). Like networking libs, it will produce warnings like:

warning: Using 'dlopen' in statically linked applications requires at runtime 
the shared libraries from the glibc version used for linking
-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Richard Hipp
On Wed, Jan 30, 2013 at 12:30 PM, K. Fossil user <
ticketpersonnal-fos...@yahoo.fr> wrote:

> People would like to use a DVCS everywhere with any distro with the SAME
> binary, not the one specific to a distro.
>


I concur.  Unfortunately, this is a function of the distro more than of the
application.  For example, OpenSSL seems to not support static linking and
is also highly distro-dependent, so a universal binary needs to omit HTTPS
support.  So there are tradeoffs.

Fossil has traditionally worked great on all systems, directly from
sources.  And the binaries are highly portable (module OpenSSL issues).
Have you seen otherwise?


-- 
D. Richard Hipp
d...@sqlite.org
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Sergei Gavrikov
On Wed, 30 Jan 2013, K. Fossil user wrote:

> People would like to use a DVCS everywhere with any distro with the
> SAME binary, not the one specific to a distro.

First, I do not say that build process for a static executable should
fail. But at least such process is not trivial (it was given a lot of
reasons here).

[FYI]

Incidentally, there is another opinion, Never use static linking!

  http://www.akkadia.org/drepper/no_static_linking.html

SYNOPSIS

  
https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/lib.compatibility.static.html

Sergei
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Stephan Beal
On Wed, Jan 30, 2013 at 8:45 PM, Sergei Gavrikov
wrote:

> Incidentally, there is another opinion, Never use static linking!
>
>   http://www.akkadia.org/drepper/no_static_linking.html


On a related note, Solaris 10 removed static versions of their system
libraries, due to a long history of statically-linked binaries causing (in
the words of one of the articles below) "pain and ruin":

https://blogs.oracle.com/rie/entry/static_linking_where_did_it
http://stackoverflow.com/questions/7024730/from-static-to-dynamic-linking-on-solaris-10

-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Nico Williams
On Wed, Jan 30, 2013 at 2:58 PM, Stephan Beal  wrote:
> On Wed, Jan 30, 2013 at 8:45 PM, Sergei Gavrikov 
> wrote:
>>
>> Incidentally, there is another opinion, Never use static linking!
>>
>>   http://www.akkadia.org/drepper/no_static_linking.html
>
>
> On a related note, Solaris 10 removed static versions of their system
> libraries, due to a long history of statically-linked binaries causing (in
> the words of one of the articles below) "pain and ruin":
>
> https://blogs.oracle.com/rie/entry/static_linking_where_did_it
> http://stackoverflow.com/questions/7024730/from-static-to-dynamic-linking-on-solaris-10

It not only made those problems go away, but it also improved system
performance, particularly boot times, because the common code (the
libraries) got loaded once instead of once per-executable.

The problems that Solaris 9 and earlier had with mixed dynamic and
static linking are shockingly similar to problems one sees on Linux
today.  The typical example is a program that is single threaded and
linked statically with libc but also with libdl, and then some part of
the program ends up doing a dlopen() of a library that needs pthreads.
 Interesting things happen then.  A number of Solaris 9 system
libraries had lots of code whose only purpose was to deal with the
transition from one process model (single-threaded) to the another
(multi-threaded), occasioned by the loading of a dynamic shared
library.

This doesn't mean that you shouldn't want or can't have static
linking.  It means you shouldn't insist on statically linking *system*
libraries, but you can have libsqlite3.a.

Also, the main problem that arises from using dynamic linking is DLL
hell.  The simplest solution to that is direct binding (Solaris) or
versioned symbols (Linux) -- you get static link semantics (no DLL
hell) with the benefits of dynamic linking (such as not having to
rebuild to benefit from a bug fix in a library, as well as explicit
interposition via LD_PPRELOAD, and overall performance improvements).

Nico
--
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-30 Thread Jan Nijtmans
2013/1/30 Jan Nijtmans :
> The $tclconfig(TCL_LIBS) contains the "-ldl", but
> $tclconfig(TCL_STUB_LIB_SPEC) does not, which is
> OK. (the stub library doesn't use dlopen, fossil does)
>
> Somehow, fossil should add "-ldl" here, such that the
> --with-tcl-stubs option works in combination with --static.
>
> Regards,
>   Jan Nijtmans

Fix committed. On most platforms --static should work
again. I still have problems on Ubuntu AMD64, when
using --static in combination --with-tcl-stubs option
(even with the fossil_strcmp macro), but I really
wonder who would want this: A static fossil
binary with dynamically loading libtcl

I agree with others' remarks, that --static doesn't
make sense on modern systems any more.

Regards,
  Jan Nijtmans
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread K. Fossil user
Hello everyone,


Can't we use GnuTLS instead of openSSL ?
Wget decided to use GnuTLS instead of openSSL...



Best Regards


K.


D. Richard Hipp wrote:
K. Fossil user  wrote:

People would like to use a DVCS everywhere with any distro with the SAME 
binary, not the one specific to a distro.
>


I concur.  Unfortunately, this is a function of the distro more than of the 
application.  For example, OpenSSL seems to not support static linking and is 
also highly distro-dependent, so a universal binary needs to omit HTTPS 
support.  So there are tradeoffs. 

Fossil has traditionally worked great on all systems, directly from sources.  
And the binaries are highly portable (module OpenSSL issues).  Have you seen 
otherwise?___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread K. Fossil user
Hello all of you,

 

1/ Jan Nijtmans wrote:
>I agree with others' remarks, that --static doesn't
>make sense on modern systems any more.

I do not agree with such statement.
Static is important because mostly we do use two or more systems.
(debian and centos for example)
Darcs is static and runs everywhere... (at least for me)


 

2/ serious issue

I've downloaded today's timeline trunk:

$ ./configure --prefix=/usr --sysconfdir=/etc \
--with-openssl=none \
--static \
--json \
--markdown
$ make

## all seems ok !

$ sudo make install
$ fossil open fossil.fossil
$ fossil update
Autosync:  http://www2.fossil-scm.org/
Segmentation faultrtifacts sent: 0  received: 0

$ fossil close fossil.fossil


## delete all the files...


$ ./configure --prefix=/usr --sysconfdir=/etc \
--with-openssl=none \
--json \
--markdown
$ make 
make: *** No rule to make target `src/../manifest.uuid', needed by 
`bld/VERSION.h'.  Stop.


## delete all the files...

## install OpenSSL...

$ ./configure --prefix=/usr --sysconfdir=/etc \
--with-openssl=none \
--json \
--markdown
$ make 
## ...
HTTPS support enabled
Checking for readline/readline.h...not found
Checking for editline/readline.h...not found
Checking libs for gethostbyname...none needed
Checking libs for socket...none needed
Checking libs for iconv...none needed
Checking for getpassphrase...not found
Checking libs for getpass...none needed
Checking libs for dlopen...-ldl
Created Makefile from Makefile.in
Created autoconfig.h
make: *** No rule to make target `src/../manifest.uuid', needed by 
`bld/VERSION.h'.  Stop.


If someone could explain me it would be great.
I've seen these issues yesterday, however I decided to wait today for another 
more recent source.
(fossil update)

 
 

Best Regards


K.

Jan Nijtmans wrote:


2013/1/30 Jan Nijtmans :
> The $tclconfig(TCL_LIBS) contains the "-ldl", but
> $tclconfig(TCL_STUB_LIB_SPEC) does not, which is
> OK. (the stub library doesn't use dlopen, fossil does)
>
> Somehow, fossil should add "-ldl" here, such that the
> --with-tcl-stubs option works in combination with --static.
>
> Regards,
>           Jan Nijtmans

Fix committed. On most platforms --static should work
again. I still have problems on Ubuntu AMD64, when
using --static in combination --with-tcl-stubs option
(even with the fossil_strcmp macro), but I really
wonder who would want this: A static fossil
binary with dynamically loading libtcl

I agree with others' remarks, that --static doesn't
make sense on modern systems any more.

Regards,
      Jan Nijtmans
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread Stephan Beal
On Thu, Jan 31, 2013 at 9:35 PM, K. Fossil user <
ticketpersonnal-fos...@yahoo.fr> wrote:

> I've downloaded today's timeline trunk:
> ...$ fossil open fossil.fossil
> $ fossil update
> Autosync:  http://www2.fossil-scm.org/
> Segmentation faultrtifacts sent: 0  received: 0
>

Can you give us more info on that, e.g. the version hash and perhaps a
stacktrace? i've been using several builds from today, built with both tcc
and gcc, on i386 and x64 platforms with no such problems (also updating
from the same source as you).


> make: *** No rule to make target `src/../manifest.uuid', needed by
> `bld/VERSION.h'.  Stop.
>

That one i haven't seen in such a long time that i don't recall what caused
it nor how to fix it :/.


> If someone could explain me it would be great.
>

The following is from a very old post by Joe Mistachkin:
---
A temporary workaround for this issue is to clone (or update) the Fossil
source code and update to the release tag:

fossil update release

Then, while still in the Fossil source code directory, run:

fossil set manifest on

This should give you the correct "manifest" and "manifest.uuid" files
needed to build the source code.
--


I've seen these issues yesterday, however I decided to wait today for
> another more recent source.
> (fossil update)
>

That one with manifest.uuid has come up several times before, but i thought
it had long since been solved. i unfortunately don't remember what causes
it, though. Ooops... but now i've got my tree in that same state (and, even
worse, my only fossil binary is (was) the one from that tree, so i've got a
chicken/egg problem here).

-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread K. Fossil user
Hello,

copy error in my last mail:
correct copy is below :


$ ./configure --prefix=/usr --sysconfdir=/etc \
--with-openssl=auto \
--json \
--markdown
$ make 
## ...
HTTPS support enabled
Checking for readline/readline.h...not found
Checking for editline/readline.h...not found
Checking libs for gethostbyname...none needed
Checking libs for socket...none needed
Checking libs for iconv...none needed
Checking for getpassphrase...not found
Checking libs for getpass...none needed
Checking libs for dlopen...-ldl
Created Makefile from Makefile.in
Created autoconfig.h
make: *** No rule to make target `src/../manifest.uuid', needed by 
`bld/VERSION.h'.  Stop.

 
 

Best Regards


K.___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread K. Fossil user


$ fossil update ba86c859df
checkout: ba86c859dff83e89640091ea18dec5571630af2a 2013-01-31 18:12:54 UTC
tags: trunk
comment:  Added an "extern" to work around a duplicate-definition linking
  error with the tcc compiler. (user: stephan)
changes:  None. Already up-to-date
$ fossil set manifest on
$ ./configure --prefix=/usr --sysconfdir=/etc \
--with-openssl=auto \
--json \
--markdown
$ make

## all compiles correctly, but next is a new issue:

$ ./configure --prefix=/usr --sysconfdir=/etc \
--with-openssl=none \
--static \
--json \
--markdown
$ make 
## ...
cc -DFOSSIL_ENABLE_JSON -DFOSSIL_ENABLE_MARKDOWN  -g -O2 -DHAVE_AUTOCONFIG_H  
-I. -I./src -Ibld -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 
-DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_STAT3 
-Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c ./src/sqlite3.c 
-o bld/sqlite3.o
cc -DFOSSIL_ENABLE_JSON -DFOSSIL_ENABLE_MARKDOWN  -g -O2 -DHAVE_AUTOCONFIG_H  
-I. -I./src -Ibld -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c 
./src/shell.c -o bld/shell.o
cc -DFOSSIL_ENABLE_JSON -DFOSSIL_ENABLE_MARKDOWN  -g -O2 -DHAVE_AUTOCONFIG_H  
-I. -I./src -Ibld -c ./src/th.c -o bld/th.o
cc -DFOSSIL_ENABLE_JSON -DFOSSIL_ENABLE_MARKDOWN  -g -O2 -DHAVE_AUTOCONFIG_H  
-I. -I./src -Ibld -c ./src/th_lang.c -o bld/th_lang.o
cc -DFOSSIL_ENABLE_JSON -DFOSSIL_ENABLE_MARKDOWN  -g -O2 -DHAVE_AUTOCONFIG_H  
-I. -I./src -Ibld -c ./src/cson_amalgamation.c -o bld/cson_amalgamation.o
cc -DFOSSIL_ENABLE_JSON -DFOSSIL_ENABLE_MARKDOWN  -g -O2 -DHAVE_AUTOCONFIG_H -o 
fossil bld/add.o bld/allrepo.o bld/attach.o bld/bag.o bld/bisect.o bld/blob.o 
bld/branch.o bld/browse.o bld/captcha.o bld/cgi.o bld/checkin.o bld/checkout.o 
bld/clearsign.o bld/clone.o bld/comformat.o bld/configure.o bld/content.o 
bld/db.o bld/delta.o bld/deltacmd.o bld/descendants.o bld/diff.o bld/diffcmd.o 
bld/doc.o bld/encode.o bld/event.o bld/export.o bld/file.o bld/finfo.o 
bld/glob.o bld/graph.o bld/gzip.o bld/http.o bld/http_socket.o bld/http_ssl.o 
bld/http_transport.o bld/import.o bld/info.o bld/json.o bld/json_artifact.o 
bld/json_branch.o bld/json_config.o bld/json_diff.o bld/json_dir.o 
bld/json_finfo.o bld/json_login.o bld/json_query.o bld/json_report.o 
bld/json_tag.o bld/json_timeline.o bld/json_user.o bld/json_wiki.o bld/leaf.o 
bld/login.o bld/main.o bld/manifest.o bld/markdown.o bld/markdown_html.o 
bld/md5.o bld/merge.o bld/merge3.o bld/moderate.o bld/name.o
 bld/path.o bld/pivot.o bld/popen.o bld/pqueue.o bld/printf.o bld/rebuild.o 
bld/regexp.o bld/report.o bld/rss.o bld/schema.o bld/search.o bld/setup.o 
bld/sha1.o bld/shun.o bld/skins.o bld/sqlcmd.o bld/stash.o bld/stat.o 
bld/style.o bld/sync.o bld/tag.o bld/tar.o bld/th_main.o bld/timeline.o 
bld/tkt.o bld/tktsetup.o bld/undo.o bld/unicode.o bld/update.o bld/url.o 
bld/user.o bld/utf8.o bld/verify.o bld/vfile.o bld/wiki.o bld/wikiformat.o 
bld/winhttp.o bld/wysiwyg.o bld/xfer.o bld/xfersetup.o bld/zip.o bld/sqlite3.o  
bld/shell.o  bld/th.o  bld/th_lang.o    bld/cson_amalgamation.o -static -lz -ldl
bld/shell.o: In function `find_home_dir':
./src/shell.c:2739: warning: Using 'getpwuid' in statically linked applications 
requires at runtime the shared libraries from the glibc version used for linking
bld/http_socket.o: In function `socket_open':
./src/http_socket.c:148: warning: Using 'gethostbyname' in statically linked 
applications requires at runtime the shared libraries from the glibc version 
used for linking

 
Best Regards


K.



Stephan Beal wrote:

I've downloaded today's timeline trunk:
>...$ fossil open fossil.fossil
>$ fossil update
>Autosync:  http://www2.fossil-scm.org/
>Segmentation faultrtifacts sent: 0  received: 0
>

Can you give us more info on that, e.g. the version hash and perhaps a 
stacktrace? i've been using several builds from today, built with both tcc and 
gcc, on i386 and x64 platforms with no such problems (also updating from the 
same source as you).
 
make: *** No rule to make target `src/../manifest.uuid', needed by 
`bld/VERSION.h'.  Stop.

That one i haven't seen in such a long time that i don't recall what caused it 
nor how to fix it :/.
 
If someone could explain me it would be great.

The following is from a very old post by Joe Mistachkin:
---
A temporary workaround for this issue is to clone (or update) the Fossil
source code and update to the release tag:

        fossil update release

Then, while still in the Fossil source code directory, run:

        fossil set manifest on

This should give you the correct "manifest" and "manifest.uuid" files
needed to build the source code.
--


I've seen these issues yesterday, however I decided to wait today for another 
more recent source.
>(fossil
 update)
>

That one with manifest.uuid has come up several times before, but i thought it 
had long since been solved. i unfortunately don't remember what causes it, 
though. Ooops... but now i've got my tree in 

Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread Nico Williams
On Thu, Jan 31, 2013 at 3:19 PM, K. Fossil user
 wrote:
> $ ./configure --prefix=/usr --sysconfdir=/etc \
> --with-openssl=auto \
> --json \
> --markdown
> $ make


> ./src/shell.c:2739: warning: Using 'getpwuid' in statically linked
> applications requires at runtime the shared libraries from the glibc version
> used for linking
> bld/http_socket.o: In function `socket_open':
> ./src/http_socket.c:148: warning: Using 'gethostbyname' in statically linked
> applications requires at runtime the shared libraries from the glibc version
> used for linking

Well yes, using gethostbyname() and getpwuid() mean using dlopen()
because that's what the name service switch in glibc does.  If glibc
were to always use nscd instead then this wouldn't happen.

Anytime you need dlopen() you need all the run-time linker/loader
machinery, and you need to be prepared to load libraries that need
pthreads, and so on.  Static linking is only really going to work well
if you avoid dlopen() altogether.

I don't understand the appeal of a binary that runs everywhere.  Or, I
do, but that's not easy anymore (and if you need multiple processor
architectures then you really can't have this, not on Linux).  On
Solaris you can achieve that because of the ABI compatibility
guarantee, as long as interfaces don't get EOFed on you.  On Linux it
ought to be the same, but because Linux depends on symbol versioning
instead of direct binding, and because symbol versioning is typically
added to libraries by the distros rather than by the open source
projects themselves... you're at the mercy of the distros.  If Linux
were to adopt direct binding then all you'd need is common run-paths
and SONAMEs, which you basically already get, and then it'd be a lot
easier to build a single dynamic-linked executable that runs close
enough to everywhere.
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread Stephan Beal
On Thu, Jan 31, 2013 at 10:19 PM, K. Fossil user <
ticketpersonnal-fos...@yahoo.fr> wrote:

> bld/shell.o: In function `find_home_dir':
> ./src/shell.c:2739: warning: Using 'getpwuid' in statically linked
> applications requires at runtime the shared libraries from the glibc
> version used for linking
> bld/http_socket.o: In function `socket_open':
> ./src/http_socket.c:148: warning: Using 'gethostbyname' in statically
> linked applications requires at runtime the shared libraries from the glibc
> version used for linking
>

These we warned you about at the start of this thread - they are
platform-specific limitations which we can do nothing to get rid of.

-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread Nico Williams
On Thu, Jan 31, 2013 at 3:28 PM, Stephan Beal  wrote:
> On Thu, Jan 31, 2013 at 10:19 PM, K. Fossil user
>  wrote:
>>
>> bld/shell.o: In function `find_home_dir':
>> ./src/shell.c:2739: warning: Using 'getpwuid' in statically linked
>> applications requires at runtime the shared libraries from the glibc version
>> used for linking
>> bld/http_socket.o: In function `socket_open':
>> ./src/http_socket.c:148: warning: Using 'gethostbyname' in statically
>> linked applications requires at runtime the shared libraries from the glibc
>> version used for linking
>
>
> These we warned you about at the start of this thread - they are
> platform-specific limitations which we can do nothing to get rid of.

Wel, you could use getenv("USER") and LOGNAME instead of
getpwuid(), or fork/exec/spawn id(1) to get the username.  And you
could use a DNS library to resolve the hostname without the benefit of
local caching (unless there's a local caching server).

The bigger problem is that this is something you'd risk having to do
again and again every time something else in glibc ends up needing
dlopen().  It's a losing battle, and even if it isn't (maybe nothing
else in glibc will ever need dlopen()), philosophically it is a losing
battle.  So you have to build an executable per-distro -- welcome to
Linux.

Nico
--
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread K. Fossil user
1/ GLibc and linux symbols versionning issue then...
OK, thanks.

2/ runs everywhere:
I mean, it should run in every plateform... but not cross platform of course.
It is not about java bytecode thing... :D

For example, if someone do fossil compilation with i386, then ALL i386 linux 
should be able to run fossil with no changes.
However, as you said it, we can't deal with that... Just too bad...

 
Best Regards


K.


Nico Williams wrote:

> $ ./configure --prefix=/usr --sysconfdir=/etc \
> --with-openssl=auto \
> --json \
> --markdown
> $ make


> ./src/shell.c:2739: warning: Using 'getpwuid' in statically linked
> applications requires at runtime the shared libraries from the glibc version
> used for linking
> bld/http_socket.o: In function `socket_open':
> ./src/http_socket.c:148: warning: Using 'gethostbyname' in statically linked
> applications requires at runtime the shared libraries from the glibc version
> used for linking

Well yes, using gethostbyname() and getpwuid() mean using dlopen()
because that's what the name service switch in glibc does.  If glibc
were to always use nscd instead then this wouldn't happen.

Anytime you need dlopen() you need all the run-time linker/loader
machinery, and you need to be prepared to load libraries that need
pthreads, and so on.  Static linking is only really going to work well
if you avoid dlopen() altogether.

I don't understand the appeal of a binary that runs everywhere.  Or, I
do, but that's not easy anymore (and if you need multiple processor
architectures then you really can't have this, not on Linux).  On
Solaris you can achieve that because of the ABI compatibility
guarantee, as long as interfaces don't get EOFed on you.  On Linux it
ought to be the same, but because Linux depends on symbol versioning
instead of direct binding, and because symbol versioning is typically
added to libraries by the distros rather than by the open source
projects themselves... you're at the mercy of the distros.  If Linux
were to adopt direct binding then all you'd need is common run-paths
and SONAMEs, which you basically already get, and then it'd be a lot
easier to build a single dynamic-linked executable that runs close
enough to everywhere.___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread K. Fossil user
>So you have to build an executable per-distro -- welcome to
>Linux.

Is it the same with *BSD systems ?

(Thank you for your tought: it's really appreciated !)

 
Best Regards


K.

Nico Williams wrote:


>>
>> bld/shell.o: In function `find_home_dir':
>> ./src/shell.c:2739: warning: Using 'getpwuid' in statically linked
>> applications requires at runtime the shared libraries from the glibc version
>> used for linking
>> bld/http_socket.o: In function `socket_open':
>> ./src/http_socket.c:148: warning: Using 'gethostbyname' in statically
>> linked applications requires at runtime the shared libraries from the glibc
>> version used for linking
>
>
> These we warned you about at the start of this thread - they are
> platform-specific limitations which we can do nothing to get rid of.

Wel, you could use getenv("USER") and LOGNAME instead of
getpwuid(), or fork/exec/spawn id(1) to get the username.  And you
could use a DNS library to resolve the hostname without the benefit of
local caching (unless there's a local caching server).

The bigger problem is that this is something you'd risk having to do
again and again every time something else in glibc ends up needing
dlopen().  It's a losing battle, and even if it isn't (maybe nothing
else in glibc will ever need dlopen()), philosophically it is a losing
battle.  So you have to build an executable per-distro -- welcome to
Linux.

Nico___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread Joerg Sonnenberger
On Wed, Jan 30, 2013 at 01:33:24PM -0500, Richard Hipp wrote:
> For example, OpenSSL seems to not support static linking.

OpenSSL only needs dynamic linkage for additional engines, e.g. to
interact with hardware acceleration devices. Otherwise it is perfectly
fine to statically link it.

Joerg
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-01-31 Thread Joerg Sonnenberger
On Thu, Jan 31, 2013 at 08:34:13PM +, K. Fossil user wrote:
> Can't we use GnuTLS instead of openSSL ?
> Wget decided to use GnuTLS instead of openSSL...

The only real improvement GNU TLS provides over OpenSSL is GPL
compatibility for Linux distributions. Otherwise it is just as messy as
OpenSSL. Whether GPL compatibility is useful is a separate question and
shouldn't be discussed on this list.

Joerg
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-02-01 Thread Edward Berner

On 1/31/2013 12:35 PM, K. Fossil user wrote:

Hello all of you,


Hello.


2/ serious issue
I've downloaded today's timeline trunk:
$ ./configure --prefix=/usr --sysconfdir=/etc \
--with-openssl=none \
--static \
--json \
--markdown
$ make
## all seems ok !
$ sudo make install
$ fossil open fossil.fossil
$ fossil update
Autosync:  http://www2.fossil-scm.org/
Segmentation faultrtifacts sent: 0  received: 0


I'd guess that it's crashing in the DNS resolver, although I wouldn't 
expect it to crash if it is running on the same host it was built on.  I 
played with the static linking stuff a while back and I think I saw this 
behavior when I compiled on a 64 bit Ubuntu and ran on a 32 bit, or 
something like that.



$ fossil close fossil.fossil


The "fossil close" caused the problem below...



## delete all the files...

$ ./configure --prefix=/usr --sysconfdir=/etc \
--with-openssl=none \
--json \
--markdown
$ make
make: *** No rule to make target `src/../manifest.uuid', needed by 
`bld/VERSION.h'.  Stop.


If a repository's "manifest" setting is on then the "manifest" and 
"manifest.uuid" files are included in the checkout directory when a 
repository is opened with "fossil open" (and in the files created by the 
"fossil zip" and "fossil tarball" commands).  But they're removed by 
"fossil close".


Fossil requires the "manifest" and "manifest.uuid" files to build, so 
you'll need to get them back.  Running "fossil open" again would 
probably do it.


--
Edward Berner

___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-02-01 Thread Joan Picanyol i Puig
* Richard Hipp  [20130130 19:31]:
> On Wed, Jan 30, 2013 at 12:30 PM, K. Fossil user <
> ticketpersonnal-fos...@yahoo.fr> wrote:
> 
> > People would like to use a DVCS everywhere with any distro with the SAME
> > binary, not the one specific to a distro.
> >
> 
> 
> I concur.  Unfortunately, this is a function of the distro more than of the
> application.  For example, OpenSSL seems to not support static linking and
> is also highly distro-dependent, so a universal binary needs to omit HTTPS
> support.  So there are tradeoffs.
> 
> Fossil has traditionally worked great on all systems, directly from
> sources.  And the binaries are highly portable (module OpenSSL issues).
> Have you seen otherwise?

Since no one has mentioned them yet, I wonder if using
dropbear/libtomcrypt would be an option?

https://matt.ucc.asn.au/dropbear/dropbear.html
http://libtom.org/?page=features&newsitems=5&whatfile=crypt

There's also polarSSL (previously xyssl), but licensing issues should be
considered: https://polarssl.org/foss-license-exception
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-02-01 Thread Stephan Beal
On Fri, Feb 1, 2013 at 9:09 AM, Edward Berner  wrote:

> I'd guess that it's crashing in the DNS resolver, although I wouldn't
> expect it to crash if it is running on the same host it was built on.  I
> played with the static linking stuff a while back and I think I saw this
> behavior when I compiled on a 64 bit Ubuntu and ran on a 32 bit, or
> something like that.
>

FWIW: i looked at an strace dump sent to me off-list and the crash was
caused by an OOM result from an mmap() which tried to allocate >4GB of
memory. i have seen such inexplicable "mis-allocations" in other software
on systems which mix 32- and 64-bit libraries, which jives with your
observations.

-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-02-01 Thread K. Fossil user
Hello,

1/ Thank you very much Edward Berner. You rock my world.
Of course, embedded system must use light libc...
I've seen that some software uses dietlibc.
In my point of view, static linking can be done in this area, so it will be 
easier to spread Fossil everywhere with network support.

2/ I find that strange that a software needs manifest fix to compile without 
errors.
I agree with you that maybe it is what I've done (fossil close) that may did 
this...


3/ Could you help Fossil team with dietlibc ?

4/ Crashing...
I do compile Fossil in Porteus to unsure that _if_ it is possible to compile in 
Porteus, it will be possible EVERYWHERE to compile it WITHOUT issues.
I do use Porteus 64 bit for that purpose. And I do run the resulting binary in 
Porteus 64 bit either... :-)
The "Crashing" thing occur when I do compile with --static option...

5/ Question: why is it a DNS resolver issue ?

 
Best Regards

K.

Edward Berner wrote :
I think that for static linking on Linux you may need to look at what 
the embedded Linux folks are doing.  I think the alternate libc 
libraries (musl libc, uclibc, dietlibc, etc.) have static linking as an 
explicit design goal.

-- Edward Berner


On 1/31/2013 12:35 PM, K. Fossil user wrote:
> Hello all of you,

Hello.

> 2/ serious issue
> I've downloaded today's timeline trunk:
> $ ./configure --prefix=/usr --sysconfdir=/etc \
> --with-openssl=none \
> --static \
> --json \
> --markdown
> $ make
> ## all seems ok !
> $ sudo make install
> $ fossil open fossil.fossil
> $ fossil update
> Autosync:  http://www2.fossil-scm.org/
> Segmentation faultrtifacts sent: 0  received: 0

I'd guess that it's crashing in the DNS resolver, although I wouldn't expect it 
to crash if it is running on the same host it was built on.  I played with the 
static linking stuff a while back and I think I saw this behavior when I 
compiled on a 64 bit Ubuntu and ran on a 32 bit, or something like that.

> $ fossil close fossil.fossil

The "fossil close" caused the problem below...

> 
> ## delete all the files...
> 
> $ ./configure --prefix=/usr --sysconfdir=/etc \
> --with-openssl=none \
> --json \
> --markdown
> $ make
> make: *** No rule to make target `src/../manifest.uuid', needed by 
> `bld/VERSION.h'.  Stop.

If a repository's "manifest" setting is on then the "manifest" and 
"manifest.uuid" files are included in the checkout directory when a repository 
is opened with "fossil open" (and in the files created by the "fossil zip" and 
"fossil tarball" commands).  But they're removed by "fossil close".

Fossil requires the "manifest" and "manifest.uuid" files to build, so you'll 
need to get them back.  Running "fossil open" again would probably do it.

--
Edward Berner___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-02-04 Thread David Given
Joerg Sonnenberger wrote:
[...]
> The only real improvement GNU TLS provides over OpenSSL is GPL
> compatibility for Linux distributions. Otherwise it is just as messy as
> OpenSSL.

Having used it in a project, I would agree with that last statement, but
I should point out that GNUTLS does provide one semi-interesting feature
--- it allows the use of GPG keys as SSL certificates:

http://gnutls.org/openpgp.html

Of course, it's not compatible with any other implementation of SSL, but
if people are interested in using a web-of-trust security model instead
of the X509 sacred cow security model, it's a potential option.

-- 
┌─── dg@cowlark.com ─ http://www.cowlark.com ─
│
│ 𝕻𝖍'𝖓𝖌𝖑𝖚𝖎 𝖒𝖌𝖑𝖜'𝖓𝖆𝖋𝖍 𝕮𝖙𝖍𝖚𝖑𝖍𝖚 𝕽'𝖑𝖞𝖊𝖍
𝖜𝖌𝖆𝖍'𝖓𝖆𝖌𝖑 𝖋𝖍𝖙𝖆𝖌𝖓.
│



signature.asc
Description: OpenPGP digital signature
___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users


Re: [fossil-users] Latest stable release or dev release does not compile with option: --static

2013-02-05 Thread Edward Berner

On 2/1/2013 3:15 PM, K. Fossil user wrote:

Hello,

1/ Thank you very much Edward Berner. You rock my world.
Of course, embedded system must use light libc...
I've seen that some software uses dietlibc.
In my point of view, static linking can be done in this area, so it 
will be easier to spread Fossil everywhere with network support.


2/ I find that strange that a software needs manifest fix to compile 
without errors.


Fossil reads "manifest" and "manifest.uuid" at build time to gather some 
of the information displayed by the "fossil version" command.


I agree with you that maybe it is what I've done (fossil close) that 
may did this...


3/ Could you help Fossil team with dietlibc ?


I got curious and played with musl libc.  It was pretty straight 
forward; I'll post a summary in another message.


I wouldn't recommend static binaries for general use, however, since 
they don't work with some things, such as Pluggable Authentication 
Modules and the Name Service Switch, which I feel are expected features 
in modern desktop and server Linux.




4/ Crashing...
I do compile Fossil in Porteus to unsure that _if_ it is possible to 
compile in Porteus, it will be possible EVERYWHERE to compile it 
WITHOUT issues.
I do use Porteus 64 bit for that purpose. And I do run the resulting 
binary in Porteus 64 bit either... :-)

The "Crashing" thing occur when I do compile with --static option...

5/ Question: why is it a DNS resolver issue ?


That's just a guess, based on two things:  1) It seemed to be a DNS 
resolver issue when I encountered a similar problem once upon a time, 
and 2) one of the warnings when building with "--static" is about the 
function "gethostbyname" which is part of the DNS resolver.


--
Edward Berner

___
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users