diff --git a/doc/binary_c2.lyx b/doc/binary_c2.lyx index 48df5ed74d66cdad7d260626cf8fcd4a57115f52..c80156d7b440f117273316396c777dfef84af96c 100644 --- a/doc/binary_c2.lyx +++ b/doc/binary_c2.lyx @@ -1160,6 +1160,74 @@ noprefix "false" . \end_layout +\begin_layout Subsection +Ubuntu 20.10 quick start +\end_layout + +\begin_layout Standard +If you are running the latest +\begin_inset Flex OS +status open + +\begin_layout Plain Layout +Ubuntu +\end_layout + +\end_inset + +, 20.10 at the time of writing, the +\begin_inset Flex File +status open + +\begin_layout Plain Layout +ubuntu_install.sh +\end_layout + +\end_inset + + script, in +\begin_inset Formula $\binaryc$ +\end_inset + +'s root directory, will do the installation for you. + Run the following to install even without a +\begin_inset Flex Software +status open + +\begin_layout Plain Layout +git +\end_layout + +\end_inset + + account +\end_layout + +\begin_layout Standard +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +wget http://personal.ph.surrey.ac.uk/~ri0005/ubuntu_install.sh +\end_layout + +\begin_layout Plain Layout + +chmod +x ubuntu_install.sh +\end_layout + +\begin_layout Plain Layout + +./ubuntu_install.sh +\end_layout + +\end_inset + +You will need root access to update and install system packages. +\end_layout + \begin_layout Subsection Download and build \begin_inset Formula $\binaryc$ @@ -1578,24 +1646,6 @@ status open \begin_layout Plain Layout -export PREFIX=$HOME -\end_layout - -\begin_layout Plain Layout - -export CFLAGS= -\begin_inset Quotes erd -\end_inset - --O3 -mtune=generic -\begin_inset Quotes erd -\end_inset - - -\end_layout - -\begin_layout Plain Layout - mkdir $HOME/lib $HOME/git \end_layout @@ -1611,22 +1661,17 @@ git clone gitlab@gitlab.eps.surrey.ac.uk:ri0005/librinterpolate.git \begin_layout Plain Layout -cd $HOME/git/librinterpolate/src +cd $HOME/git/librinterpolate \end_layout \begin_layout Plain Layout -make +meson --prefix=$HOME --buildtype=release builddir \end_layout \begin_layout Plain Layout -make install -\end_layout - -\begin_layout Plain Layout - -unset CFLAGS +ninja -C builddir install \end_layout \end_inset @@ -1710,24 +1755,6 @@ status open \begin_layout Plain Layout -export PREFIX=$HOME -\end_layout - -\begin_layout Plain Layout - -export CFLAGS= -\begin_inset Quotes erd -\end_inset - --O3 -mtune=generic -\begin_inset Quotes erd -\end_inset - - -\end_layout - -\begin_layout Plain Layout - mkdir $HOME/lib $HOME/git \end_layout @@ -1743,22 +1770,17 @@ git clone gitlab@gitlab.eps.surrey.ac.uk:ri0005/libmemoize.git \begin_layout Plain Layout -cd $HOME/git/libmemoize/src -\end_layout - -\begin_layout Plain Layout - -make +cd $HOME/git/libmemoize \end_layout \begin_layout Plain Layout -make install +meson --prefix=$HOME --buildtype=release builddir \end_layout \begin_layout Plain Layout -unset CFLAGS +ninja -C builddir install \end_layout \end_inset @@ -1804,20 +1826,7 @@ status open \begin_layout Plain Layout -export CFLAGS= -\begin_inset Quotes erd -\end_inset - --O3 -mtune=generic -\begin_inset Quotes erd -\end_inset - - -\end_layout - -\begin_layout Plain Layout - -mkdir $HOME/git +mkdir $HOME/lib $HOME/git \end_layout \begin_layout Plain Layout @@ -1837,17 +1846,12 @@ cd $HOME/git/librchash \begin_layout Plain Layout -meson builddir --prefix=$HOME --buildtype release +meson builddir --prefix=$HOME --buildtype=release \end_layout \begin_layout Plain Layout -cd builddir -\end_layout - -\begin_layout Plain Layout - -ninja install +ninja -C builddir install \end_layout \end_inset @@ -1983,17 +1987,12 @@ cd $BINARY_C \begin_layout Plain Layout -meson builddir --buildtype release -\end_layout - -\begin_layout Plain Layout - -cd builddir +meson builddir --buildtype=release \end_layout \begin_layout Plain Layout -ninja binary_c_install +ninja -C builddir binary_c_install \end_layout \begin_layout Plain Layout diff --git a/src/perl/modules_targz/Binning-0.03.tar.gz b/src/perl/modules_targz/Binning-0.03.tar.gz index cfd7ee62d1a0e6c4a196a060d8931544306eeb3b..f1651bce2b184e47aa933a329a424c6a99d35a09 100644 Binary files a/src/perl/modules_targz/Binning-0.03.tar.gz and b/src/perl/modules_targz/Binning-0.03.tar.gz differ diff --git a/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz b/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz index 18c5a249d395f831f514a6f33020a8edebce51c1..b5f0b0af9efcfe48fd04bfb28aa9c434fba4dc4f 100644 Binary files a/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz and b/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz differ diff --git a/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz b/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz index abb5033161439ec09764e4a9f8d1da98539f6cf7..2f4b339b77e6462a9eaa14129f510be98268b740 100644 Binary files a/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz and b/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz differ diff --git a/src/perl/modules_targz/Histogram-0.01.tar.gz b/src/perl/modules_targz/Histogram-0.01.tar.gz index db37d1ee2fbc1533aab8a68ffaa956dfd4af6955..316bce9d5ac2ab00cc663fdb103faf1efe2acd8b 100644 Binary files a/src/perl/modules_targz/Histogram-0.01.tar.gz and b/src/perl/modules_targz/Histogram-0.01.tar.gz differ diff --git a/src/perl/modules_targz/IMF-0.05.tar.gz b/src/perl/modules_targz/IMF-0.05.tar.gz index 39504b73174598040d1d5354e760f7928b2e7925..0c2d72ad48f75fbc6a60102421b119c4bcdb5eee 100644 Binary files a/src/perl/modules_targz/IMF-0.05.tar.gz and b/src/perl/modules_targz/IMF-0.05.tar.gz differ diff --git a/src/perl/modules_targz/Maths_Double-0.01.tar.gz b/src/perl/modules_targz/Maths_Double-0.01.tar.gz index 097724ccb63a7d5091e23f4c4357bc82958ee4db..95851d56a29a43d614c3e35b9911da8227e8fe9c 100644 Binary files a/src/perl/modules_targz/Maths_Double-0.01.tar.gz and b/src/perl/modules_targz/Maths_Double-0.01.tar.gz differ diff --git a/src/perl/modules_targz/binary_grid-v2.1.7.tar.gz b/src/perl/modules_targz/binary_grid-v2.1.7.tar.gz index 87d81932fc5cc3f1ceb9e1eb8ddee41ec9d07ab5..314dedf2edc1b1b74550e89de899e30e434a475b 100644 Binary files a/src/perl/modules_targz/binary_grid-v2.1.7.tar.gz and b/src/perl/modules_targz/binary_grid-v2.1.7.tar.gz differ diff --git a/src/perl/modules_targz/binary_stars-0.05.tar.gz b/src/perl/modules_targz/binary_stars-0.05.tar.gz index 47bc443bba3a499625b8cdad80a31ff9e5e8cda8..cdc1cb96a526001be784ba3a235f43368a2e81f3 100644 Binary files a/src/perl/modules_targz/binary_stars-0.05.tar.gz and b/src/perl/modules_targz/binary_stars-0.05.tar.gz differ diff --git a/src/perl/modules_targz/cosmology-0.01.tar.gz b/src/perl/modules_targz/cosmology-0.01.tar.gz index 0702e6d5b18ad2e512d3422c0ad9a58199fd3c42..b9b69634e9802bc8ac7fe11f564cf0840aab3fea 100644 Binary files a/src/perl/modules_targz/cosmology-0.01.tar.gz and b/src/perl/modules_targz/cosmology-0.01.tar.gz differ diff --git a/src/perl/modules_targz/distribution_functions-0.06.tar.gz b/src/perl/modules_targz/distribution_functions-0.06.tar.gz index c40fb18944fcbf39bdc32f8232311d58ffef49ba..bc4746f381822d4367836deefe60396553db63db 100644 Binary files a/src/perl/modules_targz/distribution_functions-0.06.tar.gz and b/src/perl/modules_targz/distribution_functions-0.06.tar.gz differ diff --git a/src/perl/modules_targz/install_all.pl b/src/perl/modules_targz/install_all.pl index 251f4cde06e281133954065776f770b837ca57e4..a25ab4fe9440fb209a16f8615351d2feceac9d4d 100755 --- a/src/perl/modules_targz/install_all.pl +++ b/src/perl/modules_targz/install_all.pl @@ -6,72 +6,35 @@ use strict; # # Assumes you have cpanminus (cpanm) installed. # -# You can override the cpanm comment with the CPANM environment -# variable. -# -my $cpanm = $ENV{CPANM} // 'cpanm'; - -print "Install all required perl modules using cpanm (to default location)\n"; - -# make list of modules, in order -my @mods; - -# hard wired fix for an old mistake -@mods = (`ls Hash-RobMerge*`); -chomp @mods; - -# dependencies file -if(-f 'deps') -{ - open(my $deps,'<','deps') || - die("cannot open deps file even though it exists\n"); - while(my $l = <$deps>) - { - chomp $l; - if($l=~m!.*\/(\S+)\.pm$/!) - { - my $short = $1; # short module name - my $r = `ls $short*.tar.gz 2>\&1`; - if($r =~ /^$short/) - { - chomp $r; - push(@mods,$r); - } - } - elsif($l=~/tar.gz$/) - { - push(@mods,$l) if(-f $l); - } - } - close $deps; -} - -push (@mods, `ls *.tar.gz`); -chomp @mods; -@mods = uniq(@mods); - -my $fail; -foreach my $tgz (@mods) +$|=1; + +my $logfile = './cpanm.log'; +foreach my $file +(qw/ +rob_misc-0.17.tar.gz +binary_stars-0.05.tar.gz +cosmology-0.01.tar.gz +Binning-0.03.tar.gz +rinterpolate-1.5.tar.gz +Data-Serializer-RobJSON-0.05.tar.gz +Hash-RobMerge-0.14.tar.gz +Histogram-0.01.tar.gz +IMF-0.05.tar.gz +Maths_Double-0.01.tar.gz +RobInterpolation-0.04.tar.gz +robqueue-0.05.tar.gz +distribution_functions-0.06.tar.gz +spacing_functions-0.02.tar.gz +binary_grid-v2.1.7.tar.gz/) { - my $d=($tgz=~/(.*)\.tar\.gz/)[0]; - - print "Install $tgz using cpanm\n"; - my $out = `$cpanm --installdeps ./$tgz 2>\&1`.`$cpanm --force --notest ./$tgz 2>\&1`; - - if($out =~ /fail/) + print "Installing $file ... "; + my $cmd = "cpanm --notest -v $file 2>\&1 > $logfile"; + `$cmd`; + my $r = $?; + if($r != 0) { - $fail .= "Failure detected when installing $tgz\n"; + print "\n$cmd returned $r : this is an error, please check $logfile\n"; + exit; } -} - - -if($fail) -{ - print "\n\n",$fail,"\n\n This may be a dependency problem: try running this script a few times, this may cure the problem.\n\n"; -} - -sub uniq -{ - my %seen; - return grep { !$seen{$_}++ } @_; + print "done\n"; } diff --git a/src/perl/modules_targz/rinterpolate-1.5.tar.gz b/src/perl/modules_targz/rinterpolate-1.5.tar.gz index 50a1179c82c195de701622ef72ee4bd17636966c..cf390ac5c303c6aea018761cd7e13a6f2e62c13e 100644 Binary files a/src/perl/modules_targz/rinterpolate-1.5.tar.gz and b/src/perl/modules_targz/rinterpolate-1.5.tar.gz differ diff --git a/src/perl/modules_targz/rob_misc-0.17.tar.gz b/src/perl/modules_targz/rob_misc-0.17.tar.gz index 05caf8bff21c98e0d6d66bcf4bab00b33662f280..7fa8831b5ac2123662d9ef446c9f57d8e47d5bf4 100644 Binary files a/src/perl/modules_targz/rob_misc-0.17.tar.gz and b/src/perl/modules_targz/rob_misc-0.17.tar.gz differ diff --git a/src/perl/modules_targz/robqueue-0.05.tar.gz b/src/perl/modules_targz/robqueue-0.05.tar.gz index c38c0fd1df536ae1a3d1a6ecae7c0cab6a9f1cb0..0a68162d73e1bf5a0ad5ab31c74b9fcf76526cdc 100644 Binary files a/src/perl/modules_targz/robqueue-0.05.tar.gz and b/src/perl/modules_targz/robqueue-0.05.tar.gz differ diff --git a/src/perl/modules_targz/spacing_functions-0.02.tar.gz b/src/perl/modules_targz/spacing_functions-0.02.tar.gz index cb1a0d941865328212352830f44284c64776c61c..1727f72db8c69137788f20c205a169732b5b9a1b 100644 Binary files a/src/perl/modules_targz/spacing_functions-0.02.tar.gz and b/src/perl/modules_targz/spacing_functions-0.02.tar.gz differ diff --git a/ubuntu_install.sh b/ubuntu_install.sh new file mode 100644 index 0000000000000000000000000000000000000000..d6c6cf8bca6d22f17d607010fa24ab194c96b8c5 --- /dev/null +++ b/ubuntu_install.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +############################################################ +# +# script to install binary_c +# +# tested on Ubuntu 20.10 +# +# Note: this will ask you to choose python3.9 +# as your default python. You do NOT have to +# do this, but some software is only tested +# on python3.9. +# +# We default to using gcc-10 for the compilation. +# +############################################################ + + + +# update and install a KDE desktop :) +#sudo apt-get install synaptic kubuntu-desktop +#balooctl disable + +# update system +sudo apt-get update +sudo apt-get upgrade + +# install required packages +sudo apt-get install bash zip gcc-10 libgcc-10-dev gdb valgrind gawk python3.9 pipenv kcachegrind meson ninja-build emacs perl libgsl-dev global libbsd-dev binutils-dev libiberty-dev libjemalloc-dev zlib1g-dev unzip wget curl +sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1 +sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2 +sudo update-alternatives --config python # >>> choose python3.9 <<< +pip install --upgrade meson +pip install --upgrade ninja + +# set up environment +export CC=gcc-10 +export BINARY_C=$HOME/progs/stars/binary_c + +if [ ! grep -q 'binary_c paths do not alter' ~/.bashrc ] +then + # set up bash paths : do this only once! + echo '# binary_c paths do not alter' >> ~/.bashrc + echo 'export LD_LIBRARY_PATH=$HOME/lib:$BINARY_C:$BINARY_C/src' >> ~/.bashrc # do this only once! + echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc # do this only once! +fi +export LD_LIBRARY_PATH=$HOME/lib:$BINARY_C:$BINARY_C/src +export PATH=$HOME/bin:$PATH + +# Install librinterpolate, libmemoize, librchash +cd $HOME +mkdir git +cd $HOME/git +wget https://gitlab.eps.surrey.ac.uk/ri0005/librinterpolate/-/archive/master/librinterpolate-master.zip -O librinterpolate-master.zip +unzip -o librinterpolate-master.zip +cd librinterpolate-master/ +meson --prefix=$HOME --buildtype=release builddir +ninja -C builddir install +cd .. + +wget https://gitlab.eps.surrey.ac.uk/ri0005/libmemoize/-/archive/master/libmemoize-master.zip -O libmemoize-master.zip +unzip -o libmemoize-master.zip +cd libmemoize-master/ +meson --prefix=$HOME --buildtype=release builddir +ninja -C builddir install +cd .. + +wget https://gitlab.eps.surrey.ac.uk/ri0005/librchash/-/archive/master/librchash-master.zip -O librchash-master.zip +unzip -o librchash-master.zip +cd librchash-master/ +meson --prefix=$HOME --buildtype=release builddir +ninja -C builddir install +cd .. + +# download and install binary_c +mkdir -p $BINARY_C +cd $BINARY_C/.. +wget http://personal.ph.surrey.ac.uk/~ri0005/binary_c-master.zip -O binary_c-master.zip +unzip -o binary_c-master.zip +rmdir binary_c +mv binary_c-master binary_c +cd binary_c +meson -Dbuildtype=release -Dvalgrind=true builddir +ninja -C builddir binary_c_install +./tbse + + +# install perlbrew and binary_grid +cd $HOME +\curl -L https://install.perlbrew.pl | bash + +if [ ! grep -q 'perlbrew paths do not alter' ~/.bashrc ] +then + echo "# perlbrew paths do not alter" >> ~/.bashrc + echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc # only do this once! +fi +source ~/perl5/perlbrew/etc/bashrc + + +export NTHREADS=`cat /proc/cpuinfo |grep cpu\ famil|wc -l` +export LATEST_PERL=`perlbrew available | grep "^[[:space:]]\+perl" | head -1` +perlbrew -v install $LATEST_PERL --thread --multi --64bitall --notest -Dusethreads -Duselargefiles -Dcccdlflags=-fPIC -Dpager=/usr/bin/sensible-pager -Doptimize="-O3 -mtune=generic" -Duseshrplib -j $NTHREADS +perlbrew switch $LATEST_PERL +perlbrew install-cpanm +cd $BINARY_C/src/perl/modules_targz +./install_all.pl + +# run a test population +cd $BINARY_C +LD_PRELOAD=./src/libbinary_c.so ./src/perl/scripts2/template.pl