diff options
author | Eric Thibodeau <kyron@neuralbs.com> | 2008-07-05 01:31:18 -0400 |
---|---|---|
committer | Eric Thibodeau <kyron@neuralbs.com> | 2008-07-05 01:31:18 -0400 |
commit | 5d03f9e07f034bf4eee086573b54b8ea24b59e4e (patch) | |
tree | f9a74b4011f51e585acf45b1f2798367533e7e60 | |
parent | Added quick NFSroot HOWTO (diff) | |
download | clustering-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.spec | 6 | ||||
-rwxr-xr-x | catalyst/nfsroot/2008.0/overlay/boot/stateless.sh | 113 | ||||
-rw-r--r-- | catalyst/nfsroot/2008.0/scripts/nfsroot_setup.sh | 12 | ||||
-rw-r--r-- | catalyst/nfsroot/2008.0/specs/amd64/nfsroot_stage4.spec | 7 | ||||
-rw-r--r-- | overlay/sci-chemistry/gromacs/Manifest | 2 | ||||
-rw-r--r-- | overlay/sci-chemistry/gromacs/gromacs-3.3.3.ebuild | 213 | ||||
-rw-r--r-- | overlay/sys-cluster/beowulf-head/Manifest | 4 | ||||
-rw-r--r-- | profiles/hpc-clustering/package.keywords/baselayout2 | 2 | ||||
-rw-r--r-- | profiles/hpc-clustering/package.keywords/gromacs | 1 |
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 ** |