[MacPorts] #53595: hadoop fails to install before and after selfupdate to 2.40
MacPorts
noreply at macports.org
Sat Feb 18 14:08:31 UTC 2017
#53595: hadoop fails to install before and after selfupdate to 2.40
------------------------------+-------------------
Reporter: TheLastLovemark | Owner:
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.4.0
Resolution: | Keywords:
Port: hadoop |
------------------------------+-------------------
Comment (by TheLastLovemark):
OK. So last night I managed to get the full 1.8 and 1.7 JDKs installed
then went to sleep. When I woke up, I did your {{{ant -version}}} check as
root.
Here are the full results (line breaks added for clarity):
{{{
sh-3.2# which ant
/opt/local/bin/ant
sh-3.2# ls -la /opt/local/bin/ant
lrwxr-xr-x 1 root admin 32 Feb 6 22:34 /opt/local/bin/ant ->
../share/java/apache-ant/bin/ant
sh-3.2# ls -la /opt/local/share/java/apache-ant/bin/ant
-rwxr-xr-x 1 root admin 11698 Feb 2 14:00 /opt/local/share/java
/apache-ant/bin/ant
sh-3.2# cd /opt/local/share/java/apache-ant/bin/
sh-3.2# ls -la
total 72
drwxr-xr-x 8 root admin 272 Feb 17 13:24 .
drwxr-xr-x 10 root admin 340 Feb 17 13:24 ..
-rwxr-xr-x 1 root admin 11698 Feb 2 14:00 ant
-rwxr-xr-x 1 root admin 861 Feb 2 14:00 antRun
-rwxr-xr-x 1 root admin 2116 Feb 2 14:00 antRun.pl
-rwxr-xr-x 1 root admin 3473 Feb 2 14:00 complete-ant-cmd.pl
-rwxr-xr-x 1 root admin 4333 Feb 2 14:00 runant.pl
-rwxr-xr-x 1 root admin 3385 Feb 2 14:00 runant.py
sh-3.2# cat ./ant
#! /bin/sh
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Extract launch and ant arguments, (see details below).
ant_exec_args=
no_config=false
use_jikes_default=false
ant_exec_debug=false
show_help=false
if [ -z "$PROTECT_NL" ]
then
PROTECT_NL=true
os=`uname -s`
rel=`uname -r`
# heirloom bourne-shell used by Solaris 10 is not POSIX
# it lacks features necessary to protect trailing NL from subshell
trimming
if [ "$os" = SunOS -a "$rel" = "5.10" ]
then
PROTECT_NL=false
fi
fi
for arg in "$@" ; do
if [ "$arg" = "--noconfig" ] ; then
no_config=true
elif [ "$arg" = "--usejikes" ] ; then
use_jikes_default=true
elif [ "$arg" = "--execdebug" ] ; then
ant_exec_debug=true
elif [ my"$arg" = my"--h" -o my"$arg" = my"--help" ] ; then
show_help=true
ant_exec_args="$ant_exec_args -h"
else
if [ my"$arg" = my"-h" -o my"$arg" = my"-help" ] ; then
show_help=true
fi
if [ "$PROTECT_NL" = "true" ] ; then
# pad the value with X to protect trailing NLs from subshell output
trimming
esc_arg="${arg}X"
else
esc_arg="${arg}"
fi
# wrap all arguments as "" strings, escape any internal back-slash,
double-quote, $, or back-tick characters
# use printf to avoid echo interpretation behaviors such as escapes
and line continuation
# Mac bsd_sed does not support group-0, so pattern uses group-1
# Solaris sed only processes lines with trailing newline, passing in
an extra newline
# subshell (heirloom and posix) will trim the added trailing newline
esc_arg="`printf '%s\n' "$esc_arg" | sed -e
's@\([$\"\`\\]\)@\\\\\\1 at g' `"
if [ "$PROTECT_NL" = "true" ] ; then
# remove the padding X added above, this syntax is POSIX compatible
but not heirloom-sh
esc_arg="${esc_arg%X}"
fi
quoted_arg="\"$esc_arg\""
if $ant_exec_debug
then
# using printf to avoid echo line continuation and escape
interpretation
printf "arg : %s\n" "$arg"
printf "quoted_arg: %s\n" "$quoted_arg"
fi
ant_exec_args="$ant_exec_args $quoted_arg"
fi
done
# Source/default ant configuration
if $no_config ; then
rpm_mode=false
usejikes=$use_jikes_default
else
# load system-wide ant configuration (ONLY if ANT_HOME has NOT been set)
if [ -z "$ANT_HOME" -o "$ANT_HOME" = "/usr/share/ant" ]; then
if [ -f "/etc/ant.conf" ] ; then
. /etc/ant.conf
fi
fi
# load user ant configuration
if [ -f "$HOME/.ant/ant.conf" ] ; then
. $HOME/.ant/ant.conf
fi
if [ -f "$HOME/.antrc" ] ; then
. "$HOME/.antrc"
fi
# provide default configuration values
if [ -z "$rpm_mode" ] ; then
rpm_mode=false
fi
if [ -z "$usejikes" ] ; then
usejikes=$use_jikes_default
fi
fi
# Setup Java environment in rpm mode
if $rpm_mode ; then
if [ -f /usr/share/java-utils/java-functions ] ; then
. /usr/share/java-utils/java-functions
set_jvm
set_javacmd
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false;
case "`uname`" in
CYGWIN*) cygwin=true ;;
Darwin*) darwin=true
if [ -z "$JAVA_HOME" ] ; then
if [ -x '/usr/libexec/java_home' ] ; then
JAVA_HOME=`/usr/libexec/java_home`
elif [ -d
"/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home" ];
then
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
fi
fi
;;
MINGW*) mingw=true ;;
esac
if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then
## resolve links - $0 may be a link to ant's home
PRG="$0"
progname=`basename "$0"`
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
ANT_HOME=`dirname "$PRG"`/..
# make it fully qualified
ANT_HOME=`cd "$ANT_HOME" > /dev/null && pwd`
fi
# For Cygwin and Mingw, ensure paths are in UNIX format before
# anything is touched
if $cygwin ; then
[ -n "$ANT_HOME" ] &&
ANT_HOME=`cygpath --unix "$ANT_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
if $mingw ; then
[ -n "$ANT_HOME" ] &&
ANT_HOME="`(cd "$ANT_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi
# set ANT_LIB location
ANT_LIB="${ANT_HOME}/lib"
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
JAVACMD="$JAVA_HOME/jre/sh/java"
elif [ -x "$JAVA_HOME/jre/bin/java" ] ; then
JAVACMD="$JAVA_HOME/jre/bin/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD=`which java 2> /dev/null `
if [ -z "$JAVACMD" ] ; then
JAVACMD=java
fi
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly."
echo " We cannot execute $JAVACMD"
exit 1
fi
# Build local classpath using just the launcher in non-rpm mode or
# use the Jpackage helper in rpm mode with basic and default jars
# specified in the ant.conf configuration. Because the launcher is
# used, libraries linked in ANT_HOME/lib will also be included, but this
# is discouraged as it is not java-version safe. A user should
# request optional jars and their dependencies via the OPT_JAR_LIST
# variable
if $rpm_mode && [ -x /usr/bin/build-classpath ] ; then
LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher
jaxp_parser_impl xml-commons-apis)"
# If no optional jars have been specified then build the default list
if [ -z "$OPT_JAR_LIST" ] ; then
for file in /etc/ant.d/*; do
if [ -f "$file" ]; then
case "$file" in
*~) ;;
*#*) ;;
*.rpmsave) ;;
*.rpmnew) ;;
*)
for dep in `cat "$file"`; do
OPT_JAR_LIST="$OPT_JAR_LIST${OPT_JAR_LIST:+ }$dep"
done
esac
fi
done
fi
# If the user requested to try to add some other jars to the classpath
if [ -n "$OPT_JAR_LIST" ] ; then
_OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)"
if [ -n "$_OPTCLASSPATH" ] ; then
LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH"
fi
fi
# Explicitly add javac path to classpath, assume JAVA_HOME set
# properly in rpm mode
if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then
LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar"
fi
if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then
LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip"
fi
# if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be
# user CLASSPATH first and ant-found jars after.
# In that case, the user CLASSPATH will override ant-found jars
#
# if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour
# with ant-found jars first and user CLASSPATH after
if [ -n "$CLASSPATH" ] ; then
# merge local and specified classpath
if [ -z "$LOCALCLASSPATH" ] ; then
LOCALCLASSPATH="$CLASSPATH"
elif [ -n "$CLASSPATH_OVERRIDE" ] ; then
LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH"
else
LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH"
fi
# remove class path from launcher -cp option
CLASSPATH=""
fi
else
# not using rpm_mode; use launcher to determine classpaths
if [ -z "$LOCALCLASSPATH" ] ; then
LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar
else
LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH
fi
fi
if [ -n "$JAVA_HOME" ] ; then
# OSX hack to make Ant work with jikes
if $darwin ; then
OSXHACK="${JAVA_HOME}/../Classes"
if [ -d "${OSXHACK}" ] ; then
for i in "${OSXHACK}"/*.jar
do
JIKESPATH="$JIKESPATH:$i"
done
fi
fi
fi
# Allow Jikes support (off by default)
if $usejikes; then
ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes"
fi
# For Cygwin, switch paths to appropriate format before running java
# For PATHs convert to unix format first, then to windows format to ensure
# both formats are supported. Probably this will fail on directories with
;
# in the name in the path. Let's assume that paths containing ; are more
# rare than windows style paths on cygwin.
if $cygwin; then
if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
format=mixed
else
format=windows
fi
[ -n "$ANT_HOME" ] && ANT_HOME=`cygpath --$format "$ANT_HOME"`
ANT_LIB=`cygpath --$format "$ANT_LIB"`
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --$format "$JAVA_HOME"`
LCP_TEMP=`cygpath --path --unix "$LOCALCLASSPATH"`
LOCALCLASSPATH=`cygpath --path --$format "$LCP_TEMP"`
if [ -n "$CLASSPATH" ] ; then
CP_TEMP=`cygpath --path --unix "$CLASSPATH"`
CLASSPATH=`cygpath --path --$format "$CP_TEMP"`
fi
CYGHOME=`cygpath --$format "$HOME"`
fi
# Show script help if requested
if $show_help ; then
echo $0 '[script options] [options] [target [target2 [target3] ..]]'
echo 'Script Options:'
echo ' --help, --h print this message and ant help'
echo ' --noconfig suppress sourcing of /etc/ant.conf,'
echo ' $HOME/.ant/ant.conf, and $HOME/.antrc'
echo ' configuration files'
echo ' --usejikes enable use of jikes by default, unless'
echo ' set explicitly in configuration files'
echo ' --execdebug print ant exec line generated by this'
echo ' launch script'
echo ' '
fi
# add a second backslash to variables terminated by a backslash under
cygwin
if $cygwin; then
case "$ANT_HOME" in
*\\ )
ANT_HOME="$ANT_HOME\\"
;;
esac
case "$CYGHOME" in
*\\ )
CYGHOME="$CYGHOME\\"
;;
esac
case "$JIKESPATH" in
*\\ )
JIKESPATH="$JIKESPATH\\"
;;
esac
case "$LOCALCLASSPATH" in
*\\ )
LOCALCLASSPATH="$LOCALCLASSPATH\\"
;;
esac
case "$CLASSPATH" in
*\\ )
CLASSPATH="$CLASSPATH\\"
;;
esac
fi
# Execute ant using eval/exec to preserve spaces in paths,
# java options, and ant args
ant_sys_opts=
if [ -n "$CYGHOME" ]; then
if [ -n "$JIKESPATH" ]; then
ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\"
-Dcygwin.user.home=\"$CYGHOME\""
else
ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\""
fi
else
if [ -n "$JIKESPATH" ]; then
ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\""
fi
fi
ant_exec_command="exec \"\$JAVACMD\" $ANT_OPTS -classpath
\"\$LOCALCLASSPATH\" -Dant.home=\"\$ANT_HOME\"
-Dant.library.dir=\"\$ANT_LIB\" $ant_sys_opts
org.apache.tools.ant.launch.Launcher $ANT_ARGS -cp \"\$CLASSPATH\""
if $ant_exec_debug ; then
# using printf to avoid echo line continuation and escape
interpretation confusion
printf "%s\n" "$ant_exec_command $ant_exec_args"
fi
eval "$ant_exec_command $ant_exec_args"
sh-3.2# ./ant -version
Apache Ant(TM) version 1.10.1 compiled on February 2 2017
}}}
It seems like it worked, with a few minor differences. Ant is installed in
a different location for me and my total is different on the last {{{ls
-la}}} but Hadoop still fails to install.
I am on a mid-2010 MBP with a 960GB SSD, 8GB RAM running macOS Sierra
10.12.3. I didn't change anything really. After I upgraded to Sierra, I
made sure I installed Apple-Java 1.6 so that Creative Suite would work. I
used the default installer settings, no modifications at all. Updated
Macports as described in the guide, but I did not have the full Java 1.8
or 1.7 JDK installed then. Just the 1.8 JRE.
It feels like we are slowly moving towards identifying the problem.
Are there any further steps I should try?
--
Ticket URL: <https://trac.macports.org/ticket/53595#comment:16>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list