commit 3aa29c44d369449056db76ec5d4f9f9340449c99
parent 0d0e66b409df6cb64a94f35514332fa292ad771b
Author: Jan Pobrislo <ccx@te2000.cz>
Date: Sat, 3 May 2025 20:40:31 +0000
Add strace to userspace.environment
Diffstat:
11 files changed, 452 insertions(+), 4 deletions(-)
diff --git a/downloadlist.sha256 b/downloadlist.sha256
@@ -54,3 +54,4 @@ f311f8f3dad84699d0566d1d6f7ec943a9298b28f714cae3c931dfd57492d7eb 189200 https://
588546b945bba4b70b6a3a616e80b4ab466e3f33024a352fc2198112cdbb3ae2 1215925 https://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz
0e751989cea94e25d5166a6a1ed9bde218786e39dff82e1f01dff12fc78639d9 2329 https://hacktivis.me/releases/error-standalone/error-standalone-2.0.tar.gz
c29eae929dfebd575c38174f2c8c315766092cec99a8f987569d0cad3c6d64f6 65889 https://github.com/argp-standalone/argp-standalone/archive/refs/tags/1.5.0.tar.gz
+e209daf0ee038ca5adcc4c277e9273b4d51f46a2ff86da575d36742ac3508a17 2642452 https://github.com/strace/strace/releases/download/v6.13/strace-6.13.tar.xz
diff --git a/filelist.sha256 b/filelist.sha256
@@ -48,6 +48,7 @@ ff3ddd131d73fee6838b11a6c4773bdb85c5f60fdd4b9ac4120ced021c341417 files/noobjtoo
2a782825cd870e1fdf77a579c80701c0530bc6d8fa94100cab24bf31f0f457d3 files/s6_clone_newpid.patch
c7d3e7ef077d7673567d2f0c34ba2ebd689dab1250286ab482a3064c73ff7d7c files/s6_clone_newpid.patch.old
64488d8562a4e98a3b299f095bb2550cff6a3d743dc2b9c5aaeea03e5b83ec33 files/s6_ftrigr_max.patch
+37d93db7135d47852dbe763f1b18b3aeab142431a6f5268a17fc700387a326e4 files/strace-6.5-static.patch
07c3c30dab68c905d5608124e729592a30b2c087f24e7b76940f5321786128b1 files/update-links
664430d033e0b491a5ed90cb39cb17cddb57ac0be9f3f2bf014264f3c17d55df files/user-env
68140a82582ede938159630bca0fb13a93b4bf1cb2e85b08943c26242cf8f3a6 files/zpipe.c
diff --git a/files/strace-6.5-static.patch b/files/strace-6.5-static.patch
@@ -0,0 +1,178 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -54,6 +54,15 @@ AC_SUBST([STRACE_MANPAGE_DATE], [strace_manpage_date])
+ AC_DEFINE([SLM_MANPAGE_DATE], "[slm_manpage_date]", [Date])
+ AC_SUBST([SLM_MANPAGE_DATE], [slm_manpage_date])
+
++AC_ARG_ENABLE([static],
++ [AS_HELP_STRING([--enable-static],
++ [link strace statically])],
++ [], [enable_static=no])
++if test "$enable_static" = "yes"; then
++ # Add -pthread since strace wants -lrt for timer_create, and -lrt uses -lpthread.
++ LDFLAGS="$LDFLAGS -pthread -static"
++fi
++
+ AC_C_BIGENDIAN
+
+ dnl arch-specific default for --enable-gcc-Werror
+--- a/m4/st_libdw.m4
++++ b/m4/st_libdw.m4
+@@ -8,7 +8,6 @@
+ AC_DEFUN([st_ARG_LIBDW], [dnl
+
+ : ${libdw_CPPFLAGS=}
+-: ${libdw_CFLAGS=}
+ : ${libdw_LDFLAGS=}
+ : ${libdw_LIBS=}
+
+@@ -34,48 +33,14 @@ AC_DEFUN([st_LIBDW], [dnl
+ have_libdw=
+
+ AS_IF([test "x$with_libdw" != xno && test "x$use_unwinder" = x],
+- [saved_CPPFLAGS="$CPPFLAGS"
+- saved_CFLAGS="$CFLAGS"
+- CPPFLAGS="$CPPFLAGS $libdw_CPPFLAGS"
+- CFLAGS="$CFLAGS $libdw_CFLAGS"
+-
+- AC_CHECK_HEADERS([elfutils/libdwfl.h],
+- [AC_CHECK_LIB([dw], [dwfl_linux_proc_attach],
+- [libdw_LIBS="-ldw $libdw_LIBS"
+- AC_CACHE_CHECK([for elfutils version],
+- [st_cv_ELFUTILS_VERSION],
+- [[st_cv_ELFUTILS_VERSION="$(echo _ELFUTILS_VERSION |
+- $CPP $CPPFLAGS -P -imacros elfutils/version.h - |
+- grep '^[0-9]')"
+- test -n "$st_cv_ELFUTILS_VERSION" ||
+- st_cv_ELFUTILS_VERSION=0
+- ]]
+- )
+- AS_IF([test "$st_cv_ELFUTILS_VERSION" -ge 164],
+- [have_libdw=yes],
+- [AS_IF([test "x$with_libdw" = xyes],
+- [AC_MSG_ERROR([elfutils version >= 164 is required for stack tracing support])],
+- [AC_MSG_WARN([elfutils version >= 164 is required for stack tracing support])]
+- )
+- ]
+- )
+- ],
+- [AS_IF([test "x$with_libdw" = xyes],
+- [AC_MSG_FAILURE([failed to find dwfl_linux_proc_attach in libdw])],
+- )
+- ],
+- [$libdw_LDFLAGS $libdw_LIBS]
+- )
+- ],
+- [AS_IF([test "x$with_libdw" = xyes],
+- [AC_MSG_FAILURE([failed to find elfutils/libdwfl.h])]
+- )
+- ]
+- )
+-
+- CFLAGS="$saved_CFLAGS"
+- CPPFLAGS="$saved_CPPFLAGS"
+- ]
++ [if test "$enable_static" = "yes"; then
++ PKG_CHECK_MODULES_STATIC([LIBDW], [libdw >= 0.164])
++ else
++ PKG_CHECK_MODULES([LIBDW], [libdw >= 0.164])
++ fi
++ have_libdw=yes
++ libdw_CPPFLAGS="$LIBDW_CFLAGS"
++ libdw_LIBS="$LIBDW_LIBS"]
+ )
+
+ AS_IF([test "x$have_libdw" = xyes],
+@@ -84,7 +49,6 @@ AS_IF([test "x$have_libdw" = xyes],
+ [Whether to use libdw for stack tracing]
+ )
+ AC_SUBST(libdw_CPPFLAGS)
+- AC_SUBST(libdw_CFLAGS)
+ AC_SUBST(libdw_LDFLAGS)
+ AC_SUBST(libdw_LIBS)
+ ]
+--- a/m4/st_libunwind.m4
++++ b/m4/st_libunwind.m4
+@@ -28,64 +28,14 @@ AC_ARG_WITH([libunwind],
+ AC_DEFUN([st_LIBUNWIND], [dnl
+
+ AS_IF([test "x$with_libunwind" != xno && test "x$use_unwinder" = x],
+- [saved_CPPFLAGS="$CPPFLAGS"
+- CPPFLAGS="$CPPFLAGS $libunwind_CPPFLAGS"
+-
+- AC_CHECK_HEADERS([libunwind-ptrace.h],
+- [saved_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $libunwind_LDFLAGS"
+-
+- AC_CHECK_LIB([unwind], [backtrace],
+- [libunwind_LIBS="-lunwind $libunwind_LIBS"
+-
+- AC_MSG_CHECKING([for unw_create_addr_space in libunwind-generic])
+- saved_LIBS="$LIBS"
+- LIBS="-lunwind-generic $libunwind_LIBS $LIBS"
+-
+- AC_LINK_IFELSE(
+- [AC_LANG_PROGRAM([[#include <libunwind-ptrace.h>]],
+- [[return !unw_create_addr_space(0, 0)]])
+- ],
+- [AC_MSG_RESULT([yes])
+- libunwind_LIBS="-lunwind-generic $libunwind_LIBS"
+-
+- AC_CHECK_LIB([unwind-ptrace], [_UPT_create],
+- [libunwind_LIBS="-lunwind-ptrace $libunwind_LIBS"
+- use_unwinder=libunwind
+- ],
+- [if test "x$with_libunwind" != xcheck; then
+- AC_MSG_FAILURE([failed to find _UPT_create in libunwind-ptrace])
+- fi
+- ],
+- [$libunwind_LIBS]
+- )
+- ],
+- [AC_MSG_RESULT([no])
+- if test "x$with_libunwind" != xcheck; then
+- AC_MSG_FAILURE([failed to find unw_create_addr_space in libunwind-generic])
+- fi
+- ]
+- )
+-
+- LIBS="$saved_LIBS"
+- ],
+- [if test "x$with_libunwind" != xcheck; then
+- AC_MSG_FAILURE([failed to find libunwind])
+- fi
+- ],
+- [$libunwind_LIBS]
+- )
+-
+- LDFLAGS="$saved_LDFLAGS"
+- ],
+- [if test "x$with_libunwind" != xcheck; then
+- AC_MSG_FAILURE([failed to find libunwind-ptrace.h])
+- fi
+- ]
+- )
+-
+- CPPFLAGS="$saved_CPPFLAGS"
+- ]
++ [if test "$enable_static" = "yes"; then
++ PKG_CHECK_MODULES_STATIC([LIBUNWIND], [libunwind libunwind-generic libunwind-ptrace])
++ else
++ PKG_CHECK_MODULES([LIBUNWIND], [libunwind libunwind-generic libunwind-ptrace])
++ fi
++ use_unwinder="libunwind"
++ libunwind_CPPFLAGS="$LIBUNWIND_CFLAGS"
++ libunwind_LIBS="$LIBUNWIND_LIBS"]
+ )
+
+ if test "x$use_unwinder" = xlibunwind; then
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -417,7 +417,6 @@ libstrace_a_SOURCES += unwind.c unwind.h
+ if USE_LIBDW
+ libstrace_a_SOURCES += unwind-libdw.c
+ strace_CPPFLAGS += $(libdw_CPPFLAGS)
+-strace_CFLAGS += $(libdw_CFLAGS)
+ strace_LDFLAGS += $(libdw_LDFLAGS)
+ strace_LDADD += $(libdw_LIBS)
+ endif
diff --git a/templates/pkg/strace b/templates/pkg/strace
@@ -0,0 +1,19 @@
+{% extends "autotools" %}
+{%- block extra_deps %}
+#@untar:-J:sha256:e209daf0ee038ca5adcc4c277e9273b4d51f46a2ff86da575d36742ac3508a17:.
+#@sha256:{{files["strace-6.5-static.patch"]}}:strace-6.5-static.patch
+{%- endblock %}
+{% block at_script %}
+
+cd strace-6.13
+patch -p1 <../strace-6.5-static.patch
+autotools_static .
+check_static command/strace
+
+{% endblock %}
+{% block genlinks_begin %}
+ x["./command/strace"]=1
+ x["./command/strace-log-merge"]=1
+ x["./man/man1/strace.1"]=1
+ x["./man/man1/strace-log-merge.1"]=1
+{% endblock %}
diff --git a/templates/pkg/userspace.environment b/templates/pkg/userspace.environment
@@ -36,3 +36,4 @@
#+{{pkg_install_name("applyuidgid-caps")}}
#+{{pkg_install_name("ccx-utils")}}
#+{{pkg_install_name("user-env")}}
+#+{{pkg_install_name("strace")}}
diff --git a/variants/ccx-x86_64/default.environment b/variants/ccx-x86_64/default.environment
@@ -36,6 +36,7 @@
#+applyuidgid-caps.9856a13db04a0f0192c4208744de2c649db2ae721dc0d0dd37eb90346236a514
#+ccx-utils.ab28a8d701f60db69818ef22c546d02eca1ba3900bcdeaf5676bcc13d4b7f114
#+user-env.4e95a5387aa403e1d16a22254f21fb4cec046c69341a5eae764dd8126fb638a8
+#+strace.cc81fbf2fc935a0095fb897bdede54ade87180e04fd0ea0ef34c1daf0f78d33e
#+system-config.8b8a2b03a8f9bad97cf0a3db217832b54a3342816a7fb0c6bfb086547549de2c
#+system-config-rc.f1100a179601fb9629ec20a51431541d7092cfabd33ef8d9708e7767d315729f
#+system-config-scripts.bdedb957b96fc1efd8259d16dac786d1d9c220dcde66996a16688989f104925d
diff --git a/variants/ccx-x86_64/strace b/variants/ccx-x86_64/strace
@@ -0,0 +1,122 @@
+#!/usr/bin/env pthbs-build
+#+musl-cross-make.98979eb41109d371f19d0637d51116db18c7aeef61fbf804a68094c22a302a78
+#+gnu-make.ba8d7c64a23885182fc1c9dc0331d52adcdbc45df6000fb81e8e1dd3ee05694b
+#+busybox.ee3440974794767b833fd3299226771f170d3f8601cf225cb884f0a513db8ab3
+#+busybox-diffutils.c2ebcfcad050ad71b8e30322a463b5c009f254c7a42e95c627d32665e17134dc
+#+m4.46e121f61e0af52abf876bf2688ecfe70eeb04185028d6adde0085e865fdfe75
+#@untar:-J:sha256:e209daf0ee038ca5adcc4c277e9273b4d51f46a2ff86da575d36742ac3508a17:.
+#@sha256:37d93db7135d47852dbe763f1b18b3aeab142431a6f5268a17fc700387a326e4:strace-6.5-static.patch
+
+build_env_static() {
+ export LD_LIBRARY_PATH="$pthbs_build_environment/library"
+ export CPATH="$pthbs_build_environment/include"
+ export LDFLAGS="-static -L$pthbs_build_environment/library $LDFLAGS"
+}
+autotools_config() {
+ prefix=/home/ccx/versions/$pthbs_package
+ ./configure -C \
+ --prefix="$prefix" \
+ --build="$(${CC:-gcc} -dumpmachine)" \
+ --bindir="$prefix/command" \
+ --sbindir="$prefix/command" \
+ --infodir="$prefix/info" \
+ --localedir="$prefix/locale" \
+ --mandir="$prefix/man" \
+ --libdir="$prefix/library" \
+ --docdir="$prefix/doc/strace" \
+ --datadir="$prefix/data" \
+ --datarootdir="$prefix/data" \
+ --localstatedir='/var/pthbs' \
+ "$@"
+
+}
+
+autotools() {
+ cd "$1"
+ shift
+ autotools_config "$@"
+ make -j${JOBS:-1} -l$((1+${JOBS:-1}))
+ make DESTDIR="$pthbs_destdir" install
+}
+
+autotools_static() {
+ build_env_static
+ autotools "$@" --enable-static --disable-shared
+}
+check_static() {
+ local exe || true
+ exe=$pthbs_destdir/'/home/ccx/versions'/$pthbs_package/$1
+ if ! test -f $exe; then
+ printf '%s\n' "Error: file '$1' doesn't exist!"
+ exit 1
+ fi
+ interp_info=$(readelf --string-dump=.interp "$exe") || exit $?
+ if test x '!=' "x$interp_info"; then
+ printf '%s\n' "Error: '$1' is a dynamic binary!"
+ exit 1
+ fi
+}
+
+
+cd strace-6.13
+patch -p1 <../strace-6.5-static.patch
+autotools_static .
+check_static command/strace
+
+
+
+cd "$pthbs_destdir/home/ccx/versions/$pthbs_package"
+find -type d -o -print | awk -F/ '
+BEGIN {
+ x["./command/strace"]=1
+ x["./command/strace-log-merge"]=1
+ x["./man/man1/strace.1"]=1
+ x["./man/man1/strace-log-merge.1"]=1
+}
+
+function r1(s) {
+ sub("^[.]/[^/]*", ".", s)
+ return s
+}
+function s1(repl, s) {
+ sub("^[.]/[^/]*", "./"repl, s)
+ return s
+}
+function link(src) {
+ x[$0]=0
+ printf "%s\t%s\n", $0, src
+ printf "genlinks >>%s\t%s<<\n", $0, src >>"/dev/stderr"
+}
+$1!="."{exit 1}
+
+
+$2 == "command" { link($0); next }
+$2 == "bin" { link(s1("command", $0)); next }
+
+$2 == "library.so" { link($0); next }
+$2 == "library" { link($0); next }
+$2 == "lib" && $NF ~ /\.l?a$/ { link(s1("library", $0)); next }
+$2 == "lib" && $NF ~ /\.so(|\..*)$/ { link(s1("library.so", $0)); next }
+
+$2 == "share" && $3 ~ /^(info|man|doc|icons|terminfo)$/ { link(r1($0)); next }
+
+$2 == "man" { link($0); next }
+$2 == "info" { link($0); next }
+$2 == "doc" { link($0); next }
+$2 == "icons" { link($0); next }
+$2 == "terminfo" { link($0); next }
+$2 == "data" { link($0); next }
+$2 == "include" { link($0); next }
+
+{ printf "genlinks ##%s## skipped\n", $0 >>"/dev/stderr" }
+
+END {
+ for(fname in x) { printf "DEBUG: x[\"%s\"]=\"%s\"\n", fname, x[fname] >"/dev/stderr" }
+ for(fname in x) {
+ if(x[fname]) {
+ printf "ERROR: missing expected file \"%s\"\n", fname >"/dev/stderr"
+ exit 3
+ }
+ }
+}' >.install-links.new
+mv .install-links.new .install-links
diff --git a/variants/ccx-x86_64/userspace.environment b/variants/ccx-x86_64/userspace.environment
@@ -35,4 +35,5 @@
#+libcap.4b28b26ba2d2086e58476a4629bc9bc939bd7326eae233dd9066fbec00a93aca
#+applyuidgid-caps.9856a13db04a0f0192c4208744de2c649db2ae721dc0d0dd37eb90346236a514
#+ccx-utils.ab28a8d701f60db69818ef22c546d02eca1ba3900bcdeaf5676bcc13d4b7f114
-#+user-env.4e95a5387aa403e1d16a22254f21fb4cec046c69341a5eae764dd8126fb638a8-
\ No newline at end of file
+#+user-env.4e95a5387aa403e1d16a22254f21fb4cec046c69341a5eae764dd8126fb638a8
+#+strace.cc81fbf2fc935a0095fb897bdede54ade87180e04fd0ea0ef34c1daf0f78d33e+
\ No newline at end of file
diff --git a/variants/root-x86_64/default.environment b/variants/root-x86_64/default.environment
@@ -36,6 +36,7 @@
#+applyuidgid-caps.2d571b717bda734b4464e7d3b36bb2c9eaa265fffd595bc090cbb137258121b8
#+ccx-utils.ccaa449ada3142ef075f3c80a6e475520219814490557f308ded4685231a70ac
#+user-env.8ad55eebe32b11f005f7b5c6dc204fdccc0a53cd7294f87c1e959ea47793dbca
+#+strace.1659a9b65df7c6e6a611ff62e3a5e59d3197f51f1d3fe7e1108ecfbfc23efb55
#+system-config.db2dff20fd0bda4dc1fedd9697304907d9eb143f1c6df0e733e1724a595250e3
#+system-config-rc.8f334e9cbdafc74e6fc7257996dc0fa8200054ec285bdb3901450467d9e52b58
#+system-config-scripts.4c00e32b8c4f6feef53b562356abd54830cc7e889149e4f8bcb928d6e6e93378
diff --git a/variants/root-x86_64/strace b/variants/root-x86_64/strace
@@ -0,0 +1,122 @@
+#!/usr/bin/env pthbs-build
+#+musl-cross-make.d0431fc0def788be03da43136972361827de52c8e6f0a6f3890dc57fe32e8ecc
+#+gnu-make.444e811a68f4f16724e21354b710fad3592e53a2dbf7c0c78658f3d4e7c8e465
+#+busybox.f4ef3d511c029095beda8d21dd48f7730bec63fb09792ca951402d6620338089
+#+busybox-diffutils.4a0933977737282afcd82b39d435b50946a700fe13472d24e4580a41fa852123
+#+m4.3cffaef6909a65493ddc9aba4c53f77dc594ff5ab8b58c57acaa34c654b09ff3
+#@untar:-J:sha256:e209daf0ee038ca5adcc4c277e9273b4d51f46a2ff86da575d36742ac3508a17:.
+#@sha256:37d93db7135d47852dbe763f1b18b3aeab142431a6f5268a17fc700387a326e4:strace-6.5-static.patch
+
+build_env_static() {
+ export LD_LIBRARY_PATH="$pthbs_build_environment/library"
+ export CPATH="$pthbs_build_environment/include"
+ export LDFLAGS="-static -L$pthbs_build_environment/library $LDFLAGS"
+}
+autotools_config() {
+ prefix=/versions/$pthbs_package
+ ./configure -C \
+ --prefix="$prefix" \
+ --build="$(${CC:-gcc} -dumpmachine)" \
+ --bindir="$prefix/command" \
+ --sbindir="$prefix/command" \
+ --infodir="$prefix/info" \
+ --localedir="$prefix/locale" \
+ --mandir="$prefix/man" \
+ --libdir="$prefix/library" \
+ --docdir="$prefix/doc/strace" \
+ --datadir="$prefix/data" \
+ --datarootdir="$prefix/data" \
+ --localstatedir='/var/pthbs' \
+ "$@"
+
+}
+
+autotools() {
+ cd "$1"
+ shift
+ autotools_config "$@"
+ make -j${JOBS:-1} -l$((1+${JOBS:-1}))
+ make DESTDIR="$pthbs_destdir" install
+}
+
+autotools_static() {
+ build_env_static
+ autotools "$@" --enable-static --disable-shared
+}
+check_static() {
+ local exe || true
+ exe=$pthbs_destdir/'/versions'/$pthbs_package/$1
+ if ! test -f $exe; then
+ printf '%s\n' "Error: file '$1' doesn't exist!"
+ exit 1
+ fi
+ interp_info=$(readelf --string-dump=.interp "$exe") || exit $?
+ if test x '!=' "x$interp_info"; then
+ printf '%s\n' "Error: '$1' is a dynamic binary!"
+ exit 1
+ fi
+}
+
+
+cd strace-6.13
+patch -p1 <../strace-6.5-static.patch
+autotools_static .
+check_static command/strace
+
+
+
+cd "$pthbs_destdir/versions/$pthbs_package"
+find -type d -o -print | awk -F/ '
+BEGIN {
+ x["./command/strace"]=1
+ x["./command/strace-log-merge"]=1
+ x["./man/man1/strace.1"]=1
+ x["./man/man1/strace-log-merge.1"]=1
+}
+
+function r1(s) {
+ sub("^[.]/[^/]*", ".", s)
+ return s
+}
+function s1(repl, s) {
+ sub("^[.]/[^/]*", "./"repl, s)
+ return s
+}
+function link(src) {
+ x[$0]=0
+ printf "%s\t%s\n", $0, src
+ printf "genlinks >>%s\t%s<<\n", $0, src >>"/dev/stderr"
+}
+$1!="."{exit 1}
+
+
+$2 == "command" { link($0); next }
+$2 == "bin" { link(s1("command", $0)); next }
+
+$2 == "library.so" { link($0); next }
+$2 == "library" { link($0); next }
+$2 == "lib" && $NF ~ /\.l?a$/ { link(s1("library", $0)); next }
+$2 == "lib" && $NF ~ /\.so(|\..*)$/ { link(s1("library.so", $0)); next }
+
+$2 == "share" && $3 ~ /^(info|man|doc|icons|terminfo)$/ { link(r1($0)); next }
+
+$2 == "man" { link($0); next }
+$2 == "info" { link($0); next }
+$2 == "doc" { link($0); next }
+$2 == "icons" { link($0); next }
+$2 == "terminfo" { link($0); next }
+$2 == "data" { link($0); next }
+$2 == "include" { link($0); next }
+
+{ printf "genlinks ##%s## skipped\n", $0 >>"/dev/stderr" }
+
+END {
+ for(fname in x) { printf "DEBUG: x[\"%s\"]=\"%s\"\n", fname, x[fname] >"/dev/stderr" }
+ for(fname in x) {
+ if(x[fname]) {
+ printf "ERROR: missing expected file \"%s\"\n", fname >"/dev/stderr"
+ exit 3
+ }
+ }
+}' >.install-links.new
+mv .install-links.new .install-links
diff --git a/variants/root-x86_64/userspace.environment b/variants/root-x86_64/userspace.environment
@@ -35,4 +35,5 @@
#+libcap.66ba1f95782e8619e1ec2189653a79f3105901a0c25a4ad2ed3694f0bbe292ea
#+applyuidgid-caps.2d571b717bda734b4464e7d3b36bb2c9eaa265fffd595bc090cbb137258121b8
#+ccx-utils.ccaa449ada3142ef075f3c80a6e475520219814490557f308ded4685231a70ac
-#+user-env.8ad55eebe32b11f005f7b5c6dc204fdccc0a53cd7294f87c1e959ea47793dbca-
\ No newline at end of file
+#+user-env.8ad55eebe32b11f005f7b5c6dc204fdccc0a53cd7294f87c1e959ea47793dbca
+#+strace.1659a9b65df7c6e6a611ff62e3a5e59d3197f51f1d3fe7e1108ecfbfc23efb55+
\ No newline at end of file