dj-linkedin commented on code in PR #1653:
URL: https://github.com/apache/samza/pull/1653#discussion_r1116049409
##########
samza-shell/src/main/bash/run-class.sh:
##########
@@ -57,7 +57,11 @@ CLASSPATH=""
# all the jars need to be appended on newlines to ensure line argument length
of 72 bytes is not violated
for file in $BASE_LIB_DIR/*.[jw]ar;
do
- CLASSPATH=$CLASSPATH" $file \n"
+ # Symlinks need to be resolved here, otherwise, the jars listed in the
+ # manifest below will point at the first container launched instead of
+ # the jars at the application level.
+ resolved_file=$( cd $(dirname $(readlink `[[ $OSTYPE == linux* ]] && echo
"-f"` "$file")) ; pwd -P)
Review Comment:
man readlink on linux:
```
READLINK(1)
User Commands
READLINK(1)
NAME
readlink - print resolved symbolic links or canonical file names
SYNOPSIS
readlink [OPTION]... FILE...
DESCRIPTION
Print value of a symbolic link or canonical file name
-f, --canonicalize
canonicalize by following every symlink in every component of
the given name recursively; all but the last component must exist
```
man readlink on OS X:
```
STAT(1)
General Commands Manual
STAT(1)
NAME
stat, readlink – display file status
SYNOPSIS
stat [-FLnq] [-f format | -l | -r | -s | -x] [-t timefmt] [file ...]
readlink [-fn] [file ...]
DESCRIPTION
The stat utility displays information about the file pointed to by
file. Read, write, or execute permissions of the named file are not required,
but all directories listed in the pathname leading to the file must be
searchable. If no argument is given, stat displays information about
the file descriptor for standard input.
When invoked as readlink, only the target of the symbolic link is
printed. If the given argument is not a symbolic link and the -f option is not
specified, readlink will print nothing and exit with an error. If the -f option
is specified, the output is canonicalized by following every symlink in
every component of the given path recursively. readlink will resolve both
absolute and relative paths, and return the absolute pathname corresponding to
file. In this case, the argument does not need to be a symbolic link.
The information displayed is obtained by calling lstat(2) with the
given argument and evaluating the returned structure. The default format
displays the st_dev, st_ino, st_mode, st_nlink, st_uid, st_gid, st_rdev,
st_size,
st_atime, st_mtime, st_ctime, st_birthtime, st_blksize, st_blocks, and
st_flags fields, in that order.
The options are as follows:
-F As in ls(1), display a slash (‘/’) immediately after each
pathname that is a directory, an asterisk (‘*’) after each that is executable,
an at sign (‘@’) after each symbolic link, a percent sign (‘%’) after each
whiteout, an equal sign (‘=’) after each socket, and a vertical
bar (‘|’) after each that is a FIFO. The use of -F implies -l.
-L Use stat(2) instead of lstat(2). The information reported by
stat will refer to the target of file, if file is a symbolic link, and not to
file itself. If the link is broken or the target does not exist, fall back on
lstat(2) and report information about the link.
-f format
Display information using the specified format. See the
Formats section for a description of valid formats.
```
So readlink exists on both, but the meaning of -f is different.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]