Hello, especially those who add some kind of tweaks to poudriere :)

In my case, I try to make it a hook script first, so it is not affected by 
errexit of shell.
However, when modifying poudriere to incorporate the codes, some tmpfs are not 
mounted depending on USE_TMPFS value, so poudriere exits with an error when 
trying to handle them.

So I will post a revised version of the hook script that includes ideas to 
counteract that, including this one.
The file should be placed in a location that will be erased by 
poudriere-logclean. That would require another step to collect the results...
I don't know if multiple concurrent executions of it will occur, but even if it 
does, it has been changed to work exclusively.
And I am trying to use jq to get and add numbers.

If you see a point that you think is an interesting idea, cut it out and use it 
:)

Regards.

Below is the script.

#!/bin/sh
case "${0##*/}" in
pkgbuild.sh)
        case "${1}" in  # (
        success|failed)
                if ! [ ${LOCKF_HOOK_TMPFS:+1} ] ; then
                        shopt="${-}"
                        LOCKF_HOOK_TMPFS=1 lockf -k "${LOG}/.tmpfs.log" /bin/sh 
${shopt:+"-${-}"} "${0}" ${1+"${@}"}
                elif [ ${MY_JOBID:+1} ] ; then
                        # jq was installed by package textproc/jq
                        if JQ=$(which jq 2>&${OUTPUT_REDIRECTED_STDERR:-2}) ; 
then
                                realpath=$(realpath 
"${MASTERMNT}/../${MY_JOBID}/")
                                pour_xo_sauce_on_df=$(
                                        mount -t tmpfs -p |
                                        cut -f 2 -w |
                                        grep -e "^${realpath}" |
                                        xargs df -b --libxo json |
                                        ${JQ} -c -r 
'[.["storage-system-information"].filesystem[].["used-blocks"]]|add//-0'
                                        )
                                tmpfs_at_end=$(
                                        echo "${pour_xo_sauce_on_df}" |
                                        awk '{ x += $0; } END { printf "%s %.2f 
%s", "TMPFS:", x*512/(1024**3), "GiB" }'
                                        )
                        elif ! tmpfs_at_end="$(env BLOCKSIZE=512 df -t tmpfs \
                                        ${MASTERMNT}/../${MY_JOBID}/ \
                                        ${MASTERMNT}/../${MY_JOBID}/.p/ \
                                        ${MASTERMNT}/../${MY_JOBID}/usr/local/ \
                                        2>/dev/null | tail -3 \
                                        | awk '{ tmpfs_use += $3; } END { 
printf "%s %.2f %s", "TMPFS:", tmpfs_use*512/(1024**3), "GiB" }')" ; then
                                tmpfs_at_end="TMPFS: -0. GiB"
                        fi
                        if true ; then
                                # output to stdout
                                echo "${2} | ${3}: ${tmpfs_at_end}" 
>&${OUTPUT_REDIRECTED_STDOUT:-1}
                        fi
                        if false ; then
                                # output to stderr
                                echo "${2} | ${3}: ${tmpfs_at_end}" 
>&${OUTPUT_REDIRECTED_STDERR:-2}
                        fi
                        if true && [ ${OUTPUT_REDIRECTED:-0} -eq 1 ] ; then
                                # output to ${LOG}/logs/${3}.log file
                                echo "${tmpfs_at_end}" >&2
                        fi
                        if true ; then
                                # append to file
                                echo "${2} | ${3}: ${tmpfs_at_end}" 
>>"${LOG}/.tmpfs.log"
                        fi
                fi
                ;;      # (
        *)
        esac
        ;;      # (
*)
esac
return 0
# end of script


Reply via email to