From 294fc4842f1bf79a8796513d1d48a4a14c601a77 Mon Sep 17 00:00:00 2001 From: kueller Date: Mon, 5 May 2008 18:24:10 +0000 Subject: [PATCH] linuxfromscratch changes for Viitor V962 git-svn-id: svn://svn.compuextreme.de/Viitor/V962/ViitorMake@4467 504e572c-2e33-0410-9681-be2bf7408885 --- BaseBuild/crosschain/file | 83 +++++++++++++ BaseBuild/toolchain/bash | 15 ++- BaseBuild/toolchain/binutils | 2 +- BaseBuild/toolchain/coreutils | 8 +- BaseBuild/toolchain/file | 89 ++++++++++++++ BaseBuild/toolchain/findutils | 5 +- BaseBuild/toolchain/gettext | 2 +- BaseBuild/toolchain/gzip | 3 +- BaseBuild/toolchain/tar | 2 +- BaseBuild/toolchain/texinfo | 5 +- BaseBuild/toolchain/toolchain.dmk | 4 +- .../toolchain/{util-linux => util-linux-ng} | 11 +- BaseBuild/toolchain/zlib | 112 ++++++++++++++++++ 13 files changed, 319 insertions(+), 22 deletions(-) create mode 100644 BaseBuild/crosschain/file create mode 100644 BaseBuild/toolchain/file rename BaseBuild/toolchain/{util-linux => util-linux-ng} (94%) create mode 100644 BaseBuild/toolchain/zlib diff --git a/BaseBuild/crosschain/file b/BaseBuild/crosschain/file new file mode 100644 index 0000000..1d29bad --- /dev/null +++ b/BaseBuild/crosschain/file @@ -0,0 +1,83 @@ +#!/bin/bash +#Framework, welches ein komplettes Linux System aus den Sourcen erstellt +#dieses Framework wird im CVS Repository +#:pserver:cvs.tramp-bbs.de:/opt/cvs zur Verfügung gestellt +# +#Lage dieser Datei im Archiv: $HeadURL: svn://odin.dmz.lan/Viitor/V962/ViitorMake/BaseBuild/Basesys/file $ +# +#(c) 2003 Harald Kueller, Germany +#This program is free software; you can redistribute it and/or +#modify ist under the terms of the GNU General Public License +#as published by the Free Software Foundation; either version +#2 of the License, or (at your option) any later version. +# +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +#See the GNU General Public License for more details. +# +#You should have received a copy of the GNU General Public License +#along with this program; if not write to the Free Software Foundation, +#Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +#Dies ist ein Module zur Verwendung mit genpkg. Die Erzeugung eines +#Viitor Linux Packetes wird über die Funktionen premk, mk und postmk +#gesteuert. premk() dient zur Vorbereitung des Sourcecodes. Hier können +#diverse Änderungen am sourcecode (mit awk/sed usw.) vorgenommen werden +#mk() umfasst die source Konfiguration und das Übersetzten des source +#codes. Auch die Installation muß von mk erledigt werden. Hier gild dass +#die Installation immer nach $TMPROOT erfolgen soll (meisst kann das mit +#"make DESTDIR=$TMPROOT install" angestossen werden). postmk kann +#vor der packeterstellung noch einiges am installationtree ändern. postmk +#läuft nachdem die Packetabhängigkeiten erstellt wurden. +#Das Verhalten von genpkg kann über die Variable MKPKG gesteuert werden. +#Hier müssen FLAGS zur Steuerung gesetzt werden. Folgende Flags werden +#erkannt: +# +# 1 : Package Erzeugung erzwingen. Packet wird, auch wenn es schon +# vorhanden ist, ohne weitere rückfragen neu Erzeugt. +# 2 : Package Installation erzwingen. Installpkg wird mit -f aufgerufen. +# Das bewirkt, das installpkg keine rückfragen bei der installation +# Stellt, und das packet in jedemfall (neu) installiert. +# 4 : Sourcepacket nicht nach MAKEDIR entpacken. Ist dieses Flag gesetzt +# muss sich das Module selber um das Entpacken der sourcedateien kümmern. +# vor allem wichtig bei Packeten, für die es keine source.tgz gibt +# (z.B. aus dem CVS generierte Packete). +# 8 : Erstellung des Packetes aus $TMPROOT wird unterdrückt. Dies ist bei +# manchen Sonderfällen möglich - wenn sich z.B. der Packetnamen nicht +# aus dem Namen des sourcearchives ableiten lässt. Packet sollte in +# so einem Fall in der postmk() Funktion erstellt werden. +# 16 : Packet wird nicht installiert. Bei Packeten wie tar oder bash kann +# die installation mittelst installpkg probleme machen. +# 32 : Dependics File so erzeugen, das die Abhängigkeiten bei der installation +# erfüllt sein müssen. installpkg bricht in so einem fall bei fehlenden +# packeten die installation ab, und gibt nicht "nur" warnmeldungen aus. +# Wichtig bei packeten mit postinstallroutine, die software aus dem +# frisch installierten Packet verwendet (wie z.B. postgresql) +# 64 : sourcetree aufräumen nach packeterstellung unterbinden. +# +#Module zur Erstellung des Packetes: file +#Quelle der Source Archive: ftp://ftp.gw.com/mirrors/pub/unix/file +#Kurzbeschreibung: +#file Befehl. file dient zur Identifikation des filetypes einer Datei. +# +#Letzte Änderung von: $Author: kueller $ +#Datum der letzten Änderung: $Date: 2008-05-02 15:13:24 +0200 (Fr, 02 Mai 2008) $ +#Version der Datei: $Revision: 4220 $ +# + +SRCPATH=Base/System + +premk() { + echo "Nothing to do for premk()" +} + +mk() { + ../file*/configure --prefix=/cross-tools + make -j $NUMCPU + make -j $NUMCPU install +} + +postmk() { + echo "Nothing to do for postmk()" +} diff --git a/BaseBuild/toolchain/bash b/BaseBuild/toolchain/bash index cee7d54..e1f4e0b 100644 --- a/BaseBuild/toolchain/bash +++ b/BaseBuild/toolchain/bash @@ -86,7 +86,20 @@ SRCPATH=Base/System (( MKPKG = $MKPKG | 128 )) premk() { - echo "bash_cv_sys_named_pipes=yes" >> config.cache + cat >config.cache <<"EOF" +ac_cv_func_mmap_fixed_mapped=yes +ac_cv_func_strcoll_works=yes +ac_cv_func_working_mktime=yes +bash_cv_func_sigsetjmp=present +bash_cv_getcwd_malloc=yes +bash_cv_job_control_missing=present +bash_cv_printf_a_format=yes +bash_cv_sys_named_pipes=present +bash_cv_ulimit_maxfds=yes +bash_cv_under_sys_siglist=yes +bash_cv_unusable_rtsigs=no +gt_cv_int_divbyzero_sigfpe=yes +EOF } mk() { diff --git a/BaseBuild/toolchain/binutils b/BaseBuild/toolchain/binutils index 34246c2..d9e0ab9 100644 --- a/BaseBuild/toolchain/binutils +++ b/BaseBuild/toolchain/binutils @@ -86,8 +86,8 @@ SRCPATH=Base/Utilities premk() { SrcPatch $MAKEDIR/binutils* $LFSSOURCE/$SRCPATH/binutils-*-posix*.patch* - SrcPatch $MAKEDIR/binutils* $LFSSOURCE/$SRCPATH/binutils-*-branch_update-2* SrcPatch $MAKEDIR/binutils* $LFSSOURCE/$SRCPATH/binutils-*-genscripts*.patch* + SrcPatch $MAKEDIR/binutils* $LFSSOURCE/$SRCPATH/binutils-*-branch_update-3* if [ "$MK64BIT" == "true" ]; then BUILDOPTIONS="-m64" diff --git a/BaseBuild/toolchain/coreutils b/BaseBuild/toolchain/coreutils index b13204e..65f22ce 100644 --- a/BaseBuild/toolchain/coreutils +++ b/BaseBuild/toolchain/coreutils @@ -82,17 +82,15 @@ SRCPATH=Base/System (( MKPKG = $MKPKG | 16 )) premk() { - echo "ac_cv_sys_restartable_syscalls=yes" >config.cache - echo "ac_cv_func_setvbuf_reversed=yes" >>config.cache - echo "utils_cv_sys_open_max=1024" >>config.cache + sed -i "s/futimens/gl_&/" $(grep -lr futimens *) } mk() { CC="${CC} ${BUILDOPTIONS}" \ ./configure --host=$TARGET \ --build=$HOSTSYS \ - --prefix=/tools \ - --cache-file=config.cache + --prefix=/tools + touch man/touch.1 make -j $NUMCPU make -j $NUMCPU install } diff --git a/BaseBuild/toolchain/file b/BaseBuild/toolchain/file new file mode 100644 index 0000000..ba318b4 --- /dev/null +++ b/BaseBuild/toolchain/file @@ -0,0 +1,89 @@ +#!/bin/bash +#Framework, welches ein komplettes Linux System aus den Sourcen erstellt +#dieses Framework wird im CVS Repository +#:pserver:cvs.tramp-bbs.de:/opt/cvs zur Verfügung gestellt +# +#Lage dieser Datei im Archiv: $HeadURL: svn://odin.dmz.lan/Viitor/V962/ViitorMake/BaseBuild/Basesys/file $ +# +#(c) 2003 Harald Kueller, Germany +#This program is free software; you can redistribute it and/or +#modify ist under the terms of the GNU General Public License +#as published by the Free Software Foundation; either version +#2 of the License, or (at your option) any later version. +# +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +#See the GNU General Public License for more details. +# +#You should have received a copy of the GNU General Public License +#along with this program; if not write to the Free Software Foundation, +#Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +#Dies ist ein Module zur Verwendung mit genpkg. Die Erzeugung eines +#Viitor Linux Packetes wird über die Funktionen premk, mk und postmk +#gesteuert. premk() dient zur Vorbereitung des Sourcecodes. Hier können +#diverse Änderungen am sourcecode (mit awk/sed usw.) vorgenommen werden +#mk() umfasst die source Konfiguration und das Übersetzten des source +#codes. Auch die Installation muß von mk erledigt werden. Hier gild dass +#die Installation immer nach $TMPROOT erfolgen soll (meisst kann das mit +#"make DESTDIR=$TMPROOT install" angestossen werden). postmk kann +#vor der packeterstellung noch einiges am installationtree ändern. postmk +#läuft nachdem die Packetabhängigkeiten erstellt wurden. +#Das Verhalten von genpkg kann über die Variable MKPKG gesteuert werden. +#Hier müssen FLAGS zur Steuerung gesetzt werden. Folgende Flags werden +#erkannt: +# +# 1 : Package Erzeugung erzwingen. Packet wird, auch wenn es schon +# vorhanden ist, ohne weitere rückfragen neu Erzeugt. +# 2 : Package Installation erzwingen. Installpkg wird mit -f aufgerufen. +# Das bewirkt, das installpkg keine rückfragen bei der installation +# Stellt, und das packet in jedemfall (neu) installiert. +# 4 : Sourcepacket nicht nach MAKEDIR entpacken. Ist dieses Flag gesetzt +# muss sich das Module selber um das Entpacken der sourcedateien kümmern. +# vor allem wichtig bei Packeten, für die es keine source.tgz gibt +# (z.B. aus dem CVS generierte Packete). +# 8 : Erstellung des Packetes aus $TMPROOT wird unterdrückt. Dies ist bei +# manchen Sonderfällen möglich - wenn sich z.B. der Packetnamen nicht +# aus dem Namen des sourcearchives ableiten lässt. Packet sollte in +# so einem Fall in der postmk() Funktion erstellt werden. +# 16 : Packet wird nicht installiert. Bei Packeten wie tar oder bash kann +# die installation mittelst installpkg probleme machen. +# 32 : Dependics File so erzeugen, das die Abhängigkeiten bei der installation +# erfüllt sein müssen. installpkg bricht in so einem fall bei fehlenden +# packeten die installation ab, und gibt nicht "nur" warnmeldungen aus. +# Wichtig bei packeten mit postinstallroutine, die software aus dem +# frisch installierten Packet verwendet (wie z.B. postgresql) +# 64 : sourcetree aufräumen nach packeterstellung unterbinden. +# +#Module zur Erstellung des Packetes: file +#Quelle der Source Archive: ftp://ftp.gw.com/mirrors/pub/unix/file +#Kurzbeschreibung: +#file Befehl. file dient zur Identifikation des filetypes einer Datei. +# +#Letzte Änderung von: $Author: kueller $ +#Datum der letzten Änderung: $Date: 2008-05-02 15:13:24 +0200 (Fr, 02 Mai 2008) $ +#Version der Datei: $Revision: 4220 $ +# + +SRCPATH=Base/System + +premk() { + echo "Nothing to do for premk()" +} + +mk() { + if [ "$MK64BIT" == "true" ]; then + ADDOPTIONS="--libdir=/tools/lib64" + fi + ../file*/configure --host=$TARGET \ + --build=$HOSTSYS \ + $ADDOPTIONS \ + --prefix=/tools + make -j $NUMCPU + make -j $NUMCPU install +} + +postmk() { + echo "Nothing to do for postmk()" +} diff --git a/BaseBuild/toolchain/findutils b/BaseBuild/toolchain/findutils index 4cc46d4..8d3469b 100644 --- a/BaseBuild/toolchain/findutils +++ b/BaseBuild/toolchain/findutils @@ -82,15 +82,14 @@ SRCPATH=Base/Utilities (( MKPKG = $MKPKG | 16 )) premk() { - echo "am_cv_func_working_getline=yes" >>config.cache + echo "Nothing to do for premk()" } mk() { CC="${CC} ${BUILDOPTIONS}" \ ./configure --host=$TARGET \ --build=$HOSTSYS \ - --prefix=/tools \ - --cache-file=config.cache + --prefix=/tools make -j $NUMCPU make -j $NUMCPU install } diff --git a/BaseBuild/toolchain/gettext b/BaseBuild/toolchain/gettext index c8a8724..facdd76 100644 --- a/BaseBuild/toolchain/gettext +++ b/BaseBuild/toolchain/gettext @@ -83,7 +83,7 @@ SRCPATH=Base/System premk() { cd gettext-tools - echo "am_cv_func_working_getline" >>config.cache + echo "gl_cv_func_wcwidth_works=yes" >>config.cache } mk() { diff --git a/BaseBuild/toolchain/gzip b/BaseBuild/toolchain/gzip index c21eb58..2d18530 100644 --- a/BaseBuild/toolchain/gzip +++ b/BaseBuild/toolchain/gzip @@ -82,8 +82,7 @@ SRCPATH=Base/Utilities (( MKPKG = $MKPKG | 16 )) premk() { - cp -v configure{,.orig} - sed -e "s@nm conftest@${TARGET}-&@" configure.orig >configure + sed -i "s/futimens/gl_&/" $(grep -lr futimens *) } mk() { diff --git a/BaseBuild/toolchain/tar b/BaseBuild/toolchain/tar index 7d51c05..4cab18c 100644 --- a/BaseBuild/toolchain/tar +++ b/BaseBuild/toolchain/tar @@ -86,7 +86,7 @@ SRCPATH=Base/Utilities (( MKPKG = $MKPKG | 16 )) premk() { - echo "am_cv_func_working_getline=yes" >>config.cache + echo "gl_cv_func_wcwidth_works=yes" >>config.cache } mk() { diff --git a/BaseBuild/toolchain/texinfo b/BaseBuild/toolchain/texinfo index 8f94692..df68ea0 100644 --- a/BaseBuild/toolchain/texinfo +++ b/BaseBuild/toolchain/texinfo @@ -80,7 +80,6 @@ SRCPATH=Base/System (( MKPKG = $MKPKG | 8 )) (( MKPKG = $MKPKG | 16 )) -(( MKPKG = $MKPKG | 128 )) premk() { echo "Nothing to do for premk()" @@ -91,7 +90,9 @@ mk() { ./configure --host=$TARGET \ --build=$HOSTSYS \ --prefix=/tools - make -j $NUMCPU + make -j $NUMCPU tools/gnulib/lib + make -j $NUMCPU tools + make -j $NUMCPU make -j $NUMCPU install } diff --git a/BaseBuild/toolchain/toolchain.dmk b/BaseBuild/toolchain/toolchain.dmk index eb2d18a..acaa7d4 100644 --- a/BaseBuild/toolchain/toolchain.dmk +++ b/BaseBuild/toolchain/toolchain.dmk @@ -6,6 +6,8 @@ 16 toolchain/coreutils 16 toolchain/diffutils 16 toolchain/findutils +16 toolchain/zlib +16 toolchain/file 16 toolchain/gawk 16 toolchain/gettext 16 toolchain/grep @@ -15,6 +17,6 @@ 16 toolchain/sed 16 toolchain/tar 16 toolchain/texinfo -16 toolchain/util-linux +16 toolchain/util-linux-ng 16 toolchain/ViitorMake 16 toolchain/bash_profile diff --git a/BaseBuild/toolchain/util-linux b/BaseBuild/toolchain/util-linux-ng similarity index 94% rename from BaseBuild/toolchain/util-linux rename to BaseBuild/toolchain/util-linux-ng index 4c1726e..ef7c26d 100644 --- a/BaseBuild/toolchain/util-linux +++ b/BaseBuild/toolchain/util-linux-ng @@ -83,18 +83,19 @@ SRCPATH=Base/System (( MKPKG = $MKPKG | 128 )) premk() { - SrcPatch $MAKEDIR/util-linux* $LFSSOURCE/$SRCPATH/util-linux-*-gcc4_fixes-1.patch* - cp -v configure{,.orig} - sed -e 's@/usr/include@/tools/include@g' configure.orig >configure + echo "Nothing to do for premk()" } mk() { CC="${CC} ${BUILDOPTIONS}" \ - ./configure - make -j $NUMCPU ARCH="" CPU="" -C lib + ./configure --build=$HOSTSYS \ + --host=$TARGET \ + --prefix=/tools + make -j $NUMCPU ARCH="" CPU="" -C disk-utils mkfs.minix fsck.minix make -j $NUMCPU ARCH="" CPU="" -C mount mount umount make -j $NUMCPU ARCH="" CPU="" -C text-utils more cp -v mount/{,u}mount text-utils/more /tools/bin + cp -v disk-utils/{fsck,mkfs}.minix /tools/sbin } postmk() { diff --git a/BaseBuild/toolchain/zlib b/BaseBuild/toolchain/zlib new file mode 100644 index 0000000..9b2ab1e --- /dev/null +++ b/BaseBuild/toolchain/zlib @@ -0,0 +1,112 @@ +#!/bin/bash +#Framework, welches ein komplettes Linux System aus den Sourcen erstellt +#dieses Framework wird im CVS Repository +#:pserver:cvs.tramp-bbs.de:/opt/cvs zur Verfügung gestellt +# +#Lage dieser Datei im Archiv: $HeadURL: svn://odin.dmz.lan/Viitor/V962/ViitorMake/BaseBuild/Basesys/zlib $ +# +#(c) 2003 Harald Kueller, Germany +#This program is free software; you can redistribute it and/or +#modify ist under the terms of the GNU General Public License +#as published by the Free Software Foundation; either version +#2 of the License, or (at your option) any later version. +# +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +#See the GNU General Public License for more details. +# +#You should have received a copy of the GNU General Public License +#along with this program; if not write to the Free Software Foundation, +#Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +#Dies ist ein Module zur Verwendung mit genpkg. Die Erzeugung eines +#Viitor Linux Packetes wird über die Funktionen premk, mk und postmk +#gesteuert. premk() dient zur Vorbereitung des Sourcecodes. Hier können +#diverse Änderungen am sourcecode (mit awk/sed usw.) vorgenommen werden +#mk() umfasst die source Konfiguration und das Übersetzten des source +#codes. Auch die Installation muß von mk erledigt werden. Hier gild dass +#die Installation immer nach $TMPROOT erfolgen soll (meisst kann das mit +#"make DESTDIR=$TMPROOT install" angestossen werden). postmk kann +#vor der packeterstellung noch einiges am installationtree ändern. postmk +#läuft nachdem die Packetabhängigkeiten erstellt wurden. +#Das Verhalten von genpkg kann über die Variable MKPKG gesteuert werden. +#Hier müssen FLAGS zur Steuerung gesetzt werden. Folgende Flags werden +#erkannt: +# +# 1 : Package Erzeugung erzwingen. Packet wird, auch wenn es schon +# vorhanden ist, ohne weitere rückfragen neu Erzeugt. +# 2 : Package Installation erzwingen. Installpkg wird mit -f aufgerufen. +# Das bewirkt, das installpkg keine rückfragen bei der installation +# Stellt, und das packet in jedemfall (neu) installiert. +# 4 : Sourcepacket nicht nach MAKEDIR entpacken. Ist dieses Flag gesetzt +# muss sich das Module selber um das Entpacken der sourcedateien kümmern. +# vor allem wichtig bei Packeten, für die es keine source.tgz gibt +# (z.B. aus dem CVS generierte Packete). +# 8 : Erstellung des Packetes aus $TMPROOT wird unterdrückt. Dies ist bei +# manchen Sonderfällen möglich - wenn sich z.B. der Packetnamen nicht +# aus dem Namen des sourcearchives ableiten lässt. Packet sollte in +# so einem Fall in der postmk() Funktion erstellt werden. +# 16 : Packet wird nicht installiert. Bei Packeten wie tar oder bash kann +# die installation mittelst installpkg probleme machen. +# 32 : Dependics File so erzeugen, das die Abhängigkeiten bei der installation +# erfüllt sein müssen. installpkg bricht in so einem fall bei fehlenden +# packeten die installation ab, und gibt nicht "nur" warnmeldungen aus. +# Wichtig bei packeten mit postinstallroutine, die software aus dem +# frisch installierten Packet verwendet (wie z.B. postgresql) +# 64 : sourcetree aufräumen nach packeterstellung unterbinden. +# +#Module zur Erstellung des Packetes: zlib +#Quelle der Source Archive: http://freshmeat.net/ +#Kurzbeschreibung: +#Komprimierungslibrary mit Zip Algorythmuss +#wird von sehr vielen Packeten verwendet, und gehört +#inzwischen zur Basisausstattung eines jeden GNU/Linux Systems +# +#Letzte Änderung von: $Author: kueller $ +#Datum der letzten Änderung: $Date: 2008-05-02 15:13:24 +0200 (Fr, 02 Mai 2008) $ +#Version der Datei: $Revision: 4220 $ +# + +SRCPATH=Base/lib + +#Funktion wird nach dem Entpacken der Sourcen, im Tree der Sourcen +#ausgeführt (sprich unpack src; cd src; premk) +#Hier kann z.B. das Makefile gepatcht werden (SED lässt grüssen + +#Patches unterdruecken. fuer Basesystem build wird in zlib ein fPIC patch +#benoetigt, der aber im spaeteren System so richtig fuer stimmung sorgt +#(segfault in diversen applikationen beim build, wenn diese libpng verwenden +#Leider crashed auch subversion wenn dieser patch aktiv ist (das +#repository wird zlib comprimiert uebertragen -> beim entpacken crachts dann) +#daher muss jetzt zlib im Basesys.dmk 2 mal gebaut werden, einmal mit, und +#einmal ohne patch +if [ -d /var/install/zlib* ]; then + (( MKPKG = $MKPKG | 128 )) + (( MKPKG = $MKPKG | 8 )) + (( MKPKG = $MKPKG | 16 )) +fi + +premk() { + echo "nothing to do for premk()" +} + +#Hier wird der Make Prozess der Sourcen definiert +mk() { + if [ "$MK64BIT" == "true" ]; then + ADDOPTIONS="--libdir=/tools/lib64" + fi + CC="gcc ${BUILDOPTIONS}" \ + CXX="g++ ${BUILDOPTIONS}" \ + ./configure --prefix=/usr \ + $ADDOPTIONS \ + --shared + make -j $NUMCPU && + make -j $NUMCPU install +} + +#Funktion wird nach Ablauf des Make Prozesses ausgeführt, und kann +#in $TMPROOT noch einiges korrigieren +postmk() { + echo "Nothing to do for postmk()" +}