[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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 &amp; .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: