<?xml version="1.0"?>
<package name="filesystem-hierarchy">
	<description>Filesystem Hierarchy</description>
	<releases>
		<!-- the stage1/stage2 must remain as they guarantuee that the init section of tag-stage{1,2} gets executed -->
		<release version="20210626" revision="1" tag="stage1">
			<settings>
				<binary>no</binary>
			</settings>
			<build>
				<script>
					<cmd>mkdir -p /stage1/{bin,etc,lib,src,var}</cmd>
					<cmd>[ -e /stage1/sbin ] || ln -Tsvf bin /stage1/sbin</cmd>
					<text dest="/stage1/lib/config.site"><![CDATA[
test "$prefix" = NONE && prefix=/stage1
test "$sbindir" = '${exec_prefix}/sbin' && sbindir='${exec_prefix}/bin'
test "$libexecdir" = '${exec_prefix}/libexec' && libexecdir='${exec_prefix}/lib'
test "$sharedstatedir" = '${prefix}/com' && sharedstatedir='${prefix}/var'
test "$runstatedir" = '${localstatedir}/run' && runstatedir='/run'
true
]]></text>
				</script>
			</build>
		</release>
		<release version="20210626" revision="1" tag="stage2">
			<settings>
				<binary>no</binary>
			</settings>
			<build>
				<script>
					<cmd>mkdir -p /stage2/{bin,etc,lib,src,var}</cmd>
					<cmd>[ -e /stage2/sbin ] || ln -Tsvf bin /stage2/sbin</cmd>
					<text dest="/stage2/lib/config.site"><![CDATA[
test "$prefix" = NONE && prefix=/stage2
test "$sbindir" = '${exec_prefix}/sbin' && sbindir='${exec_prefix}/bin'
test "$libexecdir" = '${exec_prefix}/libexec' && libexecdir='${exec_prefix}/lib'
test "$sharedstatedir" = '${prefix}/com' && sharedstatedir='${prefix}/var'
test "$runstatedir" = '${localstatedir}/run' && runstatedir='/run'
true
]]></text>
				</script>
			</build>
		</release>
		<release version="20250810" revision="1">
			<settings>
				<variable name="PROTOCOLSVERSION">20100326</variable>
				<variable name="SERVICESVERSION">20100812</variable>
			</settings>
			<deps>
				<dep name="shadow" tag="stage2"/>
			</deps>
			<preinst>
				<!-- move /bin /sbin /lib to /usr -->
				<cmd><![CDATA[for dir in bin sbin lib; do
	[ -L /$dir ] && continue
	[ -d /$dir ] || continue
	[ -d /usr/$dir ] || mkdir -p /usr/$dir
	cp -axTl --backup --suffix=.usrmove~ /$dir /usr/$dir
	find /usr/$dir -type l -name '*.usrmove~' -delete || :
	find /usr/$dir -name '*.usrmove~' -type f -exec bash -c 'p="{}";o=${p%%%%.usrmove~}; [ -L "$o" ] && mv -f "$p" "$o"' ';' || :
	rm -rf /$dir.usrmove-old || :
	mv /$dir /$dir.usrmove-old
	sln usr/$dir /$dir
	rm -rf /$dir.usrmove-old || :
done]]></cmd>

				<!-- move /usr/sbin to /usr/bin -->
				<cmd><![CDATA[if [ -d /usr/sbin ] && [ ! -L /usr/sbin ]; then
	[ -d /usr/bin ] || mkdir -p /usr/bin
	cp -axTl --backup --suffix=.usrmove~ /usr/sbin /usr/bin
	find /usr/bin -type l -name '*.usrmove~' -delete || :
	find /usr/bin -name '*.usrmove~' -type f -exec bash -c 'p="{}";o=${p%%%%.usrmove~}; [ -L "$o" ] && mv -f "$p" "$o"' ';' || :
	rm -rf /usr/sbin.usrmove-old || :
	mv /usr/sbin /usr/sbin.usrmove-old
	sln bin /usr/sbin
	rm -rf /usr/sbin.usrmove-old || :
	ln -Tsvf usr/bin /sbin
fi]]></cmd>

				<cmd>mkdir -p /etc</cmd>
				<cmd>touch /etc/{passwd,group}</cmd>
				<cmd>groupadd -f -g 0 root</cmd>
				<cmd check="no">useradd -u 0 -g root -d /root -c root -s /bin/bash root</cmd>
				<cmd>groupadd -f -g 1 bin</cmd>
				<cmd check="no">useradd -u 1 -g bin -d /bin -c bin -s /bin/sh bin</cmd>
				<cmd>groupadd -f -g 2 daemon</cmd>
				<cmd check="no">useradd -u 2 -g daemon -d /usr/sbin -c daemon -s /bin/sh daemon</cmd>
				<cmd>groupadd -f -g 35 lp</cmd>
				<cmd check="no">useradd -u 35 -g lp -c lp -s /bin/sh lp</cmd>
				<cmd>groupadd -f -g 3 tty</cmd>
				<cmd>groupadd -f -g 4 mail</cmd>
				<cmd>groupadd -f -g 5 uucp</cmd>
				<cmd>groupadd -f -g 6 audio</cmd>
				<cmd>groupadd -f -g 17 disk</cmd>
				<cmd>groupadd -f -g 23 network</cmd>
				<cmd>groupadd -f -g 25 cdrom</cmd>
				<cmd>groupadd -f -g 28 usb</cmd>
				<cmd>groupadd -f -g 18 wheel</cmd>
				<cmd>groupadd -f -g 22 video</cmd>
				<cmd>groupadd -f -g 41 lock</cmd>
				<cmd>groupadd -f -g 44 power</cmd>
				<cmd>groupadd -f -g 48 input</cmd>
				<cmd>groupadd -f -g 59 render</cmd>
				<cmd>groupadd -f -g 100 users</cmd>

				<!-- migration from nogroup to nobody -->
				<cmd>if grep -q ^nogroup:x:65534: /etc/group ; then
	groupdel -f nogroup
	groupdel -f nobody || true
fi</cmd>

				<cmd>groupadd -f -g 65534 nobody</cmd>
				<cmd check="no">useradd -u 65534 -g nobody -c nobody -s /bin/false nobody</cmd>

				<cmd>touch /etc/ld.so.conf</cmd>
				<cmd>sed -e '/^\/lib$/d' -e '/^\/usr\/lib$/d' -e '/^\/usr\/local\/lib$/d' /etc/ld.so.conf &gt; /etc/ld.so.conf.tmp</cmd>
				<cmd>echo "/usr/local/lib" &gt; /etc/ld.so.conf</cmd>
				<cmd>cat /etc/ld.so.conf.tmp &gt;&gt; /etc/ld.so.conf</cmd>
				<cmd>rm -f /etc/ld.so.conf.tmp</cmd>
			</preinst>
			<build>
				<script>
					<cmd>mkdir -p $DOCDIR</cmd>
					<install name="protocols-20100326" dest="/etc/protocols"/>
					<install name="services-20100812" dest="/etc/services"/>
					<cmd>touch $DOCDIR/motd.paldo</cmd>
					<cmd check="no">cat &gt; $DOCDIR/skel-bash_profile-paldo &lt;&lt; "EOF"
if [ -f "$HOME/.bashrc" ] ; then
. $HOME/.bashrc
fi
EOF</cmd>
					<cmd check="no">cat &gt; $DOCDIR/skel-bashrc-paldo &lt;&lt; "EOF"
if [ -f "/etc/bashrc" ] ; then
. /etc/bashrc
fi
EOF</cmd>

					<cmd>mkdir -p /usr/lib</cmd>
					<text dest="/usr/lib/os-release"><![CDATA[
NAME=paldo
ID=paldo
PRETTY_NAME=paldo
]]></text>
					<text dest="/usr/lib/config.site"><![CDATA[
test "$prefix" = NONE && prefix=/usr
test "$sbindir" = '${exec_prefix}/sbin' && sbindir='${exec_prefix}/bin'
test "$libexecdir" = '${exec_prefix}/libexec' && libexecdir='${exec_prefix}/lib'
if test "$prefix" = /usr
then
	test "$sysconfdir" = '${prefix}/etc' && sysconfdir=/etc
	test "$sharedstatedir" = '${prefix}/com' && sharedstatedir=/var
	test "$localstatedir" = '${prefix}/var' && localstatedir=/var
	test "$runstatedir" = '${localstatedir}/run' && runstatedir='/run'
fi
test "$infodir" = '${prefix}/info' && infodir='${prefix}/share/info'
test "$mandir" = '${prefix}/man' && mandir='${prefix}/share/man'

if test "${with_xml_catalog+set}" != set; then
	with_xml_catalog='/usr/share/xml/catalog'
fi

true
]]></text>
				</script>
			</build>
			<postinst>
				<cmd>mkdir -p /{boot,dev,etc,home,mnt,proc,root,run,sys,tmp,usr,var}</cmd>
				<cmd>[ -e /bin ] || ln -Tsvf usr/bin /bin</cmd>
				<cmd>[ -e /sbin ] || ln -Tsvf usr/bin /sbin</cmd>
				<cmd>[ -e /lib ] || ln -Tsvf usr/lib /lib</cmd>
				<cmd>mkdir -p /etc/skel</cmd>
				<cmd>chmod 0750 /root</cmd>
				<cmd>mkdir -p /usr/{bin,include,lib,local,share}</cmd>
				<cmd>[ -e /usr/sbin ] || ln -Tsvf bin /usr/sbin</cmd>
				<cmd>mkdir -p /usr/local/{bin,include,lib,share}</cmd>
				<cmd>[ -e /usr/local/sbin ] || ln -Tsvf bin /usr/local/sbin</cmd>
				<cmd>mkdir -p /usr/{,local/}share/{man,doc,info}</cmd>
				<cmd>mkdir -p /usr/{,local/}share/man/man{1,2,3,4,5,6,7,8}</cmd>
				<cmd>mkdir -p /var/{cache,lib,local,log,spool,tmp,mail}</cmd>
				<cmd>[ ! -e /var/lock ] || [ -L /var/lock ] || grep -q /var/lock /proc/mounts || rm -rf /var/lock</cmd>
				<cmd>[ -e /var/lock ] || ln -Tsvf /run/lock /var/lock</cmd>
				<cmd>chmod 1777 /tmp /var/tmp</cmd>

				<cmd>ln -svf bash /bin/sh</cmd>
				<cmd>[ ! -e /var/run ] || [ -L /var/run ] || grep -q /var/run /proc/mounts || rm -rf /var/run</cmd>
				<cmd>[ -e /var/run ] || ln -Tsvf /run /var/run</cmd>
				<cmd>mkdir -p /etc/profile.d</cmd>

				<cmd>[ -e /etc/hosts ] || echo "127.0.0.1 paldo.localdomain paldo localhost" &gt; /etc/hosts</cmd>
				<cmd>grep -q ::1 /etc/hosts || echo "::1 localhost" &gt;&gt; /etc/hosts</cmd>
				<cmd>[ -e /etc/hostname ] || echo "paldo" &gt; /etc/hostname</cmd>
				<cmd>[ -e /etc/domainname ] || echo "localdomain" &gt; /etc/domainname</cmd>
				<cmd>[ -e /etc/networks ] || echo "loopback 127.0.0.1" &gt; /etc/networks</cmd>
				<cmd>[ -e /etc/resolv.conf ] || echo "nameserver 127.0.0.1" &gt; /etc/resolv.conf</cmd>
				<cmd>chmod 1777 /tmp /var/tmp</cmd>
				<cmd>touch /var/log/{btmp,lastlog,wtmp}</cmd>
				<cmd>chmod 644 /var/log/{btmp,lastlog,wtmp}</cmd>
				<cmd>ln -svf /proc/self/mounts /etc/mtab</cmd>
				<cmd>ln -svf /usr/lib/os-release /etc/os-release</cmd>
				<cmd>[ -e /bin/bash ] || ln -sf /stage2/bin/bash /bin</cmd>
				<cmd>[ -e /bin/pwd ] || ln -sf /stage2/bin/pwd /bin</cmd>
				<cmd>[ -e /bin/cat ] || ln -sf /stage2/bin/cat /bin</cmd>
				<cmd>[ -e /bin/m4 ] || ln -sf /stage2/bin/m4 /bin</cmd>
				<cmd>[ -e /usr/bin/perl ] || ln -sf /stage2/bin/perl /usr/bin</cmd>
				<cmd>[ -e /usr/lib/libupkg-watch.so ] || ln -sf /stage2/lib/libupkg-watch.so /usr/lib</cmd>
			</postinst>
			<config>
				<configfile default="$DOCDIR/motd.paldo" dest="/etc/motd"/>
				<configfile default="$DOCDIR/skel-bash_profile-paldo" dest="/etc/skel/.bash_profile"/>
				<configfile default="$DOCDIR/skel-bashrc-paldo" dest="/etc/skel/.bashrc"/>
				<configfile default="$DOCDIR/skel-bash_profile-paldo" dest="/root/.bash_profile"/>
				<configfile default="$DOCDIR/skel-bashrc-paldo" dest="/root/.bashrc"/>
				<configfile name="nsswitch.conf-20250810" default="$DOCDIR/nsswitch.conf.paldo" dest="/etc/nsswitch.conf"/>
				<configfile name="profile-20200825" default="$DOCDIR/profile-paldo" dest="/etc/profile"/>
			</config>
		</release>
	</releases>
</package>
