Bug#430234: bug out of date

2007-10-22 Thread skaller
This bug only applies to old versions of Felix.
Newer versions of Felix do not put any header
files in /usr/include.

Felix will build with whatever data types the C/C++ compiler
provides by default.

[Mike, this should be closed, it doesn't apply to
the current version of Felix]

-- 
John Skaller skaller at users dot sf dot net
Felix, successor to C++: http://felix.sf.net



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#444360: ocamlnet_2.2.8.1-3(hppa/experimental): FTBFS: tries to link non-PIC static object into shared object

2007-09-28 Thread skaller
On Fri, 2007-09-28 at 14:26 +0100, Richard Jones wrote:
 On Fri, Sep 28, 2007 at 03:17:27PM +0200, Stefano Zacchiroli wrote:
  On Fri, Sep 28, 2007 at 02:10:45PM +0100, Richard Jones wrote:
   In particular I could do it if INRIA said that they would support the
   change in some future release (see the exception Patches Heading
   Upstream).  But otherwise this is quite a large ABI change -- if
   Fedora users started to build lots of 64 bit shared libraries linked
   with -lcamlrun I could end up maintaining it separately forever.
 
 [I meant to say -lcamlrun_shared here]
 
  I think you misunderstood my proposal. I don't want to apply your
  initial fix which changes libcamlrun.a into libcamlrun.so. I want to add
  a libcamlrun_shared.so, so there would be no ABI change, just the added
  possibility to link against it.
  
  Or maybe you're concerned about having to drop in the future support for
  libcamlrun_shared.so, but I think the user impact of that new library
  would be quite low. In fact I don't think anything else that
  mod_caml-like projects will need it ...
 
 That would also need to go upstream before Fedora could accept it.

Why? I would have thought it is close to *policy* to provide
libraries for both static and dynamic link. 

-- 
John Skaller skaller at users dot sf dot net
Felix, successor to C++: http://felix.sf.net



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#346572: [mipsel] Depends on ocaml-nox-3.08.3 which cannot be installed.

2006-01-08 Thread skaller
On Mon, 2006-01-09 at 00:37 +0100, Sven Luther wrote:

  qube:~# apt-get install ocaml
  Reading Package Lists... Done
  Building Dependency Tree... Done

  The following packages have unmet dependencies:
ocaml: Depends: ocaml-nox-3.08.3
E: Broken packages

I get this from my mirror regularly. It occurs because the
package index is downloaded first .. but the packages come later.
On Ubuntu  I get a flashing thing telling me there are upgrades
available .. only when I try to download them they're not there.
An hour later .. they're there :)

The mirror *should* add new packages, then add the index,
then remove any hidden packages but I guess it just uses
a generalised filesystem synching program.

-- 
John Skaller skaller at users dot sf dot net
Felix, successor to C++: http://felix.sf.net



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Bug#327736: lablgl: FTBFS on m68k, ocamlmktop crashes at exit

2005-09-12 Thread skaller
On Mon, 2005-09-12 at 11:35 +0200, Samuel Mimram wrote:
 reassign 327736 tk8.4
 thanks

  tclsh return
  load tk
 
 Well, this does not work even on my i386 box:
 
 % tclsh
 % load tk
 couldn't load file tk: tk: cannot open shared object file: No such 
 file or directory

Maybe the package path has to be set up correctly: I forget
how to do that .. hmm .. see below, looks like the correct 
command is:

package require tk

 So, I guess you meant load libtk8.4.so. 

Technically, most tcl extensions should be
loaded by their tcl loader scripts, rather than in
the raw: the tk loader script exists, and is just
called 'tk' -- at least I think: haven't done any
tcl/tk programming for a while --

So you should NOT trust my comments, they're NOT authoritative,
just indicative of a possible problem.

[EMAIL PROTECTED]:~$ ls /usr/lib/tk8.4/tk.tcl
/usr/lib/tk8.4/tk.tcl

It says this:

# Initialization script normally executed in the interpreter for each
# Tk-based application.  Arranges class bindings for widgets.

..

# Insist on running with compatible versions of Tcl and Tk.
package require -exact Tk 8.4
package require -exact Tcl 8.4

and there is this:

# Add Tk's directory to the end of the auto-load search path, if it
# isn't already on the path:

if {[info exists ::auto_path]  [string compare {} $::tk_library]  \
[lsearch -exact $::auto_path $::tk_library]  0} {
lappend ::auto_path $::tk_library
}

which suggests somehow /usr/lib/tk8.4 needed to be on the
auto-load search path already.

-- 
John Skaller skaller at users dot sourceforge dot net



signature.asc
Description: This is a digitally signed message part


Bug#327736: lablgl: FTBFS on m68k, ocamlmktop crashes at exit

2005-09-11 Thread skaller
 no reason AT ALL to have a 'wish' program when you
have dynamic linkage, except that the developers had no idea how to 
make dynamic linkage work (wish is needed if you only have static
linkage).

And this is almost certainly the problem with Ocaml's Tk bindings.
Tk itself is linked incorrectly. 'It just works' on most systems
by luck, and because executables export Tcl symbols which Tk needs.

The *problem* is that to use the wrong linkage, Tk calls Tcl
using weak symbols which are only linked when used .. or not ..
which causes a segfault if they can't be found in the 
executable. If you try to do:

dlopen(tcl)
dlopen(tk)

surprise suprise it doesn't work unless your executable
is set up to propagate the symbols from tcl into the global
symbol table so the subsequent load of Tk can find them.
You have to use

dlopen(tcl.so,RTLD_GLOBAL)

to make it work. This is because Tk is not linked against tcl.
It should be. However, Tk MUST NOT load Tcl... :)

What's happening with the bug above? Well, Tk used to have
an event loop, but Tcl did not. That got changed over time,
so that these days Tk uses the Tcl event loop. Since
Tk is meant to be loaded by Tcl -- even though Ousterhout
could never figure out how to actually make it work --
it can also be *unloaded* -- its just another package.

The problem is that the mainline is linking to Tk directly,
and when it is unloaded the binary is creaming the event
loop -- the plug is being pulled without Tcl knowing.
The thing is, you are not ALLOWED to pull the plug on Tk.
It MUST be done by Tcl, just as Tk MUST be loaded by Tcl,
and NEVER by the application directly. 

Tk C API MUST NOT ever be called by any applications!!!

The Tk API is ONLY available to dynamically loadable
widgets loaded BY Tk. The reason, trivially, is that
there is no correct way for an application to load Tk,
except via Tcl script, because it is Tcl that MUST load
Tk, not the other way around -- which means the application
cannot see the Tk API because it isn't allowed to
dlopen() it -- well, at least not until AFTER Tcl has
already done so!!

What's happening? The destructors for Tk's static data --
Tk is a brain dead piece of code, it isn't reentrant --
are operating on data that is ALREADY unmapped.
There is a pointer in there pointing to Tcl data.
But Tcl is already gone. Because Tk was Kludged to load
Tcl to make thousands of wrong programs work, because
Ousterhout got it all wrong in the first place.

Solution: dlopen() Tcl BEFORE linking to Tk.
That way, Tcl won't be unloaded prematurely.
The best way to do that is to dlopen() Tcl first,
initialise it, then TELL Tcl to load Tk.
After that you can dlopen Tk .. when you dlclose it,
it will not be destroyed because Tcl is still using it.
Tcl will release it when IT is destroyed. It is important
that the client has already dlclosed it at this point.

Hope this rant all makes sense. Bottom line is that
Tk has been misused by everyone for decades including
its designer, who never understood how to make it load
properly -- so it isn't surprising no one else did either.
Looks like it is STILL all wrong. The open chain MUST go:

appl -- tcl -- tk

and the close chain is the reverse. If the app wants to
call Tk api, it can open tk after Tcl has. It should close
it before closing Tcl, so that Tcl can close tk, which
allows tk to unlink itself from the event loop whilst
that event loop's static data is still held by Tcl.


-- 
John Skaller skaller at users dot sourceforge dot net



signature.asc
Description: This is a digitally signed message part