summaryrefslogtreecommitdiff
path: root/share/sfpm/pkg_read.sh
blob: 68f073a8780565705f90ee9dc710f25c750d90f3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function sfpm_package_exists() {
    # Returns empty string on failure (implicit)
    local path="${sfpm_pkgdir}/${1}"
    if [[ ! -f ${path} ]]; then
        return 1
    fi
    echo ${path}
}

function sfpm_package_verify() {
    local name="$(basename ${1})"
    local path="${sfpm_pkgdir}/${name}"

    if [[ ! -f $(sfpm_package_exists ${name}) ]]; then
        msg_error "sfpm_package_verify(): Package does not exist: ${path}"
        exit 1
    fi

    local vdir=$(mktemp -d ${TMPDIR}/sfpm.verify.XXXXXX)
    pushd "${vdir}"
        msg2 "Verifying Package: ${name}"
        tar -xf "${path}"

        while read line
        do
            msg3 "${line}"
        done < <(sha256sum -c .SFPM-MANIFEST)

        while read line
        do
            msg3 "${line}"
        done < <(find . -type f | xargs file | grep ELF | awk -F':' '{ print $1 }' | xargs readelf -d | grep rpath)
    popd
    if [[ -d ${vdir} ]] && [[ ${vdir} == *${TMPDIR}* ]]; then
        rm -rf "${vdir}"
    fi
}