20 lines
757 B
Bash
20 lines
757 B
Bash
#!/bin/bash
|
|||
|
|
# Extracts plain executables and shared libraries from built .deb artifacts.
|
||
|
|
set -euo pipefail
|
||
|
|
src=$(realpath "${1:?artifact directory required}")
|
||
|
|
out=$(realpath "${2:?output binary directory required}")
|
||
|
|
extract=$(mktemp -d)
|
||
|
|
trap 'rm -rf "$extract"' EXIT
|
||
|
|
shopt -s nullglob
|
||
|
|
debs=("$src"/*.deb)
|
||
|
|
[[ ${#debs[@]} -gt 0 ]] || { echo 'No .deb files found to extract' >&2; exit 1; }
|
||
|
|
for deb in "${debs[@]}"; do
|
||
|
|
dpkg-deb -x "$deb" "$extract"
|
||
|
|
done
|
||
|
|
mkdir -p "$out"
|
||
|
|
for dir in "$extract/usr/bin" "$extract/usr/sbin"; do
|
||
|
|
[[ -d $dir ]] || continue
|
||
|
|
find "$dir" -mindepth 1 -maxdepth 1 -type f -exec cp {} "$out/" \;
|
||
|
|
done
|
||
|
|
[[ -d $extract/usr/lib ]] && find "$extract/usr/lib" -mindepth 2 -maxdepth 2 -type f -name '*.so*' -exec cp {} "$out/" \;
|
||
|
|
true
|