ein neues buildsystem --> autotools endlich abloesen
Tach Leutz,
aufgrund zahlreicher Probleme der etablierten buildsysteme,
vorallem automake+friends (die ich jetzt nicht unbedingt
nochmal auswalzen möchte ...) beschreite ich jetzt endlich
mal einen völlig neuen Ansatz:
Anstatt eines touring-vollständigen Regelsystems (make),
dessen input aus einem shellscript kommt (configure), das
wiederum aus m4-Macros erzeugt werden (autoconf), die dann
ihrerseits wieder von Perl-Scripten aus eine ebenso touring-
vollständigen Macro/Regel-Definition generiert werden (automake),
modelliere ich die reine Essenz der Struktur eines jeweiligen
Paketes in einer möglichst schmalen Beschreibung. Aus dieser
kann dann der Build-Prozess (entsprechend externer Vorgaben)
abgeleitet und gesteuert werden.
Das hat nicht nur den Vorteil der besseren Übersichtlichkeit,
sondern vorallem auch der scharfen Kapselung. So liegt der
Build-Prozess nicht mehr im Interesse des Paket-Entwicklers -
dieser gibt ledeglich nur noch die Struktur seiner Software an,
der Rest liegt in der Hand des Build-Systems. Plattform- oder
gar Compiler-spezifische Dinge tauchen in den Buildfiles nicht
mehr auf.
Im Anhang seht Ihr mal ein paar kleine Beispiele für build-files.
Vielleicht hat ja jemand von Euch ein wenig Lust, bei dem
Projekt mitzumachen ...
cu
--
---------------------------------------------------------------------
Enrico Weigelt == metux IT service
phone: +49 36207 519931 www: http://www.metux.de/
fax: +49 36207 519932 email: contact@metux.de
cellphone: +49 174 7066481
---------------------------------------------------------------------
-- DSL ab 0 Euro. -- statische IP -- UUCP -- Hosting -- Webshops --
---------------------------------------------------------------------
<?xml version="1.0" ?>
<package name="x11-bigreqsproto" value="1.0.2">
<meta name="info" value="https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" />
<library name="bigreqsproto" type="nobinary" version="1.0.2">
<property name="pkg-config-file" value="bigreqsproto.pc" />
<property name="common-name" value="BigReqsProto" />
<property name="include-target-dir" value="$(package::include-dir)/X11/extensions" />
<property name="description"> BigReqs extension headers </property> -->
<include-file scope="public" name="bigreqsproto.h" />
</library>
</package>
<?xml version="1.0" ?>
<package name="x11-util-macros" version="1.0.0">
<!-- X11 specific pathes -->
<property name="package-install-prefix" value="$(fhs-install-x11-prefix)" />
<property name="package-install-sysconfdir" value="$(fhs-install-x11-sysconfdir)" />
<resource name="xorg-macros.m4"
type="text/autoconf-macro"
install-dir="$(package-install-datadir)/aclocal"
mode="u=rw,go=r"
/>
<resource name="xorgversion.m4"
type="text/autoconf-macro"
install-dir="$(package-install-datadir)/aclocal"
mode="u=rw,go=r"
/>
</package>
<?xml version="1.0" ?>
<package name="x11-xtrans" version="1.0.0">
<meta name="info" value="https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" />
<property name="package-install-prefix" value="$(fhs-install-x11-prefix)" />
<property name="package-install-sysconfdir" value="$(fhs-install-x11-sysconfdir" />
<property name="package-install-localstatedir" value="$(fhs-install-x11-localstatedir" />
<property name="package-install-includedir" value="/FOO/" />
<resource name="xtrans.m4"
type="text/autoconf-macro"
install-dir="$(package-install-datadir)/aclocal" />
<library name="XTrans" type="nobinary" version="$(package::version)">
<property name="description"> Abstract network code for X </property>
<property name="include-target-dir" value="$(package-install-includedir)/X11/Xtrans" />
<include-file scope="public" name="Xtrans.h" />
<include-file scope="public" name="Xtrans.c" />
<include-file scope="public" name="Xtransdnet.c" />
<include-file scope="public" name="Xtransint.h" />
<include-file scope="public" name="Xtranslcl.c" />
<include-file scope="public" name="Xtransos2.c" />
<include-file scope="public" name="Xtranssock.c" />
<include-file scope="public" name="Xtranstli.c" />
<include-file scope="public" name="Xtransutil.c" />
<include-file scope="public" name="transport.c" />
</library>
</package>
<!--
Cflags: -I${includedir} -D_BSD_SOURCE @fchown_define@ @sticky_bit_define@
AC_CHECK_FUNC(fchown, [fchown_define="-DHAS_FCHOWN"], [fchown_define=""])
AC_SUBST(fchown_define)
# sticky bit
#
# if any system exists without sticky dir bits this
# needs to be redone with a real autoconf test
sticky_bit_define="-DHAS_STICKY_DIR_BIT"
AC_SUBST(sticky_bit_define)
-->
<?xml version="1.0" ?>
<package name="x11-libXpm" version="3.5.4.2">
<meta name="info" value="https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" />
<configure>
<header name="src/config.h" />
<feature name="transparent-unzip"
description="Search for files with .Z & .gz extensions automatically"
symbol="STAT_ZFILE"
default="auto" />
</configure>
<library name="Xpm" version="$(package::version)">
<property name="description"> X Pixmap Library </property>
<property name="source-directory" value="src" />
<property name="dl-no-undefined" value="yes" />
<property name="dl-version" value="4:11:0" />
<import scope="private" library="xproto" />
<import scope="private" library="xt" />
<import scope="private" library="xext" />
<import scope="private" library="xextproto" />
<conditional feature="transparent-unzip">
<import scope="private" library="z" />
</conditional>
<include-file scope="public" name="X11/xpm.h" srcdir="include/" />
<source name="Attrib.c" />
<source name="CrBufFrI.c" />
<source name="CrBufFrP.c" />
<source name="CrDatFrI.c" />
<source name="CrDatFrP.c" />
<source name="CrIFrBuf.c" />
<source name="CrIFrDat.c" />
<source name="CrIFrP.c" />
<source name="CrPFrBuf.c" />
<source name="CrPFrDat.c" />
<source name="CrPFrI.c" />
<source name="Image.c" />
<source name="Info.c" />
<source name="RdFToBuf.c" />
<source name="RdFToDat.c" />
<source name="RdFToI.c" />
<source name="RdFToP.c" />
<source name="WrFFrBuf.c" />
<source name="WrFFrDat.c" />
<source name="WrFFrI.c" />
<source name="WrFFrP.c" />
<source name="XpmI.h" />
<source name="create.c" />
<source name="data.c" />
<source name="hashtab.c" />
<source name="misc.c" />
<source name="parse.c" />
<source name="rgb.c" />
<source name="rgbtab.h" />
<source name="scan.c" />
</library>
<manual name="Xpm">
<property name="source-directory" value="man" />
<property name="manual-section" value="3" />
<property name="language" value="en" />
<property name="source-suffix" value=".man" />
</manual>
</package>
<!--
if test "x$GCC" = "xyes"; then
GCC_WARNINGS="-Wall -Wpointer-arith -Wstrict-prototypes \
-Wmissing-prototypes -Wmissing-declarations \
-Wnested-externs -fno-strict-aliasing"
CFLAGS="$GCC_WARNINGS $CFLAGS"
fi
-->
Reply to: