@@ -77,10 +77,16 @@ function package_libc_via_rpm() {
7777
7878PKG_BIN_FILENAME=` basename " $PKG_BIN_PATH " `
7979PKG_DIR=tmp
80+ PKG_LD=" "
81+
82+ list=$( ldd " $PKG_BIN_PATH " | awk ' {print $(NF-1)}' )
83+ libc_libs=()
84+ libc_libs+=$( package_libc_via_dpkg)
85+ libc_libs+=$( package_libc_via_rpm)
86+ libc_libs+=$( package_libc_via_pacman)
8087
81- list=` ldd " $PKG_BIN_PATH " | awk ' {print $(NF-1)}' `
8288if [[ $INCLUDE_LIBC == true ]]; then
83- list= " $list $( package_libc_via_dpkg ) $( package_libc_via_rpm ) $( package_libc_via_pacman ) "
89+ list+= $libc_libs ;
8490fi
8591
8692mkdir -p " $PKG_DIR /bin" " $PKG_DIR /lib"
9096 if [[ ! -f $i ]]; then # ignore linux-vdso.so.1
9197 continue
9298 fi
99+
100+ if [[ $INCLUDE_LIBC == false ]]; then
101+ matched=$( echo $libc_libs | grep --count $i ) || true # prevent the non-zero exit status from terminating the script
102+ if [ $matched -gt 0 ]; then
103+ continue
104+ fi
105+ fi
93106 cp $i $PKG_DIR /lib
94107 filename=` basename $i `
95108 if [[ -z " ${filename## ld-* } " ]]; then
96109 PKG_LD=$filename # Use this file as the loader
97110 fi
98111done
99112
100- bootstrap_script=" #!/bin/bash\n
101- \n
102- set -euo pipefail\n
103- \n
104- exec \$ LAMBDA_TASK_ROOT/lib/$PKG_LD --library-path \$ LAMBDA_TASK_ROOT/lib \$ LAMBDA_TASK_ROOT/bin/$PKG_BIN_FILENAME \$ {_HANDLER}\n
105- "
113+ bootstrap_script=$( cat << EOF
114+ #!/bin/bash
115+ set -euo pipefail
116+ export AWS_EXECUTION_ENV=lambda-cpp
117+ exec \$ LAMBDA_TASK_ROOT/lib/$PKG_LD --library-path \$ LAMBDA_TASK_ROOT/lib \$ LAMBDA_TASK_ROOT/bin/$PKG_BIN_FILENAME \$ {_HANDLER}
118+ EOF
119+ )
106120
107- bootstrap_script_no_libc=" #!/bin/bash\n
108- \n
109- set -euo pipefail\n
110- \n
111- exec \$ LAMBDA_TASK_ROOT/lib/$PKG_LD --library-path \$ LD_LIBRARY_PATH:\$ LAMBDA_TASK_ROOT/lib \$ LAMBDA_TASK_ROOT/bin/$PKG_BIN_FILENAME \$ {_HANDLER}\n
112- "
121+ bootstrap_script_no_libc=$( cat << EOF
122+ #!/bin/bash
123+ set -euo pipefail
124+ export AWS_EXECUTION_ENV=lambda-cpp
125+ export LD_LIBRARY_PATH=\$ LD_LIBRARY_PATH:\$ LAMBDA_TASK_ROOT/lib
126+ exec \$ LAMBDA_TASK_ROOT/bin/$PKG_BIN_FILENAME \$ {_HANDLER}
127+ EOF
128+ )
113129
114130cp " $PKG_BIN_PATH " " $PKG_DIR /bin"
115131if [[ $INCLUDE_LIBC == true ]]; then
116- echo -e $bootstrap_script > " $PKG_DIR /bootstrap"
132+ echo -e " $bootstrap_script " > " $PKG_DIR /bootstrap"
117133else
118- echo -e $bootstrap_script_no_libc > " $PKG_DIR /bootstrap"
134+ echo -e " $bootstrap_script_no_libc " > " $PKG_DIR /bootstrap"
119135fi
120136chmod +x " $PKG_DIR /bootstrap"
121137# some shenanigans to create the right layout in the zip file without extraneous directories
0 commit comments