Hmmm, the mechanical act of embedding is becoming kitschy with rc
(and bash pending) embeddings.
It just isn't that hard to s/main/foo_main/, throw
the gunk into a library, and tie a call to foo_main()
to %post -p <foo> and %{foo:...} syntax.
And sure I know all about process stateful signals and $CWD and
fdno leaks, it's not very much harder to preserve/restore state across
the foo_main() call transiting to the widdle embedded interpreters.
But with rc/bash embeddings, the limit of diminishing
returns (and "bad art" imho) of embedded interpreters starts
to crystalize.
Sure I can turn RPM into an "embedded firmware device",
batteries included, capable of running within "bare metal"
chroot's.
Should I do that? Dunno.
73 de Jeff on to bash embedding ...
On May 9, 2009, at 3:55 PM, Jeff Johnson wrote:
> RPM Package Manager, CVS Repository
> http://rpm5.org/cvs/
>
> ____________________________________________________________________________
>
> Server: rpm5.org Name: Jeff Johnson
> Root: /v/rpm/cvs Email: jbj@rpm5.org
> Module: rpm rc Date: 09-May-2009 21:55:47
> Branch: HEAD Handle: 2009050919554601
>
> Modified files:
> rc Makefile.am
> rpm Makefile.am autogen.sh configure.ac
> devtool.conf
> rpm/misc Makefile.am librpmmisc.vers
>
> Log:
> - rc: toss the n00b embedding into the -lrpmmisc kitchen sink.
>
> Summary:
> Revision Changes Path
> 1.3 +3 -3 rc/Makefile.am
> 2.237 +1 -0 rpm/Makefile.am
> 2.103 +3 -0 rpm/autogen.sh
> 2.374 +22 -1 rpm/configure.ac
> 2.295 +4 -1 rpm/devtool.conf
> 1.49 +2 -0 rpm/misc/Makefile.am
> 1.21 +1 -0 rpm/misc/librpmmisc.vers
>
> ____________________________________________________________________________
>
> patch -p0 <<'@@ .'
> Index: rc/Makefile.am
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> $ cvs diff -u -r1.2 -r1.3 Makefile.am
> --- rc/Makefile.am 9 May 2009 18:49:26 -0000 1.2
> +++ rc/Makefile.am 9 May 2009 19:55:47 -0000 1.3
> @@ -21,9 +21,9 @@
> SYSTEM = system.c
> endif
>
> -# XXX FIXME: @USRLIBRPM@ needs to be used instead.
> -pkglibdir = /usr/lib/rpm/lib
> -pkgbindir = /usr/lib/rpm/bin
> +# XXX FIXME: ideally @USRLIBRPM@ should be used instead.
> +pkgbindir = @prefix@/lib/rpm/bin
> +pkglibdir = @prefix@/lib/rpm/lib
>
> pkgbin_PROGRAMS = rc
> pkglib_LTLIBRARIES = librc.la
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/Makefile.am
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> $ cvs diff -u -r2.236 -r2.237 Makefile.am
> --- rpm/Makefile.am 6 May 2009 11:44:32 -0000 2.236
> +++ rpm/Makefile.am 9 May 2009 19:55:46 -0000 2.237
> @@ -57,6 +57,7 @@
> @WITH_LUA_SUBDIR@ \
> @WITH_SPIDERMONKEY_SUBDIR@ \
> @WITH_FILE_SUBDIR@ \
> + @WITH_RC_SUBDIR@ \
> @WITH_SYCK_SUBDIR@ \
> @WITH_XAR_SUBDIR@ \
> @WITH_XZ_SUBDIR@ \
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/autogen.sh
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> $ cvs diff -u -r2.102 -r2.103 autogen.sh
> --- rpm/autogen.sh 1 Apr 2009 00:07:36 -0000 2.102
> +++ rpm/autogen.sh 9 May 2009 19:55:46 -0000 2.103
> @@ -49,6 +49,9 @@
> echo "===> file"
> ( cd file && sh ./autogen.sh --noconfigure "$@" )
> echo "<=== file"
> +echo "===> rc"
> +( cd rc && sh ./autogen.sh --noconfigure "$@" )
> +echo "<=== rc"
> echo "===> syck"
> ( cd syck && sh ./autogen.sh --noconfigure "$@" )
> echo "<=== syck"
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/configure.ac
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> $ cvs diff -u -r2.373 -r2.374 configure.ac
> --- rpm/configure.ac 6 May 2009 17:06:35 -0000 2.373
> +++ rpm/configure.ac 9 May 2009 19:55:46 -0000 2.374
> @@ -712,7 +712,7 @@
> asprintf basename fallocate getaddrinfo getcwd getnameinfo
> getwd iconv inet_aton confstr dnl
> mtrace posix_fallocate putenv realpath setenv clearenv stpcpy
> stpncpy strcspn strdup dnl
> strndup strerror strtol strtoul strspn strstr sighold sigrelse
> sigpause dnl
> - sigprocmask sigemptyset sigaddset sigdelset sigsuspend madvise
> dnl
> + sigprocmask sigemptyset sigaddset sigdelset sigsuspend
> sigaction madvise dnl
> __secure_getenv regcomp ftok mkdtemp mkstemp setlocale
> getpassphrase dnl
> mempcpy getmode setmode dnl
> ])
> @@ -1299,6 +1299,27 @@
> ], [])
> AC_SUBST(WITH_SPIDERMONKEY_SUBDIR)
>
> +dnl # Rc
> +RPM_CHECK_LIB(
> + [Rc], [rc],
> + [rc], [rc_main], [rc.h],
> + [no,internal:none], [rc],
> + [ if test ".$RPM_CHECK_LIB_LOCATION" = .internal; then
> + AC_DEFINE(HAVE_RC_H, 1, [Define to 1 if you have <rc.h>])
> + AC_DEFINE(HAVE_LIBRC, 1, [Define to 1 if you have the 'rc'
> library (-lrc).])
> + fi
> + ], [])
> +
> +dnl # Bash
> +RPM_CHECK_LIB(
> + [Bash], [bash],
> + [bash], [bash_main], [bashtypes.h],
> + [no,internal:none], [bash],
> + [ if test ".$RPM_CHECK_LIB_LOCATION" = .internal; then
> + AC_DEFINE(HAVE_LIBBASH, 1, [Define to 1 if you have the 'bash'
> library (-lbash).])
> + fi
> + ], [])
> +
> dnl # Lua
> WITH_LUA_SUBDIR_DEF=""
> WITH_LUA_SUBDIR_LIB=""
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/devtool.conf
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> $ cvs diff -u -r2.294 -r2.295 devtool.conf
> --- rpm/devtool.conf 7 May 2009 08:25:16 -0000 2.294
> +++ rpm/devtool.conf 9 May 2009 19:55:46 -0000 2.295
> @@ -3,7 +3,7 @@
> ##
>
> %common
> - MODULE_NAMES="db lua file xar xz pcre syck js/src"
> + MODULE_NAMES="db lua file xar xz pcre syck js/src rc"
> MODULE_TAG_DB=""
> MODULE_TAG_LUA=""
> MODULE_TAG_FILE=""
> @@ -12,6 +12,7 @@
> MODULE_TAG_PCRE=""
> MODULE_TAG_SYCK=""
> MODULE_TAG_JS_SRC=""
> + MODULE_TAG_RC=""
>
> %checkout
> for name in $MODULE_NAMES "$@"; do
> @@ -94,6 +95,8 @@
> --with-libelf \
> --with-selinux \
> --with-ficl=/usr/lib:/usr/include/ficl \
> + --without-bash \
> + --with-rc=internal \
> --with-js=internal \
> --with-python \
> --with-pythonembed=/usr/lib:/usr/include/python2.5 \
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/misc/Makefile.am
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> $ cvs diff -u -r1.48 -r1.49 Makefile.am
> --- rpm/misc/Makefile.am 2 May 2009 20:06:28 -0000 1.48
> +++ rpm/misc/Makefile.am 9 May 2009 19:55:47 -0000 1.49
> @@ -37,6 +37,7 @@
> @WITH_JS_LDFLAGS@ \
> @WITH_LUA_LDFLAGS@ \
> @WITH_PCRE_LDFLAGS@ \
> + @WITH_RC_LDFLAGS@ \
> @WITH_SYCK_LDFLAGS@ \
> @WITH_XAR_LDFLAGS@ \
> @WITH_XZ_LDFLAGS@ \
> @@ -49,6 +50,7 @@
> @WITH_JS_LIBS@ \
> @WITH_LUA_LIBS@ \
> @WITH_PCRE_LIBS@ \
> + @WITH_RC_LIBS@ \
> @WITH_SYCK_LIBS@ \
> @WITH_XAR_LIBS@ \
> @WITH_XZ_LIBS@ \
> @@ .
> patch -p0 <<'@@ .'
> Index: rpm/misc/librpmmisc.vers
>
> =
> =
> =
> =
> =
> =
> ======================================================================
> $ cvs diff -u -r1.20 -r1.21 librpmmisc.vers
> --- rpm/misc/librpmmisc.vers 8 May 2009 01:50:44 -0000 1.20
> +++ rpm/misc/librpmmisc.vers 9 May 2009 19:55:47 -0000 1.21
> @@ -110,6 +110,7 @@
> pcre_maketables;
> pcre_study;
> pcre_version;
> + rc_main;
> syck_add_sym;
> syck_emit;
> syck_emit_end;
> @@ .
> ______________________________________________________________________
> RPM Package Manager http://rpm5.org
> CVS Sources Repository rpm-cvs@rpm5.org
Received on Sat May 9 22:08:21 2009