# [HOWTO] ..build a Paludis enabled Stage3 Archive

## ruth

Hallo,

nachdem wir uns hier:

https://forums.gentoo.org/viewtopic-t-688483.html

zu einem Stage3 Archiv emporgearbeitet haben, stellt sich natürlich die Frage, wie man ein Stage3 Archiv inklusive Paludis erzeugen könnte...

Nun, nachdem ja catalyst nicht mit paludis zusammenarbeitet, müssen wir das ganze anders angehen:

Das im folgenden erzeugte Stage3 Archiv ist technisch gesprochen nämlich kein Stage3 Archiv, sondern ein Stage4 Archiv.

Das target stage4 von catalyst erlaubt uns nämlich, folgende Variablen zu setzen:

```

portage_confdir:

   /root/catalyst/portage

stage4/packages:

   sys-apps/paludis

stage4/fsscript:

   /root/catalyst/fsscript_paludis.sh

```

Das Vorgehen sollte jetzt schon eindeutiger sein:

Wir weisen catalyst an, paludis zu installieren

Die Datei /root/catalyst/portage/package.keywords muss dementsprechend folgende Einträge enthalten:

```

sys-apps/paludis x86 ~x86

app-admin/eselect x86 ~x86

app-admin/eselect-news x86 ~x86

```

Damit wird dann paludis installiert.

Schlussendlich fehlen eigentlich nur noch zwei Dateien:

/root/catalyst/stage4_paludis.spec

```

subarch:

   i686

target:

   stage4

version_stamp:

        XXX_VERSION_STAMP_XXX 

rel_type:

   default

profile:

   default/linux/x86/2008.0

snapshot:

   XXX_VERSION_STAMP_XXX

source_subpath:

   default/stage3-i686-XXX_VERSION_STAMP_XXX

portage_confdir:

   /root/catalyst/portage

stage4/packages:

   sys-apps/paludis

stage4/fsscript:

   /root/catalyst/fsscript_paludis.sh

stage4/empty:

   /usr/portage

   /var/paludis/distfiles

   /var/paludis/repositories

   /var/tmp/paludis

```

und die Datei:

/root/catalyst/fsscript_paludis.sh

```

#!/bin/bash

# export HOME for paludis...

export HOME=/root

do_check_status () {

   if [ $? -eq 0 ]; then

      echo ">>> done"

   else

      echo ">>> Error"

      exit 1

   fi

}

if [ -d /etc/paludis ]; then

   echo ">>> /etc/paludis exists, ok..."

else

   echo ">>> creating /etc/paludis..."

   mkdir /etc/paludis

   do_check_status

fi

if [ -d /etc/paludis/keywords.conf.d ]; then

        echo ">>> /etc/paludis/keywords.conf.d exists, ok..."

else

        echo ">>> creating /etc/paludis/keywords.conf.d..."

        mkdir /etc/paludis/keywords.conf.d

        do_check_status

fi

if [ -d /etc/paludis/repositories ]; then

        echo ">>> /etc/paludis/repositories exists, ok..."

else

        echo ">>> creating /etc/paludis/repositories..."

        mkdir /etc/paludis/repositories

        do_check_status

fi

if [ -d /etc/paludis/use.conf.d ]; then

        echo ">>> /etc/paludis/use.conf.d exists, ok..."

else

        echo ">>> creating /etc/paludis/use.conf.d..."

        mkdir /etc/paludis/use.conf.d

        do_check_status

fi

# ok, minimal dir skeleton exists now...

# lets continue creating the config files...

# bashrc, please adjust CFLAGS, CXXFLAGS, CHOST _MANUALLY_...

# DO IT NOW; DONT FORGET TO ADJUST PARAMETERS BELOW, ELSE YOUR SYSTEM _WILL_ BREAK!!!

#

echo ">>> creating /etc/paludis/bashrc"

cat << EOF > /etc/paludis/bashrc

CFLAGS="-O2 -march=i686 -pipe"

CXXFLAGS="-O2 -march=i686 -pipe"

CHOST="i686-pc-linux-gnu"

MAKEOPTS="-j2"

# export PATH="/usr/lib/ccache/bin/:$PATH"

# export CCACHE_DIR="/var/tmp/ccache"

SKIP_FUNCTIONS=test

case "\${PN}" in

        paludis|gcc)

        unset SKIP_FUNCTIONS

        ;;

esac

EOF

do_check_status

echo ">>> creating /etc/paludis/environment.conf"

cat << EOF > /etc/paludis/environment.conf

world = /var/db/pkg/world

EOF

do_check_status

echo ">>> creating /etc/paludis/licenses.conf"

cat << EOF > /etc/paludis/licenses.conf

*/* *

EOF

do_check_status

echo ">>> creating /etc/paludis/mirrors.conf"

cat << EOF > /etc/paludis/mirrors.conf

* http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/distfiles/

EOF

do_check_status

echo ">>> creating /etc/paludis/keywords.conf.d/base.conf"

cat << EOF > /etc/paludis/keywords.conf.d/base.conf

*/*                 x86

EOF

do_check_status

echo ">>> creating /etc/paludis/keywords.conf.d/paludis.conf"

cat << EOF > /etc/paludis/keywords.conf.d/paludis.conf

sys-apps/paludis x86 ~x86

app-admin/eselect x86 ~x86

app-admin/eselect-news x86 ~x86

EOF

do_check_status

echo ">>> creating /etc/paludis/use.conf.d/paludis.conf"

cat << EOF > /etc/paludis/use.conf.d/paludis.conf

sys-apps/paludis -python

EOF

do_check_status

echo ">>> creating /etc/paludis/repositories/gentoo.conf"

cat << EOF > /etc/paludis/repositories/gentoo.conf

location = /var/paludis/repositories/gentoo/

# sync = rsync://rsync.europe.gentoo.org/gentoo-portage/

sync = rsync://rsync.gentoo.org/gentoo-portage/

profiles = /var/paludis/repositories/gentoo/profiles/default/linux/x86/2008.0

format = ebuild

distdir = /var/paludis/distfiles

names_cache = \${location}/.cache/names

write_cache = /var/cache/paludis/metadata

EOF

do_check_status

echo ">>> creating /etc/paludis/repositories/installed.conf"

cat << EOF > /etc/paludis/repositories/installed.conf

location = /var/db/pkg/

format = vdb

names_cache = \${location}/.cache/names

provides_cache = \${location}/.cache/provides

EOF

do_check_status

echo ">>> creating /var/paludis/repositories"

mkdir -p /var/paludis/repositories

do_check_status

echo ">>> creating /var/paludis/distfiles"

mkdir -p /var/paludis/distfiles

do_check_status

echo ">>> adjusting ownership of /var/paludis/distfiles"

chown paludisbuild:paludisbuild /var/paludis/distfiles

do_check_status

echo ">>> chmod (1) for /var/paludis/distfiles"

chmod g+rwx /var/paludis/distfiles

do_check_status

echo ">>> chmod (2) for /var/paludis/distfiles"

chmod +s /var/paludis/distfiles

do_check_status

echo ">>> creating /var/tmp/paludis"

mkdir -p /var/tmp/paludis

do_check_status

echo ">>> chgrp for /var/tmp/paludis"

chgrp paludisbuild /var/tmp/paludis

do_check_status

echo ">>> chmod (1) for /var/tmp/paludis"

chmod g+rwx /var/tmp/paludis

do_check_status

echo ">>> chmod (2) for /var/tmp/paludis"

chmod +s /var/tmp/paludis

do_check_status

echo ">>> linking portage tree to paludis"

ln -s /usr/portage /var/paludis/repositories/gentoo

do_check_status

mkdir -p /var/paludis/repositories/gentoo/.cache/names

do_check_status

echo ">>> regenerating installed cache"

paludis --regenerate-installed-cache

do_check_status

echo ">>> regenerating installable cache"

paludis --regenerate-installable-cache

do_check_status

echo ">>> re-installing paludis with itself"

paludis -i --debug-build none paludis

do_check_status

echo ">>> re-installing system"

paludis --dl-reinstall always --debug-build none -i system

do_check_status

echo ">>> all done, exiting"

exit 0

```

Das ganze sollte so ziemlich selbsterklärend sein.

Das Resultat von:

```

catalyst -v -f stage4_paludis.spec

```

ist jedenfalls ein (technisch gesehen Stage4) Stage3 Archiv, das paludis als Paketmanager verwendet.

Das fsscript_paludis.sh beinhaltet die von mir bevorzugte Paludiskonfiguration.

Viele werden diese also an ihre eigenen Bedürfnisse anpassen wollen...

Auch und insbesondere auf die CHOST, CFLAGS, CXXXFLAGS sollte geachtet werden.

Es ist im übrigen klar, dass sich im Laufe der Zeit für paludis benötigte Keywords, Supportpackages,... ändern können (und werden).

Ebenfalls die Konfiguration von Paludis selbst.

Der geneigte Leser und Anwender sollte dann allerdings in der Lage sein, die notwendigen Änderungen selbst durchzuführen...

HTH,

ruth

----------

