Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
#######
#
# E-scripts on Lua (old stuff that I'm almost throwing away)
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/lua-old.e>
#           or at <http://angg.twu.net/e/lua-old.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/.emacs[.html]>,
#                 <http://angg.twu.net/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######






# «.lua-4.0_debs»	(to "lua-4.0_debs")
# «.lua_4.0-0»		(to "lua_4.0-0")
# «.lua_4.0-0.2»	(to "lua_4.0-0.2")
# «.lua_4.0-0.2:libdllua»  (to "lua_4.0-0.2:libdllua")
# «.lua_4.0-0.2:dllua.h»   (to "lua_4.0-0.2:dllua.h")
# «.lua_4.0-0.2:dllua.c»   (to "lua_4.0-0.2:dllua.c")
# «.lua_4.0-0.2:generic»   (to "lua_4.0-0.2:generic")
# «.lua_4.0-0.2:dltest1»   (to "lua_4.0-0.2:dltest1")
# «.lua_4.0-0.2:dltest2»   (to "lua_4.0-0.2:dltest2")
# «.lua_4.0-0.2:dltest2g»  (to "lua_4.0-0.2:dltest2g")

# «.dllua»		(to "dllua")
# «.dllua-patch»	(to "dllua-patch")
# «.lua_4.0-0.1»	(to "lua_4.0-0.1")
# «.loadlib-registerC»	(to "loadlib-registerC")
# «.loadlib-gdb»	(to "loadlib-gdb")




#####
#
# Lua-4.0: making a serious Debian package (lua_4.0-0)
# 2001jan08
#
#####

# «lua-4.0_debs»  (to ".lua-4.0_debs")
# «lua_4.0-0»  (to ".lua_4.0-0")
# This block produces the .deb (and the .dsc, the .diff.gz, etc) that
# I upload to my apt repository, from the pristine sources and a few
# extra files. If we uncomment a certain "patch" command this will
# produce debs for lua having my experimental "loadlib" command; these
# debs are never uploaded to the repository.
# How to fetch the debianized stuff and install it:
#		(to "fetching_the_debs")
# An older debianization attempt:
#		(to "lua_yada")
# The current debianization attempt, newer than this one:
#		(to "dllua-patch")
# The "source" for the debian/packages file:
#		(to "lua-packagesfile")
#*
rm -Rv /usr/src/lua_4.0*

rm -Rv /usr/src/lua-4.0.orig/
mkdir  /usr/src/lua-4.0.orig/
cd     /usr/src/lua-4.0.orig/
tar -xvzf $S/ftp/ftp.tecgraf.puc-rio.br/pub/lua/lua-4.0.tar.gz
mv -v lua/* .
rmdir lua/

rm -Rv /usr/src/lua-4.0/
mkdir  /usr/src/lua-4.0/
cd     /usr/src/lua-4.0/
tar -xvzf $S/ftp/ftp.tecgraf.puc-rio.br/pub/lua/lua-4.0.tar.gz
mv -v lua/* .
rmdir lua/

mkdir rttpatch
cd rttpatch
unzip $S/http/www.cl.cam.ac.uk/users/rrt1001/lualibs.zip
mv README README.rttpatch
for i in $(find * -type f); do mv -v $i ../$i; done
cd /usr/src/lua-4.0/
rm -Rv rttpatch

# (find-luafile "INSTALL" "Edit \"config\"")
# (find-luafile "config")

# My VERY EXPERIMENTAL version of loadlib for lua-4.0:
# (to "loadlib-patch")
# (find-angg "LUA/loadlib/")
# (find-angg "LUA/loadlib/README.loadlib")
# (find-angg "LUA/loadlib/lloadlib.c")
cp -v ~/LUA/loadlib/README.loadlib .
cp -v ~/LUA/loadlib/loadlib.patch .
cp -v ~/LUA/loadlib/lloadlib.c src/lib/
#patch -p0 < loadlib.patch

#*
#echo skipping patch -p0 config <<'%%%'
patch -b -p0 config <<'%%%'
96c96,97
< CFLAGS= -O2 $(WARN) $(INCS) $(DEFS)
---
> #CFLAGS= -O2 $(WARN) $(INCS) $(DEFS)
> CFLAGS= -g -O2 $(WARN) $(INCS) $(DEFS)
%%%

# Leave the stripping for dh_strip, we want debuggable binaries in
# <lua-dir>/bin/ and <lua-dir>/lib/.
patch -p0 Makefile <<'%%%'
22c22,23
< install: all strip
---
> #install: all strip
> install: all
%%%

# (find-fline "~/lua-4.0/debian/")
# (find-fline "/usr/bin/yada" "Wile E. Coyote")
# (find-es "debiandev" "yada")
mkdir debian
for i in debian/packages debian/changelog doc/lua.texi; do
  cp -av ~/lua-4.0/$i $i
done

yada yada
debian/yada rebuild rules

# dpkg-buildpackage -us -uc	|& tee /tmp/odbp

cat > $EEG <<'---'
TestPasswd
TestPasswd
---
eeg dpkg-buildpackage		|& tee /tmp/odbp

mv -v /tmp/odbp /usr/src/lua-4.0/
laf /usr/src/lua_4.0*
# (find-fline "/usr/src/" "lua_4.0")
# (find-luafile "debian/tmp-lua/")

#*
cd /usr/src/
mv -v lua*.deb .debs/
mv -v lua*.dsc     .dscs/
mv -v lua*.gz      .dscs/
mv -v lua*.changes .dscs/
aptu-local-i386

#*
#dpkg -i /usr/src/lua_4.0-0_i386.deb
dpkg -i /usr/src/.debs/lua_4.0-0_i386.deb

# (find-status "lua")
# (find-vldifile "lua.list")
# (find-fline "/usr/doc/lua/")


#*
# And these are for when I've compiled Lua with the loadlib patch:
cp -iv /usr/src/lua_4.0-0_i386.deb ~/LUA/loadlib/
#*
dpkg -i ~/LUA/loadlib/lua_4.0-0_i386.deb
lua -e 'print(loadlib)'
#*





#####
#
# Another "serious" Debian package, with cgilua's loadlib (lua-4.0-0.2)
# 2001jul26
#
#####

# «lua_4.0-0.2»  (to ".lua_4.0-0.2")
# (to "cgilua")
#*
rm -Rv /usr/src/lua_4.0*
cd /usr/src/
cp -iv .dscs/lua_4.0-0.dsc       .
cp -iv .dscs/lua_4.0.orig.tar.gz .
cp -iv .dscs/lua_4.0-0.diff.gz   .
dpkg-source -x lua_4.0-0.dsc

cd /usr/src/lua-4.0/

## «lua_4.0-0.2:libdllua»  (to ".lua_4.0-0.2:libdllua")
## First we prepare things to generate also a "libdllua.a", that
## comprises the "loadlib" functions from cgilua and my dllua_open...

rm -v README.loadlib loadlib.patch src/lib/lloadlib.c
cd /usr/src/lua-4.0/ && rm -v $(find * | grep orig)

B=-b
#B=

mkdir src/libdllua/
cp -v /usr/src/cgilua/loadlib/loadlib.{c,h} src/libdllua/

 # (find-luafile "src/libdllua/Makefile")
cat > src/libdllua/Makefile <<'---'
# makefile for libdllua standard library
#
LUA= ../..
LIB= $(LUA)/lib
LIBDLLUA= $(LUA)/libdllua
include $(LUA)/config
#
DLLUA_OBJS= loadlib.o dllua_open.o
DLLUA_SRCS= loadlib.o dllua_open.o
DLLUA_T= $(LIB)/libdllua.a
#
all: $(DLLUA_T)
$(DLLUA_T): $(DLLUA_OBJS)
	$(AR) $@ $(DLLUA_OBJS)
	$(RANLIB) $@
loadlib.o: loadlib.c
	$(CC) -c $(CPPFLAGS) $(CFLAGS) -DDLFCN -o $@ $<
clean:
	rm -f $(DLLUA_OBJS) $(DLLUA_T)
---

 # (find-fline "~/LUA/loadlib/")
 # (find-luafile "src/lib/")
#cat > src/lib/dllua_open.c <<'---'
cat > src/libdllua/dllua_open.c <<'---'
#include "dllua.h"
lua_State *dllua_open(int stacksize) {
  lua_State *L = lua_open(stacksize);
  lua_baselibopen(L);
  lua_iolibopen(L);
  lua_strlibopen(L);
  lua_mathlibopen(L);
  lua_dblibopen(L);
  /* non-standard libraries */
  lua_rexlibopen(L);
  lua_bitlibopen(L);
  loadlib_open(L);
  return L;
}
---


## «lua_4.0-0.2:dllua.h»  (to ".lua_4.0-0.2:dllua.h")
## A ".h" to make a bit simpler to create C extensions.

 # (find-luafile "src/lib/")
 # (find-luafile "src/lib/loadlib.c")
 # (find-luafile "src/lib/loadlib.h")
cat > include/dllua.h <<'---'
#ifndef dllua_h
#define dllua_h
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
void loadlib_open( lua_State *L );
lua_State *dllua_open(int stacksize);
#endif
---


## «lua_4.0-0.2:dllua.c»  (to ".lua_4.0-0.2:dllua.c")
## From lua.c (i.e., from a slightly patched version of it) we will
## generate two ".o"s, the usual one and a "dllua.o" that links with
## the extra libs...

 # (find-luafile "src/lua/lua.c")
patch $B -p0 src/lua/lua.c <<'%%%'
315a316
> #ifndef DLLUA
317a319,321
> #else
>   L = dllua_open(opt.stacksize);
> #endif
%%%

 # (find-luafile "src/lua/Makefile")
patch $B -p0 src/lua/Makefile <<'%%%'
14c14,18
< all: $T
---
> DLLUA_OBJS= dllua.o
> DLLUA_SRCS= dllua.c
> DLLUA_T= $(BIN)/dllua
>
> all: $T $(DLLUA_T)
18a23,28
> $(DLLUA_T): $(DLLUA_OBJS) $(LIB)/liblua.a $(LIB)/liblualib.a $(LIB)/libdllua.a
> 	$(CC) -o $@ $(DLLUA_OBJS) -L$(LIB) -llua -llualib -ldllua -ldl $(EXTRA_LIBS)
>
> dllua.o: lua.c
> 	$(CC) -c $(CPPFLAGS) $(CFLAGS) -DDLLUA -o $@ $<
>
23a34,36
>
> $(LIB)/libdllua.a:
> 	cd ../libdllua; $(MAKE)
%%%



## «lua_4.0-0.2:generic»  (to ".lua_4.0-0.2:generic")
## The files that control everything

patch $B -p0 Makefile <<'%%%'
14a15
> 	cd src/libdllua; $(MAKE) $@
34c35,38
< 	cd lib; ln -s liblua.so.$V liblua.so; ln -s liblualib.so.$V liblualib.so
---
> 	ld -o lib/libdllua.so.$V -shared src/libdllua/*.o
> 	cd lib; ln -s liblua.so.$V liblua.so
> 	cd lib; ln -s liblualib.so.$V liblualib.so
> 	cd lib; ln -s libdllua.so.$V libdllua.so
38c42
< 	rm -f bin/lua bin/luac
---
> 	rm -f bin/lua bin/luac bin/dllua
%%%

patch $B -p0 debian/packages <<'%%%'
21a22,23
>  rm                    inst/lib/libdllua.so
>  ln -s libdllua.so.4.0 inst/lib/libdllua.so
%%%

# (find-luafile "debian/changelog")
cat > debian/changelog <<'---'
lua (4.0-0.2) unstable; urgency=low

  * Second public Debian version (still quite unofficial).
    The script that makes the Debian package from the original sources can
    be found at <http://angg.twu.net/e/lua.e.html#lua_4.0-0.2>.

 -- Eduardo Ochs <edrx@mat.puc-rio.br>  Mon,  8 Jan 2001 18:16:54 -0200
---


rm -fv debian/control debian/rules debian/yada
rm -fv debian/files debian/substvars
yada yada
yada rebuild rules
yada rebuild control


# (find-luafile "src/libdllua/")
cd /usr/src/lua-4.0/

# debian/rules binary		|& tee odrb
# (find-luafile "odrb")
#
cat > $EEG <<'---'
TestPasswd
TestPasswd
---
eeg dpkg-buildpackage		|& tee /tmp/odbp
mv -v /tmp/odbp /usr/src/lua-4.0/

laf /usr/src/lua_4.0*
# (find-fline "/usr/src/" "lua_4.0")
# (find-luafile "debian/tmp-lua/")

cd /usr/src/
mv -v lua*.dsc     /usr/src/lua-4.0/
mv -v lua*.gz      /usr/src/lua-4.0/
mv -v lua*.deb     /usr/src/lua-4.0/
mv -v lua*.changes /usr/src/lua-4.0/

#*
cd /usr/src/lua-4.0/
cp -iv lua_4.0-0.2.dsc     ../.dscs/
cp -iv lua_4.0-0.2.diff.gz ../.dscs/

#*
rm -Rv /usr/src/lua*
pdsc /usr/src/.dscs/lua_4.0-0.2.dsc
cd /usr/src/lua-4.0/ && rm -v $(find * | grep orig)

#*
# «lua_4.0-0.2:dltest1»  (to ".lua_4.0-0.2:dltest1")
# (find-es "anatocc" "dlopen")
cd /tmp/
cat > mylualib.c <<'---'
#include <stdio.h>
void distant() {
  printf("Hello! Hello!\n");
}
---
gcc -g -Wall -shared -o mylualib.so mylualib.c

LD_LIBRARY_PATH=/usr/src/lua-4.0/lib \
  /usr/src/lua-4.0/bin/dllua -e '
    libhandle, err = loadlib("/tmp/mylualib.so")
    print(libhandle, err)
    callfromlib(libhandle, "distant")
    print("Hello")
  '

#*
# «lua_4.0-0.2:dltest2»  (to ".lua_4.0-0.2:dltest2")
# Second test: now we register a C function in Lua.
cd /tmp/
cat > mylualib.c <<'---'
#include <stdio.h>
/* #include <lualib.h> */
#include <dllua.h>
static int dipsy(lua_State *L) {
  printf("Dipsy!\n");
  return 0;
}

void distant_init(lua_State *L) {
  lua_register(L, "dipsy", dipsy);
}
---
gcc -g -Wall -shared -o mylualib.so mylualib.c

cat > /tmp/test.lua <<'---'
libhandle, err = loadlib("/tmp/mylualib.so")
print(libhandle, err)
callfromlib(libhandle, "distant_init")
print("Hello")
dipsy()
---

LD_LIBRARY_PATH=/usr/src/lua-4.0/lib \
  /usr/src/lua-4.0/bin/dllua /tmp/test.lua

#*
# «lua_4.0-0.2:dltest2g»  (to ".lua_4.0-0.2:dltest2g")
# (find-luafile "src/libdllua/loadlib.c")
# (gdbk-gdb 'eeg-bounded "/usr/src/lua-4.0/bin/dllua")
set args /tmp/test.lua
set env LD_LIBRARY_PATH /usr/src/lua-4.0/lib
br main
run
info share
# br loadlib_open
br loadlib.c:loadlib

#*





#####
#
# dllua: lua with the "loadlib" patch and something more
# 2001jun18
#
#####

# (find-luafile "")
# (find-luafile "README.rttpatch")
# (find-luafile "src/lib/lrexlib.c")
# (find-fline "~/tmp/lua-manual.txt" "5 - The Appli")
# (find-fline "~/tmp/lua-manual.txt" "5.13 - Defining C Functions")
# (find-w3 "/usr/doc/lua/manual.html#5.")
# (find-es "anatocc" "dlopen")
#*
# «dllua»  (to ".dllua")
# «dllua-patch»  (to ".dllua-patch")
# «lua_4.0-0.1»  (to ".lua_4.0-0.1")
# (to "lua-4.0_debs")

rm -R /usr/src/lua_4.0*

rm -R /usr/src/lua-4.0.orig/
mkdir  /usr/src/lua-4.0.orig/
cd     /usr/src/lua-4.0.orig/
tar -xzf $S/ftp/ftp.tecgraf.puc-rio.br/pub/lua/lua-4.0.tar.gz
mv -v lua/* .
rmdir lua/

rm -Rv /usr/src/lua-4.0/
mkdir  /usr/src/lua-4.0/
cd     /usr/src/lua-4.0/
tar -xzf $S/ftp/ftp.tecgraf.puc-rio.br/pub/lua/lua-4.0.tar.gz
mv -v lua/* .
rmdir lua/

mkdir rttpatch
cd rttpatch
unzip $S/http/www.cl.cam.ac.uk/users/rrt1001/lualibs.zip
mv README README.rttpatch
for i in $(find * -type f); do mv -v $i ../$i; done
cd /usr/src/lua-4.0/
rm -Rv rttpatch

# (find-luafile "INSTALL" "Edit \"config\"")
# (find-luafile "config")

#echo not doing patch -p0 config <<'%%%'
patch -b -p0 config <<'%%%'
96c96,97
< CFLAGS= -O2 $(WARN) $(INCS) $(DEFS)
---
> #CFLAGS= -O2 $(WARN) $(INCS) $(DEFS)
> CFLAGS= -g -O2 $(WARN) $(INCS) $(DEFS)
%%%

# (find-fline "~/lua-4.0/debian/")
# (find-fline "/usr/bin/yada" "Wile E. Coyote")
# (find-es "debiandev" "yada")
mkdir debian
for i in debian/packages debian/changelog doc/lua.texi; do
  cp -av ~/lua-4.0/$i $i
done



# (to "loadlib-patch")
# (find-angg "LUA/loadlib/")
cp -v ~/LUA/loadlib/README.loadlib .
cp -v ~/LUA/loadlib/loadlib.patch .
cp -v ~/LUA/loadlib/lloadlib.c src/lib/
cp -v ~/LUA/loadlib/dllualib.c src/lib/
cp -v ~/LUA/loadlib/dllua.h include/
#patch -p0 < loadlib.patch

# (find-fline "~/LUA/loadlib/loadlib.patch")
# (find-luafile "config")
# (find-luafile "include/lualib.h")
# (find-luafile "src/lib/Makefile")

# Leave the stripping for dh_strip, we want debuggable binaries in
# <lua-dir>/bin/ and <lua-dir>/lib/.

 # (find-luafile "src/lua/lua.c")
patch -b -p0 src/lua/lua.c <<'%%%'
315a316
> #ifndef DLLUA
317a319,321
> #else
>   L = dllua_open(opt.stacksize);
> #endif
%%%

 # (find-luafile "src/lib/Makefile")
patch -b -p0 src/lib/Makefile <<'%%%'
15c15,16
< T= $(LIB)/liblualib.a
---
> OBJS_DL= $(OBJS) lloadlib.o dllualib.o
> SRCS_DL= $(SRCS) lloadlib.c dllualib.c
17c18
< all: $T
---
> all: $(LIB)/liblualib.a $(LIB)/libdllua.a
19c20
< $T: $(OBJS)
---
> $(LIB)/liblualib.a: $(OBJS)
22a24,27
> $(LIB)/libdllua.a: $(OBJS_DL)
> 	$(AR) $@ $(OBJS_DL)
> 	$(RANLIB) $@
>
24c29
< 	rm -f $(OBJS) $T
---
> 	rm -f $(OBJS) $(LIB)/liblualib.a $(LIB)/libdllua.a
%%%

 # (find-luafile "src/lua/Makefile")
patch -b -p0 src/lua/Makefile <<'%%%'
9c9
< OBJS= lua.o
---
> OBJS= lua.o dllua.o
12c12
< T= $(BIN)/lua
---
> all: $(BIN)/lua $(BIN)/dllua
14c14,15
< all: $T
---
> $(BIN)/lua: $(OBJS) $(LIB)/liblua.a $(LIB)/liblualib.a
> 	$(CC) -o $@ lua.o -L$(LIB) -llua -llualib -ldl $(EXTRA_LIBS)
16,17c17,24
< $T: $(OBJS) $(LIB)/liblua.a $(LIB)/liblualib.a
< 	$(CC) -o $@ $(OBJS) -L$(LIB) -llua -llualib $(EXTRA_LIBS)
---
> # (find-node "(make)Catalogue of Rules")
> # (find-node "(make)Automatic")
>
> dllua.o: lua.c
> 	$(CC) -c $(CPPFLAGS) $(CFLAGS) -DDLLUA -o $@ $<
>
> $(BIN)/dllua: $(OBJS) dllua.o $(LIB)/liblua.a $(LIB)/liblualib.a
> 	$(CC) -o $@ dllua.o -L$(LIB) -llua -ldllua -ldl $(EXTRA_LIBS)
%%%

 # (find-luafile "Makefile")
patch -b -p0 Makefile <<'%%%'
22c22,23
< install: all strip
---
> #install: all strip
> install: all
28a30,35
> LUALIB_OBJS = src/lib/lauxlib.o src/lib/lbaselib.o	\
> 	src/lib/lbitlib.o src/lib/ldblib.o src/lib/liolib.o	\
> 	src/lib/lloadlib.o src/lib/lmathlib.o			\
> 	src/lib/lrexlib.o src/lib/lstrlib.o
> LUALIB_OBJS_DL = src/lib/dllualib.o
>
32,33c39,43
< 	ld -o lib/liblualib.so.$V -shared src/lib/*.o
< 	cd lib; ln -s liblua.so.$V liblua.so; ln -s liblualib.so.$V liblualib.so
---
> 	ld -o lib/liblualib.so.$V -shared $(LUALIB_OBJS)
> 	ld -o lib/libdllua.so.$V -shared $(LUALIB_OBJS)
> 	cd lib; ln -s liblua.so.$V liblua.so
> 	cd lib; ln -s liblualib.so.$V liblualib.so
> 	cd lib; ln -s libdllua.so.$V libdllua.so
%%%

patch -b -p0 include/lualib.h <<'%%%'
27a28
> LUALIB_API void lua_loadlib_open (lua_State *L);
%%%

 # (find-luafile "debian/changelog")
patch -b -p0 debian/changelog <<'%%%'
0a1,7
> lua (4.0-0.1) unstable; urgency=low
>
>   * Added a texinfo version of the manual; added dllua (see
>     <http://angg.twu.net/e/lua.e.html#dllua>).
>
>  -- Eduardo Ochs <edrx@mat.puc-rio.br>  Tue, 26 Jun 2001 22:00:00 -0200
>
%%%

yada yada
debian/yada rebuild rules
#*
debian/rules binary	|& tee odrb

#*
cat > $EEG <<'---'
TestPasswd
TestPasswd
---
eeg dpkg-buildpackage		|& tee /tmp/odbp

mv -v /tmp/odbp /usr/src/lua-4.0/
laf /usr/src/lua_4.0*
# (find-fline "/usr/src/" "lua_4.0")

#*
cd /usr/src/
mv -v lua*.deb .debs/
mv -v lua*.dsc     .dscs/
mv -v lua*.gz      .dscs/
mv -v lua*.changes .dscs/
aptu-local-i386

#*
chdir "/usr/src/lua-4.0/"
# (gdbk-perldb t "/usr/bin/" "dpkg-parsechangelog" t)
# (gdbk-perldb t "/usr/lib/dpkg/parsechangelog/debian < debian/changelog" "" t)
# (find-angg "eegdb.el" "gdbk-hyperlinks")
# (find-man "perlop" "The null filehandle <>")
# (find-fline "/usr/lib/dpkg/parsechangelog/debian")

#*

dpkg -i /usr/src/lua_4.0-0.1_i386.deb
#dpkg -i /usr/src/.debs/lua_4.0-0.1_i386.deb
#luae 'px(loadlib)'
dllua ~/LUA/inc.lua -e 'px(loadlib)'

#*










#*
# First test of the new lua:
# (find-es "anatocc" "dlopen")
cd /tmp/
cat > mylualib.c <<'---'
#include <stdio.h>
void distant() {
  printf("Hello! Hello!\n");
}
---
gcc -g -Wall -shared -o mylualib.so mylualib.c

luae '
  loadlib("/tmp/mylualib.so", "distant")
  print("Hello")
'

#*
# «loadlib-registerC»  (to ".loadlib-registerC")
# Second test: now we register a C function in Lua.
# (find-man "dlopen" "If  dlopen fails for any reason")

cd /tmp/
cat > mylualib.c <<'---'
#include <stdio.h>
#include <dllua.h>
static int dipsy(lua_State *L) {
  printf("Dipsy!\n");
  return 0;
}
void distant_init(lua_State *L) {
  printf("Init!\n");
  lua_register(L, "dipsy", dipsy);
}
---
gcc -g -Wall -shared -llua -o mylualib.so mylualib.c

# Note: if we omit the "-llua" above then weird things happen: dlopen
# returns NULL but gdb says that mylualib.so was loaded; and dlerror()
# returns "Success". Argh.

cat > /tmp/test.lua <<'---'
loadlib("/tmp/mylualib.so", "distant_init")
print("Hello")
dipsy()
---
dllua /tmp/test.lua

# LD_LIBRARY_PATH=/usr/src/lua-4.0/lib \
#   /usr/src/lua-4.0/bin/dllua /tmp/test.lua

#*
# «loadlib-gdb»  (to ".loadlib-gdb")
# (gdbk-gdb t "/usr/src/lua-4.0/bin/dllua")
set args /tmp/test.lua
set env LD_LIBRARY_PATH /usr/src/lua-4.0/lib
br main
run
info share
br loadlib
#*

# (find-status "lua")
# (find-vldifile "lua.list")
# (find-fline "/usr/doc/lua/")






#####
#
# Adding my version of "loadlib" to lua-4.0
# 2001feb21
#
#####

# (find-luafile "")
# (find-luafile "README.rttpatch")
# (find-luafile "src/lib/lrexlib.c")
# (find-fline "~/tmp/lua-manual.txt" "5 - The Appli")
# (find-fline "~/tmp/lua-manual.txt" "5.13 - Defining C Functions")
# (find-w3 "/usr/doc/lua/manual.html#5.")
# (find-es "anatocc" "dlopen")
#*
# «loadlib-patch»  (to ".loadlib-patch")
# (to "lua-4.0_debs")
cd /usr/src/lua-4.0/

patch -b -p0 config <<'%%%'
59c59
< EXTRA_LIBS= -lm
---
> EXTRA_LIBS= -lm -ldl
%%%
patch -b -p0 src/lib/Makefile <<'%%%'
11c11
<       lrexlib.o
---
>       lrexlib.o lloadlib.o
13c13
<       lrexlib.c
---
>       lrexlib.c lloadlib.c
%%%
patch -b -p0 include/lualib.h <<'%%%'
27a28
> LUALIB_API void lua_loadlib_open (lua_State *L);
%%%
patch -b -p0 src/lua/lua.c <<'%%%'
59a60
>   lua_loadlib_open(L);
%%%

#*
cd /usr/src/lua-4.0/
for i in config include/lualib.h src/lib/Makefile src/lua/lua.c; do
  diff -u $i.orig $i
done | tee ~/o
#cp ~/o ~/LUA/loadlib/loadlib.patch

# (find-angg "LUA/loadlib/")
# (find-angg "LUA/loadlib/README.loadlib")
# (find-angg "LUA/loadlib/lloadlib.c")

#*
# First test of the new lua:
# (find-es "anatocc" "dlopen")
cd /tmp/
cat > mylualib.c <<'---'
#include <stdio.h>
void distant() {
  printf("Hello! Hello!\n");
}
---
gcc -g -Wall -shared -o mylualib.so mylualib.c

LD_LIBRARY_PATH=/usr/src/lua-4.0/lib \
/usr/src/lua-4.0/bin/dllua -e '
  libhandle, err = loadlib("/tmp/mylualib.so")
  print(libhandle, err)
  callfromlib(libhandle, "distant")
  print("Hello")
'

# /usr/src/lua-4.0/bin/lua -e '
#   loadlib("/tmp/mylualib.so", "distant")
#   print("Hello")
# '

#*
# «loadlib-registerC»  (to ".loadlib-registerC")
# Second test: now we register a C function in Lua.

cd /tmp/
cat > mylualib.c <<'---'
#include <stdio.h>
#include <lualib.h>
static int dipsy(lua_State *L) {
  printf("Dipsy!\n");
  return 0;
}

void distant_init(lua_State *L) {
  lua_register(L, "dipsy", dipsy);
}
---
gcc -g -Wall -shared -o mylualib.so mylualib.c

cat > /tmp/test.lua <<'---'
-- loadlib("/tmp/mylualib.so", "distant_init")
libhandle, err = loadlib("/tmp/mylualib.so")
print(libhandle, err)
callfromlib(libhandle, "distant_init")
print("Hello")
dipsy()
---

LD_LIBRARY_PATH=/usr/src/lua-4.0/lib \
  /usr/src/lua-4.0/bin/dllua /tmp/test.lua

#*
# «loadlib-gdb»  (to ".loadlib-gdb")
# (gdbk-gdb t "/usr/src/lua-4.0/bin/lua")
set args /tmp/test.lua
set env LD_LIBRARY_PATH /usr/src/lua-4.0/lib
br main
run
info share
br loadlib
#*





#####
#
# loadlib (original version by rborges, for lua3.2)
# 2001feb21
#
#####

# «loadlib»  (to ".loadlib")
# (find-fline "~/LUA/myloadlib.c")
#*
rm -Rv /usr/src/loadlib/
mkdir  /usr/src/loadlib/
cd     /usr/src/loadlib/
tar -xvzf $S/http/www.tecgraf.puc-rio.br/~rborges/loadlib/loadlib.tgz
make CFLAGS=-I/usr/src/lua3.2-3.2/include LUAINC=/usr/include |& tee om
gcc -E -I/usr/src/lua3.2-3.2/include loadlib.c > loadlib.E

# make LUAINC=/usr/include |& tee om

# Compilation problems with lua4.0.
# (code-c-d "luall" "/usr/src/loadlib/")
# (find-luallfile "")
# (find-luallfile "makefile")
# (find-luallfile "loadlib.c")
# (find-luallfile "loadlib.c" 166)
# (find-luallfile "loadlib.h")
# (find-luallfile "loadlib.E")
# (find-luallfile "loadlib.E" "static int gettag")
# (find-luallfile "om")
# (find-fline "/usr/include/lua.h")
# (find-fline "/usr/include/lualib.h")
# (find-fline "/usr/include/lauxlib.h" "luaL_arg_check")
# (find-luatag "luaL_argerror")
# (find-fline "~/tmp/lua-manual.txt")
# (find-luafile "")
# (find-luafile "src/lib/ldblib.c" "luaL_argerror(L, 2,")
# (find-lua3.2file "")
# (find-lua3.2file "src/lib/lstrlib.c" "luaL_arg_check")

#*
cd /usr/src/lua-4.0/ && (
  find * -name '*.[ch]' | sort > .files.ch
  etags $(<.files.ch)
)
cd /usr/src/lua3.2-3.2/ && (
  find * -name '*.[ch]' | sort > .files.ch
  etags $(<.files.ch)
)

#*




#####
#
# uploading the debs
# 2001feb25
#
#####

# «uploading_the_debs»  (to ".uploading_the_debs")
# Note that as things are still too alpha I do upload new versions
# without changing the version numbers of the debs. Shame on me,
# but...
# (find-fline "/usr/src/.dscs/lua_4.0-0.diff.gz")
# 2001jun26: Changed the version to 4.0-0.1.
#*
cd /usr/src/.dscs/
anonftp ftp://angg.twu.net/home2/edrx/slow_html/debian/dists/potato/local/ \
  'cd source'			\
  'put lua_4.0-0.1.diff.gz'	\
  'put lua_4.0-0.1.dsc'		\
  'put lua_4.0-0.1_i386.changes'	\
  'put lua_4.0.orig.tar.gz'	\
  'quit'

cd /usr/src/.debs/
anonftp ftp://angg.twu.net/home2/edrx/slow_html/debian/dists/potato/local/ \
  'cd binary-i386'		\
  'put lua_4.0-0.1_i386.deb'	\
  'quit'

cd ~/lua-4.0/doc/
anonftp ftp://angg.twu.net/home2/edrx/slow_html/lua-4.0/doc/ \
  'put lua.texi' quit

# (find-es "page" "apt_repository")
# (find-angg ".zshrc" "apt")
#*
# (eevt-bounded)
cd ~/slow_html/debian/
dpkg-scan_p+s dists/potato/local
(rm -Rv ~/public_html/debian/; cd ~/slow_html/; cp -dPpvRl * ~/public_html/)

#*
# (eevt-bounded)
cd ~/slow_html/debian/dists/potato/local/
l binary-i386/Packages source/Sources

#*










#  Local Variables:
#  coding:               no-conversion
#  ee-delimiter-hash:    "\n#*\n"
#  ee-delimiter-percent: "\n%*\n"
#  ee-anchor-format:     "«%s»"
#  ee-charset-indicator: "Ñ"
#  End: