aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Thibodeau <kyron@neuralbs.com>2008-07-05 01:31:18 -0400
committerEric Thibodeau <kyron@neuralbs.com>2008-07-05 01:31:18 -0400
commit5d03f9e07f034bf4eee086573b54b8ea24b59e4e (patch)
treef9a74b4011f51e585acf45b1f2798367533e7e60
parentAdded quick NFSroot HOWTO (diff)
downloadclustering-livecd-5d03f9e07f034bf4eee086573b54b8ea24b59e4e.tar.gz
clustering-livecd-5d03f9e07f034bf4eee086573b54b8ea24b59e4e.tar.bz2
clustering-livecd-5d03f9e07f034bf4eee086573b54b8ea24b59e4e.zip
stateless.sh reWORK (nfs nodes now boot)
Imported sci-chemistry/gromacs from Bug 193532
-rw-r--r--catalyst/livecd/2008.0/specs/amd64/livecd-stage1.spec6
-rwxr-xr-xcatalyst/nfsroot/2008.0/overlay/boot/stateless.sh113
-rw-r--r--catalyst/nfsroot/2008.0/scripts/nfsroot_setup.sh12
-rw-r--r--catalyst/nfsroot/2008.0/specs/amd64/nfsroot_stage4.spec7
-rw-r--r--overlay/sci-chemistry/gromacs/Manifest2
-rw-r--r--overlay/sci-chemistry/gromacs/gromacs-3.3.3.ebuild213
-rw-r--r--overlay/sys-cluster/beowulf-head/Manifest4
-rw-r--r--profiles/hpc-clustering/package.keywords/baselayout22
-rw-r--r--profiles/hpc-clustering/package.keywords/gromacs1
9 files changed, 316 insertions, 44 deletions
diff --git a/catalyst/livecd/2008.0/specs/amd64/livecd-stage1.spec b/catalyst/livecd/2008.0/specs/amd64/livecd-stage1.spec
index 2241595..082e699 100644
--- a/catalyst/livecd/2008.0/specs/amd64/livecd-stage1.spec
+++ b/catalyst/livecd/2008.0/specs/amd64/livecd-stage1.spec
@@ -9,7 +9,7 @@ source_subpath: default/stage3-amd64-desktop-2008.0
# Kyron:
portage_confdir: /var/git/clustering-livecd/profiles/hpc-clustering/
pkgcache_path: /var/tmp/catalyst/packages/amd64_desktop
-portage_overlay: /var/git/clustering-livecd/overlay/
+portage_overlay: /var/git/clustering-livecd/overlay/ /usr/local/portage/alexxy
### end
# Kyron: added
@@ -196,4 +196,6 @@ livecd/packages:
app-admin/eselect-cblas
app-admin/eselect-blas
app-admin/eselect-lapack
-
+# Added growmacs as per Alexey Shvetsov's request ;)
+# from: Bug 193532
+ sci-chemistry/gromacs
diff --git a/catalyst/nfsroot/2008.0/overlay/boot/stateless.sh b/catalyst/nfsroot/2008.0/overlay/boot/stateless.sh
index 0cd3ffd..ed18b92 100755
--- a/catalyst/nfsroot/2008.0/overlay/boot/stateless.sh
+++ b/catalyst/nfsroot/2008.0/overlay/boot/stateless.sh
@@ -7,20 +7,19 @@
MODPROBE=/sbin/modprobe
IFCONFIG=/sbin/ifconfig
-MYHOST=$(/sbin/dhcpcd -H; /bin/hostname) # By default, we'll use the DHCP assigned hostname
+#MYHOST=$(/sbin/dhcpcd -H; /bin/hostname) # By default, we'll use the DHCP assigned hostname
NODE_NAME="node"
ahostname(){
if [ -z ${MYHOST} ]; then
echo "DHCP didn't tell me my name. Generating my own hostname..."
- MYHOST="${NODE_NAME}`$IFCONFIG eth0 | awk '/inet addr/ {print $2}' | tr -t . ' ' | awk '{print $4}'`"
+ MYHOST="${NODE_NAME}${IP##*.}"
+ echo "I proclaim that I am $MYHOST !!"
else
echo DHCP told me my hostname is ${MYHOST}...
echo "Setting domainname to DHCP's settings"
- # Unfortunately, this doesn't work anymore so we have to chaet:
- #/sbin/dhcpcd -D
- #/bin/domainname cluster.local
+ /bin/domainname $DOMAIN
fi
echo "STATELESS: Setting Hostname to $MYHOST"
@@ -28,21 +27,23 @@ ahostname(){
/bin/hostname "$MYHOST"
}
-getparams() {
- local cmdline=$(dmesg | grep '^Kernel command line' | sed 's/^Kernel command line://g')
- for pp in $cmdline; do
- echo $pp | grep '^softlevel=' >/dev/null 2>&1
- if [ $? -eq 0 ]; then
- echo $pp | sed 's/softlevel=//g'
- return 0
- fi
- done
- echo ""
- return 1
-}
+#getparams() {
+# #local cmdline=$(dmesg | grep '^Kernel command line' | sed 's/^Kernel command line://g')
+# cmdline=$(cat /proc/cmdline)
+# for pp in $cmdline; do
+# echo $pp | grep '^softlevel=' >/dev/null 2>&1
+# if [ $? -eq 0 ]; then
+# echo $pp | sed 's/softlevel=//g'
+# return 0
+# fi
+# done
+# echo ""
+# return 1
+#}
isset() {
- for p in $(getparams | tr ',' ' '); do
+ #for p in $(getparams | tr ',' ' '); do
+ for p in $(get_param softlevel); do
if [ "$p" == "$1" ]; then
return 0
fi
@@ -51,20 +52,14 @@ isset() {
}
aunionfs() {
- isset unionfs
- if [ $? -eq 0 ]; then
- echo "STATELESS: Loading module unionfs ..."
-# $MODPROBE unionfs
- while [ "$1" != "" ]; do
- echo "STATELESS: Mounting tmpfs $1 ..."
- mount -n -t tmpfs -o defaults none /mnt/unionfs/$1
- echo "STATELESS: Mounting $1 unionfs ..."
- mount -n -t unionfs -o dirs=/mnt/unionfs/$1=rw:/$1=ro none /$1
- shift
- done
- else
- echo "STATELESS: Not using unionfs as requested ..."
- fi
+# $MODPROBE unionfs
+ while [ "$1" != "" ]; do
+ echo "STATELESS: Mounting tmpfs $1 ..."
+ mount -n -t tmpfs -o defaults none /mnt/unionfs/$1
+ echo "STATELESS: Mounting $1 unionfs ..."
+ mount -n -t unionfs -o dirs=/mnt/unionfs/$1=rw:/$1=ro none /$1
+ shift
+ done
}
# ahosts was added so that we could dynamically change the NFS server address
@@ -72,11 +67,59 @@ aunionfs() {
# when you want to split the load onto different NIC interfaces within a same
# logical network.
ahosts() {
- local SERV_IP=$(dmesg | egrep -oe 'rootserver=([0-9]+\.?){1,4}')
- echo "Setting rootserver to ${SERV_IP#*=} in /etc/hosts file..."
- echo "rootserver ${SERV_IP#*=}" >> /etc/hosts
+ echo "Setting rootserver to $ROOTSERV in /etc/hosts file..."
+ echo "rootserver $ROOTSERV" >> /etc/hosts
+ echo "Setting up fstab"
+ echo "$ROOTSERV:$ROOTPATH / nfs ro,defaults,hard,intr,actimeo=120,timeo=14,tcp 0 1" > /etc/fstab
+}
+
+# get_param: parses parameters in PARSELINE which could be, for example, the kernel's command line
+# (This implies PARSELINE=$(cat /proc/cmdline)
+# Example:
+# ip=dhcp nfsroot=192.168.1.2:/tftproot/nfsroot/x86_64/,hard,intr init=/boot/stateless.sh softlevel=unionfs
+# IN:
+# $1: parameter we want (ie: nfsroot)
+# $2: which token # we want, ie: the IP address of nfsroot it token 1
+get_param() {
+ PARAM=$2
+ for opt in $PARSELINE
+ do
+ case $opt in
+ ${1}=*) set $(echo $opt | sed -e's/[=:,]/ /g' )
+ if [[ -z $PARAM ]]; then
+ shift
+ echo $*
+ else
+ shift $PARAM
+ echo $1
+ fi
+ return 0
+ ;;
+ esac
+ done
+ echo "Parameter '$1' not found" >2
+ return 1
+}
+
+# Used to extract useful information for the rest of the configuration
+# It's a horrible hack that parses dmesg but, unfortunately, /proc/net/pnp
+# is insufficient even with /proc/cmdline
+# Here is an example output of dmesg (partial)
+#IP-Config: Complete:
+# device=eth0, addr=10.0.1.140, mask=255.255.255.0, gw=10.0.1.129,
+# host=thinkbig24, domain=cluster.local, nis-domain=(none),
+# bootserver=10.0.1.129, rootserver=10.0.1.129, rootpath=/tftproot/AthlonXP
+
+import_dhcp_info() {
+ PARSELINE=$(dmesg | grep -A3 'IP-Config: Complete:' | sed -e 's/[:,]/ /g' | tr -d '\n')
+ MYIP=$(get_param addr 1)
+ MYHOST=$(get_param host 1)
+ DOMAIN=$(get_param domain 1)
+ ROOTPATH=$(get_param rootpath 1)
+ ROOTSERV=$(get_param rootserver 1)
}
+import_dhcp_info
aunionfs etc var tmp
ahostname
ahosts
diff --git a/catalyst/nfsroot/2008.0/scripts/nfsroot_setup.sh b/catalyst/nfsroot/2008.0/scripts/nfsroot_setup.sh
index 4ac5cd4..164838c 100644
--- a/catalyst/nfsroot/2008.0/scripts/nfsroot_setup.sh
+++ b/catalyst/nfsroot/2008.0/scripts/nfsroot_setup.sh
@@ -10,6 +10,7 @@ kernel_links()
cd /boot
ln -s kernel-* vmlinuz
ln -s initramfs-* initramfs
+
}
unionfs_prep()
@@ -17,7 +18,7 @@ unionfs_prep()
echo "====================================="
echo "=adding unionfs required dirs========"
echo "====================================="
- for I in etc va tmp
+ for I in etc var tmp
do
mkdir -p /mnt/unionfs/$I
done
@@ -25,9 +26,14 @@ unionfs_prep()
set_runlevel()
{
- # maybe something to do here...can't remember...
- #sed -i -e's:l3:3:wait:/sbin/rc nfsmount::' etc/inittab
+ ln -s /etc/runlevels/default /etc/runlevels/unionfs
}
+
+run_depmod() {
+ depmod -a -b /usr/src/linux
+}
+
kernel_links
unionfs_prep
+run_depmod
diff --git a/catalyst/nfsroot/2008.0/specs/amd64/nfsroot_stage4.spec b/catalyst/nfsroot/2008.0/specs/amd64/nfsroot_stage4.spec
index ff60864..f28f70d 100644
--- a/catalyst/nfsroot/2008.0/specs/amd64/nfsroot_stage4.spec
+++ b/catalyst/nfsroot/2008.0/specs/amd64/nfsroot_stage4.spec
@@ -54,13 +54,13 @@ distcc_hosts:
# targets to minimize problems.
# example:
# portage_confdir: /etc/portage
-portage_confdir: /var/git/clustering-livecd/profiles/hpc-clustering/
+portage_confdir: /var/git/clustering-livecd/profiles/hpc-clustering/
# This option specifies the location to a portage overlay that you would like to
# have used when building this target.
# example:
# portage_overlay: /usr/local/portage
-portage_overlay: /var/git/clustering-livecd/overlay/
+portage_overlay: /var/git/clustering-livecd/overlay/
# This allows the optional directory containing the output packages for
# catalyst. Mainly used as a way for different spec files to access the same
@@ -174,6 +174,9 @@ stage4/rcadd:
# the runlevel off to remove the script from any runlevels detected. We do not
# use this on the official media, so it is left blank.
stage4/rcdel:
+ root
+ fsck
+ mtab
# This overlay is dropped onto the filesystem within the loop. This can be used
# for such things as updating configuration files or adding anything else you
diff --git a/overlay/sci-chemistry/gromacs/Manifest b/overlay/sci-chemistry/gromacs/Manifest
new file mode 100644
index 0000000..abdf9c1
--- /dev/null
+++ b/overlay/sci-chemistry/gromacs/Manifest
@@ -0,0 +1,2 @@
+DIST gromacs-3.3.3.tar.gz 8013789 RMD160 c7b495423eb07682e88bd7d5c61e0aa9156a17d1 SHA1 318802e39f3ca3e847261a3b96906266e32deba2 SHA256 b95becbe410b71fe9bc19b91dfeb98b940dbb2d66613c9e1de7f6d21fb7534fa
+EBUILD gromacs-3.3.3.ebuild 6083 RMD160 c4d9109897552655932a06c22fab2121e400433f SHA1 f933a478376aaca8b6dcf1d38616b8fed924d598 SHA256 52a227049f109e255e6b5819ac48fd90c8c7f2731c5bfd167f18c42f8d6c5691
diff --git a/overlay/sci-chemistry/gromacs/gromacs-3.3.3.ebuild b/overlay/sci-chemistry/gromacs/gromacs-3.3.3.ebuild
new file mode 100644
index 0000000..1197744
--- /dev/null
+++ b/overlay/sci-chemistry/gromacs/gromacs-3.3.3.ebuild
@@ -0,0 +1,213 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+LIBTOOLIZE="true"
+inherit autotools eutils flag-o-matic fortran multilib
+
+DESCRIPTION="The ultimate molecular dynamics simulation package"
+HOMEPAGE="http://www.gromacs.org/"
+SRC_URI="ftp://ftp.gromacs.org/pub/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ppc64 ~sparc ~x86"
+IUSE="3dnow X altivec blas double-precision gsl lapack mpi +single-precision sse sse2 static xml"
+
+# mopac7 qm/mm is broken until we can get files from
+# http://md.chem.rug.nl/~groenhof/qmmm.html
+# or somewhere else...
+
+DEPEND=">=sci-libs/fftw-3.0.1
+ app-shells/tcsh
+ X? ( x11-libs/libX11
+ x11-libs/libXt
+ x11-libs/libXp
+ x11-libs/libXext
+ x11-proto/xproto
+ x11-libs/openmotif )
+ blas? ( virtual/blas )
+ gsl? ( sci-libs/gsl )
+ lapack? ( virtual/lapack )
+ mpi? ( virtual/mpi )
+ xml? ( dev-libs/libxml2 )"
+
+FORTRAN="g77 gfortran ifc"
+
+src_unpack() {
+
+ unpack ${A}
+ cd "${S}"
+ # Fix typos in a couple of files.
+ sed -e "s:+0f:-f:" -i share/tutor/gmxdemo/demo \
+ || die "Failed to fixup demo script."
+
+ # Fix a sandbox violation that occurs when re-emerging with mpi.
+ sed "/libdir=\"\$(libdir)\"/ a\ temp_libdir=\"${D}usr/$( get_libdir )\" ; \\\\" \
+ -i src/tools/Makefile.am \
+ || die "sed tools/Makefile.am failed"
+
+ sed -e "s:\$\$libdir:\$temp_libdir:" \
+ -i src/tools/Makefile.am \
+ || die "sed tools/Makefile.am failed"
+
+ sed "/libdir=\"\$(libdir)\"/ a\ temp_libdir=\"${D}usr/$( get_libdir )\" ; \\\\" \
+ -i src/tools/Makefile.am \
+ || die "sed tools/Makefile.am failed"
+
+ sed -e "s:\$\$libdir:\$\$temp_libdir:" \
+ -i src/tools/Makefile.am \
+ || die "sed tools/Makefile.am failed"
+
+ # Rename disco manpage to fix bug #210083.
+ sed "s:disco.1:g_disco.1:" \
+ -i "${S}"/man/man1/Makefile.am \
+ || die "sed failed to rename disco"
+
+ mv "${S}"/man/man1/disco.1 "${S}"/man/man1/g_disco.1
+
+ eautoreconf
+
+ cd "${WORKDIR}"
+ mv "${P}" "${P}-single"
+ if ( use double-precision ) ; then
+ einfo "Moving sources for Multiprecision Build"
+ cp -prP "${P}-single" "${P}-double"
+ fi
+}
+
+src_compile() {
+
+ # static should work but something's broken.
+ # gcc spec file may be screwed up.
+ # Static linking should try -lgcc instead of -lgcc_s.
+ # For more info:
+ # http://lists.debian.org/debian-gcc/2002/debian-gcc-200201/msg00150.html
+
+ # if we don't set C[XX]FLAGS configure will set: -O3 -finline-functions
+ # -funroll-all-loops
+ # append-flags "-O3 -finline-functions -funroll-all-loops"
+ # use x86 && append-flags "-malign-double"
+
+ # We will compile single precision by default, and suffix double-precision with _d.
+ # Sparc is the only arch I can test on that needs to use fortran.
+ local myconf ;
+
+ case "${ARCH}" in
+
+ x86)
+ if ( use sse || use sse2 ) ; then
+ myconf="${myconf} --enable-ia32-sse"
+ fi
+ myconf="$myconf $(use_enable 3dnow ia32-3dnow)"
+
+ if ( ! use sse && ! use sse2 && ! use 3dnow ) ; then
+ if ! has_version "=sys-devel/gcc-3*" ; then
+ die "If you must run gromacs without sse (not recommended) gfortran will not work."
+ else
+ myconf="${myconf} --enable-fortran" && fortran_pkg_setup
+ fi
+ else
+ myconf="${myconf} --disable-fortran"
+ fi
+ ;;
+
+ amd64)
+ myconf="$myconf --enable-x86-64-sse --disable-fortran"
+ ;;
+
+ ppc*)
+ if use altivec ; then
+ myconf="${myconf} --enable-ppc-altivec --disable-fortran"
+ else
+ if ! has_version "=sys-devel/gcc-3*" ; then
+ die "If you must run gromacs without sse (not recommended) gfortran will not work."
+ else
+ myconf="${myconf} --enable-fortran" && fortran_pkg_setup
+ fi
+ fi
+ ;;
+
+ ia64)
+ myconf="$myconf --enable-ia64-asm --disable-fortran"
+ ;;
+
+ alpha)
+ if ! has_version "=sys-devel/gcc-3*" ; then
+ die "If you must run gromacs without sse (not recommended) gfortran will not work."
+ else
+ myconf="$myconf --enable-fortran" && fortran_pkg_setup
+ fi
+ ;;
+
+ sparc)
+ if ! has_version "=sys-devel/gcc-3*" ; then
+ die "If you must run gromacs without sse (not recommended) gfortran will not work."
+ else
+ myconf="${myconf} --enable-fortran" && fortran_pkg_setup
+ fi
+ ;;
+ esac
+
+ # if we need external blas
+ if use blas; then
+ export LIBS="${LIBS} -lblas"
+ myconf="${myconf} $(use_with blas external-blas)"
+ fi
+
+ # if we need external lapack
+ if use lapack; then
+ export LIBS="${LIBS} -llapack"
+ myconf="${myconf} $(use_with lapack external-lapack)"
+ fi
+
+ myconf="--datadir=/usr/share \
+ --bindir=/usr/bin \
+ --libdir=/usr/$(get_libdir) \
+ --with-fft=fftw3 \
+ $(use_with gsl) \
+ $(use_enable mpi) \
+ $(use_with X x) \
+ $(use_with xml) \
+ $(use_enable static all-static) \
+ ${myconf}"
+
+ if ( use double-precision && use single-precision ); then
+ einfo "Building Single Precison Gromacs"
+ cd "${WORKDIR}"/"${P}"-single
+ myconf="${myconf} --enable-float"
+ econf ${myconf} || die "Single Precision econf failed"
+ emake || die "Single Precision emake failed"
+
+ einfo "Building Double Precision Gromacs"
+ cd "${WORKDIR}"/"${P}"-double
+ myconf="${myconf} --enable-double --program-suffix=_d"
+ econf ${myconf} || die "Double Precision econf failed"
+ emake || die "Double Precision emake failed"
+ else
+ use single-precision && cd "${WORKDIR}"/"${P}"-single
+ use double-precision && cd "${WORKDIR}"/"${P}"-double
+ cd "${WORKDIR}"/"${P}"
+ myconf="${myconf} $(use_enable double-precision double) \
+ $(use_enable single-precision float) --program-suffix='' "
+ econf ${myconf} || die "configure failed"
+ emake || die "emake failed"
+ fi
+}
+
+src_install() {
+ if ( use single-precision ); then
+ einfo "Installing Single Precision"
+ cd "${WORKDIR}"/"${P}"-single
+ emake DESTDIR="${D}" install || die "Installing Single Precision failed"
+ fi
+
+ if ( use double-precision ) ; then
+ einfo "Installing Double Precision"
+ cd "${WORKDIR}"/"${P}"-double
+ emake DESTDIR="${D}" install || die "Installing Double Precision failed"
+ fi
+
+ dodoc AUTHORS INSTALL README
+ # Move html and leave examples and templates under /usr/share/gromacs.
+ mv "${D}"/usr/share/"${PN}"/html "${D}"/usr/share/doc/"${PF}"/
+}
diff --git a/overlay/sys-cluster/beowulf-head/Manifest b/overlay/sys-cluster/beowulf-head/Manifest
index 449637a..dc2f003 100644
--- a/overlay/sys-cluster/beowulf-head/Manifest
+++ b/overlay/sys-cluster/beowulf-head/Manifest
@@ -1,3 +1,3 @@
-AUX cluster.conf 1592 RMD160 58464c00571c6c84e7ed1d63686f0d02f88b1597 SHA1 1d35aaba87de3a40de6a5922777f0760453cbf75 SHA256 8065a6610621e233d966b5c45f154fcba1ca1c699f42c86af7ae9f5b16053d65
-EBUILD beowulf-head-0.1.ebuild 4120 RMD160 3d3fcbe754d847355b51b8a2d069ab360f5ef6a9 SHA1 ffcf9be5d4c3cb7333ec55be0323a0aa2789fcfb SHA256 cc174265ba8eb540bac2b476f3ce27466af325c8752bf12d6ae1113a7c6e01d5
+AUX cluster.conf 2401 RMD160 e5f37c56b03791f6a884bfad6b37ec17f27045cf SHA1 685c32c8deab47c326e7e05f41caa127e11de863 SHA256 e0142db68ecb9182161b9818d1a8cf944cf316ae694c095123c6d4f8a6f0ce10
+EBUILD beowulf-head-0.1.ebuild 4558 RMD160 c7f9a2e729524d7fb600ef1ae709cb8e56be5f86 SHA1 da07cdbaa572424a387f897fc0b0bf48d37dfc09 SHA256 9c45ca4868bd4ec12622020a49b1eedac03ffd289fb7ad71c06b0831a80a53ca
MISC ChangeLog 101 RMD160 d735719ccc09237e68e4e984eb5451000b06c382 SHA1 79098d1e8ae451f0430d363da6b717966ade6e78 SHA256 8dd010e2772026c4a6b86839842931b99c85c44a5e9f380864cc275b55587ac2
diff --git a/profiles/hpc-clustering/package.keywords/baselayout2 b/profiles/hpc-clustering/package.keywords/baselayout2
new file mode 100644
index 0000000..aa526a1
--- /dev/null
+++ b/profiles/hpc-clustering/package.keywords/baselayout2
@@ -0,0 +1,2 @@
+=sys-apps/baselayout-2.0.0 **
+=sys-apps/openrc-0.2.5 **
diff --git a/profiles/hpc-clustering/package.keywords/gromacs b/profiles/hpc-clustering/package.keywords/gromacs
new file mode 100644
index 0000000..0b00576
--- /dev/null
+++ b/profiles/hpc-clustering/package.keywords/gromacs
@@ -0,0 +1 @@
+=sci-chemistry/gromacs-3.3.3 **