Skip to content

Commit 06af4e0

Browse files
author
Damian Rouson
committed
Merge pull request #133 from sourceryinstitute/fix-issue-123-build-ftp-fails-on-linux
Fix issue #123 build ftp fails on linux
2 parents b2804af + 97c14df commit 06af4e0

File tree

2 files changed

+77
-28
lines changed

2 files changed

+77
-28
lines changed

install.sh

+30-20
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,6 @@ if [[ ! -x "$build_script" ]]; then
9292
echo "$this_script: $build_script script does not exist or the user lacks executable permission for it."
9393
echo "$this_script: Please run this_script in the top-level OpenCoarrays source directory or set the"
9494
echo "$this_script: OPENCOARRAYS_SRC_DIR environment variable to the top-level OpenCoarrays source path."
95-
echo "$this_script: If you have specified an installation directory that requires administrative privileges,"
96-
echo "$this_script: please prepend 'sudo' or 'sudo -E' to your invocation of the script [exit 20]."
9795
exit 20
9896
fi
9997

@@ -311,12 +309,13 @@ find_or_install()
311309
export FC=$package_install_path/bin/gfortran
312310
export CC=$package_install_path/bin/gcc
313311
export CXX=$package_install_path/bin/g++
312+
gfortran_lib_paths="$package_install_path/lib64/:$package_install_path/lib"
314313
if [[ -z "$LD_LIBRARY_PATH" ]]; then
315-
echo "$this_script: export LD_LIBRARY_PATH=$package_install_path/lib/"
316-
export LD_LIBRARY_PATH=$package_install_path/lib/
314+
echo "$this_script: export LD_LIBRARY_PATH=\"$gfortran_lib_paths\""
315+
export LD_LIBRARY_PATH="$gfortran_lib_paths"
317316
else
318-
echo "$this_script: export LD_LIBRARY_PATH=$package_install_path/lib/:$LD_LIBRARY_PATH"
319-
export LD_LIBRARY_PATH=$package_install_path/lib/:$LD_LIBRARY_PATH
317+
echo "$this_script: export LD_LIBRARY_PATH=\"$gfortran_lib_paths:$LD_LIBRARY_PATH\""
318+
export LD_LIBRARY_PATH="$gfortran_lib_paths:$LD_LIBRARY_PATH"
320319
fi
321320
# Remove $package from the dependency stack
322321
stack_pop dependency_pkg package_done
@@ -627,7 +626,7 @@ find_or_install()
627626

628627
# On OS X, CMake must be built with Apple LLVM g++, which XCode command-line tools puts in /usr/bin
629628
if [[ `uname` == "Darwin" && $package == "cmake" ]]; then
630-
if [[ -x "/usr/bin/gcc" ]]; then
629+
if [[ -x "/usr/bin/g++" ]]; then
631630
CXX=/usr/bin/g++
632631
else
633632
printf "$this_script: OS X detected. Please install XCode command-line tools \n"
@@ -675,10 +674,11 @@ find_or_install()
675674
export CC="$package_install_path/bin/gcc"
676675
echo "$this_script: export CXX=$package_install_path/bin/g++"
677676
export CXX="$package_install_path/bin/g++"
677+
gfortran_lib_paths="$package_install_path/lib64/:$package_install_path/lib"
678678
if [[ -z "$LD_LIBRARY_PATH" ]]; then
679-
export LD_LIBRARY_PATH="$package_install_path/lib/"
679+
export LD_LIBRARY_PATH="$gfortran_lib_paths"
680680
else
681-
export LD_LIBRARY_PATH="$package_install_path/lib/:$LD_LIBRARY_PATH"
681+
export LD_LIBRARY_PATH="$gfortran_lib_paths:$LD_LIBRARY_PATH"
682682
fi
683683
elif [[ $package == "mpich" ]]; then
684684
echo "$this_script: export MPIFC=$package_install_path/bin/mpif90"
@@ -687,11 +687,6 @@ find_or_install()
687687
export MPICC="$package_install_path/bin/mpicc"
688688
echo "$this_script: export MPICXX=$package_install_path/bin/mpicxx"
689689
export MPICXX="$package_install_path/bin/mpicxx"
690-
#if [[ -z "$LD_LIBRARY_PATH" ]]; then
691-
# export LD_LIBRARY_PATH="$package_install_path/lib/"
692-
#else
693-
# export LD_LIBRARY_PATH="$package_install_path/lib/:$LD_LIBRARY_PATH"
694-
#fi
695690
else
696691
printf "$this_script: WARNING: $package executable $executable installed correctly but the \n"
697692
printf "$this_script: corresponding environment variable(s) have not been set. This \n"
@@ -812,11 +807,19 @@ report_results()
812807
echo "fi " >> setup.sh
813808
echo " " >> setup.sh
814809
gcc_install_path=`./build gcc --default --query-path`
815-
if [[ -d "$gcc_install_path/lib" ]]; then
810+
if [[ -x "$gcc_install_path/bin/gfortran" ]]; then
811+
echo "if [[ -z \"\$PATH\" ]]; then " >> setup.sh
812+
echo " export PATH=\"$gcc_install_path/bin\" " >> setup.sh
813+
echo "else " >> setup.sh
814+
echo " export PATH=\"$gcc_install_path/bin:\$PATH\" " >> setup.sh
815+
echo "fi " >> setup.sh
816+
fi
817+
if [[ -d "$gcc_install_path/lib" || -d "$gcc_install_path/lib64" ]]; then
818+
gfortran_lib_paths="$gcc_install_path/lib64/:$gcc_install_path/lib"
816819
echo "if [[ -z \"\$LD_LIBRARY_PATH\" ]]; then " >> setup.sh
817-
echo " export LD_LIBRARY_PATH=\"$gcc_install_path/lib\" " >> setup.sh
820+
echo " export LD_LIBRARY_PATH=\"$gfortran_lib_paths\" " >> setup.sh
818821
echo "else " >> setup.sh
819-
echo " export LD_LIBRARY_PATH=\"$gcc_install_path/lib\":\$LD_LIBRARY_PATH " >> setup.sh
822+
echo " export LD_LIBRARY_PATH=\"$gfortran_lib_paths:\$LD_LIBRARY_PATH\" " >> setup.sh
820823
echo "fi " >> setup.sh
821824
fi
822825
echo " " >> setup.sh
@@ -853,15 +856,22 @@ report_results()
853856
echo "fi " >> setup.sh
854857
fi
855858
m4_install_path=`./build m4 --default --query-path`
856-
if [[ -x "$m4_install_path/bin/yacc" ]]; then
859+
if [[ -x "$m4_install_path/bin/m4" ]]; then
857860
echo "if [[ -z \"\$PATH\" ]]; then " >> setup.sh
858861
echo " export PATH=\"$m4_install_path/bin\" " >> setup.sh
859862
echo "else " >> setup.sh
860863
echo " export PATH=\"$m4_install_path/bin\":\$PATH " >> setup.sh
861864
echo "fi " >> setup.sh
862865
fi
863-
setup_sh_location=$install_path
864-
$SUDO mv setup.sh $install_path || setup_sh_location=${PWD}
866+
opencoarrays_install_path=$install_path
867+
if [[ -x "$opencoarrays_install_path/bin/caf" ]]; then
868+
echo "if [[ -z \"\$PATH\" ]]; then " >> setup.sh
869+
echo " export PATH=\"$opencoarrays_install_path/bin\" " >> setup.sh
870+
echo "else " >> setup.sh
871+
echo " export PATH=\"$opencoarrays_install_path/bin\":\$PATH " >> setup.sh
872+
echo "fi " >> setup.sh
873+
fi
874+
$SUDO mv setup.sh $opencoarrays_install_path && setup_sh_location=$opencoarrays_install_path || setup_sh_location=${PWD}
865875
echo "*** Before using caf, cafrun, or build, please execute the following command ***"
866876
echo "*** or add it to your login script and launch a new shell (or the equivalent ***"
867877
echo "*** for your shell if you are not using a bash shell): ***"

install_prerequisites/build

+47-8
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ set_default_version()
129129
check_prerequisites()
130130
{
131131
if [[ "$package_to_build" == "gcc" && "$version_to_build" != "trunk" ]]; then
132-
gcc_fetch="ftp"
132+
gcc_fetch="ftp-url"
133133
else
134134
gcc_fetch="svn"
135135
fi
@@ -138,14 +138,14 @@ check_prerequisites()
138138
# See http://stackoverflow.com/questions/1494178/how-to-define-hash-tables-in-bash
139139
package_download_mechanism=(
140140
"gcc:$gcc_fetch"
141-
"wget:ftp"
141+
"wget:ftp-url"
142142
"cmake:wget"
143143
"mpich:wget"
144144
"flex:wget"
145-
"bison:wget"
145+
"bison:ftp-url"
146146
"pkg-config:wget"
147-
"make:ftp"
148-
"m4:ftp"
147+
"make:ftp-url"
148+
"m4:ftp-url"
149149
"subversion:wget"
150150
"_unknown:0"
151151
)
@@ -184,7 +184,7 @@ set_url()
184184
if [[ $package_to_build == 'cmake' ]]; then
185185
major_minor="${version_to_build%.*}"
186186
elif [[ "$package_to_build" == "gcc" && "$version_to_build" != "trunk" ]]; then
187-
gcc_url_head="http://ftpmirror.gnu.org/gcc/gcc-$version_to_build/"
187+
gcc_url_head="ftp.gnu.org:/gnu/gcc/gcc-$version_to_build/"
188188
else
189189
gcc_url_head="svn://gcc.gnu.org/svn/gcc/"
190190
fi
@@ -196,7 +196,7 @@ set_url()
196196
"mpich;http://www.mpich.org/static/downloads/$version_to_build/"
197197
"flex;http://sourceforge.net/projects/flex/files/"
198198
"make;ftp://ftp.gnu.org/gnu/make/"
199-
"bison;http://ftp.gnu.org/gnu/bison/"
199+
"bison;ftp.gnu.org:/gnu/bison/"
200200
"cmake;http://www.cmake.org/files/v$major_minor/"
201201
"subversion;http://www.eu.apache.org/dist/subversion/"
202202
"_unknown;0"
@@ -257,6 +257,45 @@ set_url()
257257

258258
}
259259

260+
# Download a file from an anonymous ftp site
261+
#
262+
# Usage:
263+
# ftp-url <ftp-mode> <ftp-site-address>:/<path-to-file>/<file-name>
264+
#
265+
# Example:
266+
# ftp-url -n ftp.gnu.org:/gnu/m4/m4-1.4.17.tar.bz2
267+
268+
ftp-url()
269+
{
270+
ftp_mode=$1
271+
url=$2
272+
273+
text_before_colon="${url%%:*}"
274+
FTP_SERVER=$text_before_colon
275+
276+
text_after_colon="${url##*:}"
277+
text_after_final_slash="${text_after_colon##*/}"
278+
FILE_NAME=$text_after_final_slash
279+
280+
text_before_final_slash="${text_after_colon%/*}"
281+
FILE_PATH="$text_before_final_slash"
282+
283+
USERNAME=anonymous
284+
PASSWORD=""
285+
echo "$this_script: starting anonymous download: ftp $ftp_mode $FTP_SERVER... cd $FILE_PATH... get $FILE_NAME"
286+
287+
ftp $ftp_mode $FTP_SERVER <<Done-ftp
288+
user $USERNAME $PASSWORD
289+
cd $FILE_PATH
290+
passive
291+
binary
292+
get "$FILE_NAME"
293+
bye
294+
Done-ftp
295+
296+
echo "$this_script: finished anonymous ftp"
297+
}
298+
260299
# Download pkg-config if the tar ball is not already in the present working directory
261300
download_if_necessary()
262301
{
@@ -307,7 +346,7 @@ download_if_necessary()
307346
fi
308347
elif [[ "$fetch" == "wget" ]]; then
309348
args=--no-check-certificate
310-
elif [[ "$fetch" == "ftp" ]]; then
349+
elif [[ "$fetch" == "ftp-url" ]]; then
311350
args=-n
312351
elif [[ "$fetch" == "git" ]]; then
313352
args=clone

0 commit comments

Comments
 (0)