Skip to content

Commit

Permalink
Improve lib-check
Browse files Browse the repository at this point in the history
  • Loading branch information
mnapoli committed Dec 20, 2022
1 parent 555fa00 commit 6288203
Show file tree
Hide file tree
Showing 5 changed files with 273 additions and 12 deletions.
12 changes: 7 additions & 5 deletions utils/lib-check/Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
check:
php verify.php php-80/cpu-x86.Dockerfile
php verify.php php-80/cpu-arm.Dockerfile
php verify.php php-81/cpu-x86.Dockerfile
php verify.php php-82/cpu-x86.Dockerfile
@php verify.php php-80/cpu-x86.Dockerfile x86
@php verify.php php-81/cpu-x86.Dockerfile x86
@php verify.php php-82/cpu-x86.Dockerfile x86
@php verify.php php-80/cpu-arm.Dockerfile arm
@php verify.php php-81/cpu-arm.Dockerfile arm

update:
docker-compose run --rm update-list
docker-compose run --rm update-x86
docker-compose run --rm update-arm
17 changes: 13 additions & 4 deletions utils/lib-check/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,22 @@
version: '3.8'

services:
# List all files from `/lib64` into `al2-x64.txt`
update-list:

# List all files from `/lib64` into `libs-x86.txt`
update-x86:
image: public.ecr.aws/lambda/provided:al2-x86_64
entrypoint: /bin/sh
command: [ "-c", "find /lib64/ -maxdepth 1 -not -type d -printf '%f\n' | sort > /al2-x64.txt" ]
command: [ "-c", "find /lib64/ -maxdepth 1 -not -type d -printf '%f\n' | sort > /libs-x86.txt" ]
# Alternative approach from https://gist.github.com/vladgolubev/439559fc7597a4fb51eaa9e97b72f319
# but it seems to list less files, so I'm not sure we should use that alternative
# command: [ "-c", "/sbin/ldconfig -p | awk '{print $$1}' | sort > /al2-x64.txt" ]
volumes:
- ./al2-x64.txt:/al2-x64.txt
- ./libs-x86.txt:/libs-x86.txt

# List all files from `/lib64` into `libs-arm.txt`
update-arm:
image: public.ecr.aws/lambda/provided:al2-arm64
entrypoint: /bin/sh
command: [ "-c", "find /lib64/ -maxdepth 1 -not -type d -printf '%f\n' | sort > /libs-arm.txt" ]
volumes:
- ./libs-arm.txt:/libs-arm.txt
248 changes: 248 additions & 0 deletions utils/lib-check/libs-arm.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
ld-2.26.so
ld-linux-aarch64.so.1
libacl.so.1
libacl.so.1.1.0
libanl-2.26.so
libanl.so.1
libassuan.so.0
libassuan.so.0.4.0
libattr.so.1
libattr.so.1.1.0
libblkid.so.1
libblkid.so.1.1.0
libBrokenLocale-2.26.so
libBrokenLocale.so.1
libbz2.so.1
libbz2.so.1.0.6
libc-2.26.so
libcap.so.2
libcap.so.2.54
libcidn-2.26.so
libcidn.so.1
libcom_err.so.2
libcom_err.so.2.1
libcrypt-2.26.so
libcrypto.so.10
libcrypto.so.1.0.2k
.libcrypto.so.1.0.2k.hmac
.libcrypto.so.10.hmac
libcrypt.so.1
libc.so.6
libcurl.so.4
libcurl.so.4.7.0
libdb-5.3.so
libdb-5.so
libdl-2.26.so
libdl.so.2
libelf-0.176.so
libelf.so.1
libexpat.so.1
libexpat.so.1.6.0
libffi.so.6
libffi.so.6.0.1
libfontconfig.so.1
libfontconfig.so.1.11.1
libform.so.6
libform.so.6.0
libformw.so.6
libformw.so.6.0
libfreebl3.chk
libfreebl3.so
libfreeblpriv3.chk
libfreeblpriv3.so
libfreetype.so.6
libfreetype.so.6.14.0
libgcc_s-7-20180712.so.1
libgcc_s.so.1
libgcrypt.so.11
libgcrypt.so.11.8.2
.libgcrypt.so.11.hmac
libgdbm_compat.so.4
libgdbm_compat.so.4.0.0
libgdbm.so.4
libgdbm.so.4.0.0
libgio-2.0.so.0
libgio-2.0.so.0.5600.1
libglib-2.0.so.0
libglib-2.0.so.0.5600.1
libgmodule-2.0.so.0
libgmodule-2.0.so.0.5600.1
libgmp.so.10
libgmp.so.10.2.0
libgmpxx.so.4
libgmpxx.so.4.4.0
libgobject-2.0.so.0
libgobject-2.0.so.0.5600.1
libgpg-error.so.0
libgpg-error.so.0.10.0
libgpgme-pthread.so.11
libgpgme-pthread.so.11.8.1
libgpgme.so.11
libgpgme.so.11.8.1
libgssapi_krb5.so.2
libgssapi_krb5.so.2.2
libgssrpc.so.4
libgssrpc.so.4.2
libgthread-2.0.so.0
libgthread-2.0.so.0.5600.1
libhistory.so.6
libhistory.so.6.2
libicudata.so.50
libicudata.so.50.2
libicui18n.so.50
libicui18n.so.50.2
libicuio.so.50
libicuio.so.50.2
libicule.so.50
libicule.so.50.2
libiculx.so.50
libiculx.so.50.2
libicutest.so.50
libicutest.so.50.2
libicutu.so.50
libicutu.so.50.2
libicuuc.so.50
libicuuc.so.50.2
libidn2.so.0
libidn2.so.0.3.7
libk5crypto.so.3
libk5crypto.so.3.1
libkdb5.so.8
libkdb5.so.8.0
libkeyutils.so.1
libkeyutils.so.1.5
libkrad.so.0
libkrad.so.0.0
libkrb5.so.3
libkrb5.so.3.3
libkrb5support.so.0
libkrb5support.so.0.1
liblber-2.4.so.2
liblber-2.4.so.2.10.7
libldap-2.4.so.2
libldap-2.4.so.2.10.7
libldap_r-2.4.so.2
libldap_r-2.4.so.2.10.7
liblua-5.1.so
liblzma.so.5
liblzma.so.5.2.2
libm-2.26.so
libmagic.so.1
libmagic.so.1.0.0
libmemusage.so
libmenu.so.6
libmenu.so.6.0
libmenuw.so.6
libmenuw.so.6.0
libmount.so.1
libmount.so.1.1.0
libm.so.6
libncurses.so.6
libncurses.so.6.0
libncursesw.so.6
libncursesw.so.6.0
libnghttp2.so.14
libnghttp2.so.14.20.0
libnsl-2.26.so
libnsl.so.1
libnspr4.so
libnss3.so
libnssckbi.so
libnss_compat-2.26.so
libnss_compat.so.2
libnssdbm3.chk
libnssdbm3.so
libnss_dns-2.26.so
libnss_dns.so.2
libnss_files-2.26.so
libnss_files.so.2
libnsspem.so
libnsssysinit.so
libnssutil3.so
libp11-kit.so.0
libp11-kit.so.0.3.0
libpanel.so.6
libpanel.so.6.0
libpanelw.so.6
libpanelw.so.6.0
libpcprofile.so
libpcre16.so.0
libpcre16.so.0.2.0
libpcre32.so.0
libpcre32.so.0.0.0
libpcrecpp.so.0
libpcrecpp.so.0.0.0
libpcreposix.so.0
libpcreposix.so.0.0.1
libpcre.so.1
libpcre.so.1.2.0
libplc4.so
libplds4.so
libpng15.so.15
libpng15.so.15.13.0
libpopt.so.0
libpopt.so.0.0.0
libpsx.so.2
libpsx.so.2.54
libpthread-2.26.so
libpthread.so.0
libpth.so.20
libpth.so.20.0.27
libpython2.7.so.1.0
libreadline.so.6
libreadline.so.6.2
libresolv-2.26.so
libresolv.so.2
librpmbuild.so.3
librpmbuild.so.3.2.2
librpmio.so.3
librpmio.so.3.2.2
librpmsign.so.1
librpmsign.so.1.2.2
librpm.so.3
librpm.so.3.2.2
librt-2.26.so
librt.so.1
libsasl2.so.3
libsasl2.so.3.0.0
libSegFault.so
libselinux.so.1
libsepol.so.1
libslapi-2.4.so.2
libslapi-2.4.so.2.10.7
libsmime3.so
libsoftokn3.chk
libsoftokn3.so
libsqlite3.so.0
libsqlite3.so.0.8.6
libssh2.so.1
libssh2.so.1.0.1
libssl3.so
libssl.so.10
libssl.so.1.0.2k
.libssl.so.1.0.2k.hmac
.libssl.so.10.hmac
libstdc++.so.6
libstdc++.so.6.0.24
libtasn1.so.6
libtasn1.so.6.5.3
libthread_db-1.0.so
libthread_db.so.1
libtic.so.6
libtic.so.6.0
libtinfo.so.6
libtinfo.so.6.0
libunistring.so.0
libunistring.so.0.1.2
libutil-2.26.so
libutil.so.1
libuuid.so.1
libuuid.so.1.3.0
libverto.so.1
libverto.so.1.0.0
libxml2.so.2
libxml2.so.2.9.1
libz.so.1
libz.so.1.2.7
p11-kit-proxy.so
p11-kit-trust.so
File renamed without changes.
8 changes: 5 additions & 3 deletions utils/lib-check/verify.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?php declare(strict_types=1);

require_once __DIR__ . '/../../tests/utils.php';

# This file is only used manually.
# The goal is to reduce layer size by not copying any file that is not strictly necessary.
# We do this by executing one Lambda with the following `/opt/bootstrap` file:
Expand Down Expand Up @@ -28,7 +30,7 @@

$docker = implode(PHP_EOL, $dockerContent);

$libraries = file(__DIR__ . '/al2-x64.txt');
$libraries = file(__DIR__ . "/libs-$argv[2].txt");
// For some reason some libraries are actually not in Lambda, despite being in the docker image 🤷
$libraries = array_filter($libraries, function ($library) {
return ! str_contains($library, 'libgcrypt.so') && ! str_contains($library, 'libgpg-error.so');
Expand All @@ -40,8 +42,8 @@
}

if (str_contains($docker, $library)) {
echo "[$library] is present in Docker but is also present on /lib64 by default" . PHP_EOL;
error("[$library] is present in Docker but is also present on /lib64 by default");
}
}

echo 'OK' . PHP_EOL;
success($argv[1]);

0 comments on commit 6288203

Please sign in to comment.