On Tue, 14 Feb 2023 17:41:16 +0100
ASSI wrote:
> Takashi Yano via Cygwin-apps writes:
> > Thanks for the advice. I have revised the cygport file.
> 
> You are getting the file and the hash from the same unprotected source.
> I was thinking you should put the hash into the cygport file and hence
> the postinstall script.
> 
> Also note that the system doing the postinstall will not necessarily
> have internet access, so you'll need to cope with errors that will
> produce.

Thanks.

The new cygport file attached downloads md5hash during
the packaging process and embeds it into postinstall
script. Does this make sense?

-- 
Takashi Yano <takashi.y...@nifty.ne.jp>
NAME="openh264"
VERSION=2.3.1
RELEASE=1
CATEGORY="Video"
SUMMARY="H.264 codec library by Cisco"
DESCRIPTION="OpenH264 is a codec library which supports H.264 encoding and 
decoding. It is suitable for use in real time applications such as WebRTC. The 
binary library (runtime) itself will be downloaded from 
http://ciscobinary.openh264.org/";
HOMEPAGE="https://www.openh264.org/";
LICENSE="BSD-2-Clause"
ARCH="noarch" # This is noarch because it's just header files and shell scrpits.

SRC_URI="${NAME}-headers-${VERSION}.tar.xz"

# Make dummy source file for prep if the cleaned one is not exist.
if [ ! -f ${SRC_URI} ]
then
        mkdir ${NAME}-${VERSION}
        touch ${NAME}-${VERSION}/dummy
        tar acf ${SRC_URI} ${NAME}-${VERSION}
        rm -rf ${NAME}-${VERSION}
fi

CYGPORT_USE_UNSTABLE_API=1
src_unpack_hook() {
        if [ $(tar tvf ../../../${SRC_URI} | wc -l)  -eq 2 ] # Source file is 
dummy
        then
                NV=${NAME}-${VERSION}
                pushd ..
                rm -rf ${NV} # Remove dummy source file.
                # Download original source file.
                wget 
https://github.com/cisco/openh264/archive/refs/tags/v${VERSION}.tar.gz
                tar xf v${VERSION}.tar.gz
                rm -f v${VERSION}.tar.gz
                # Make source file which has only necessary header files.
                tar acf ../../${NAME}-headers-${VERSION}.tar.xz 
${NV}/codec/api/wels/*.h
                # Update source directory.
                rm -rf ${NV}
                tar xf ../../${NAME}-headers-${VERSION}.tar.xz
                popd
        fi
}
        
PKG_NAMES="libopenh264 libopenh264-headers"
libopenh264_CATEGORY="Video Libs"
libopenh264_CONTENTS="etc/"
libopenh264_REQUIRES="wget bzip2"
libopenh264_SUMMARY="H.264 codec library runtime by Cisco"
libopenh264_headers_CATEGORY="Video Devel"
libopenh264_headers_CONTENTS="usr/include"
libopenh264_headers_SUMMARY="H.264 codec library headers"

src_compile() {
        :
}

src_install() {
        mkdir -p ${D}/usr/include
        ln -fs ${S}/codec/api/wels ${D}/usr/include/.
        mkdir -p ${D}/etc/postinstall
        MD5HASH64=$(wget -q 
http://ciscobinary.openh264.org/${NAME}-${VERSION}-win64.dll.signed.md5.txt -O 
- | sed "s/dll$/tmp/")
        MD5HASH32=$(wget -q 
http://ciscobinary.openh264.org/${NAME}-${VERSION}-win32.dll.signed.md5.txt -O 
- | sed "s/dll$/tmp/")
        if [ ! "${MD5HASH64}" -o ! "${MD5HASH32}" ]
        then
                echo "Need internet access!!!"
                exit 1
        fi
        cat << _EOF_ > ${D}/etc/postinstall/lib${NAME}.sh
#!/bin/sh
pushd /tmp
if [ \$(uname -m) = "x86_64" ]
then
        POSTFIX="win64"
        MD5HASH="${MD5HASH64}"
else
        POSTFIX="win32"
        MD5HASH="${MD5HASH32}"
fi
wget -q http://ciscobinary.openh264.org/${NAME}-${VERSION}-\${POSTFIX}.dll.bz2 
-O - | bunzip2 > ${NAME}-${VERSION}-\${POSTFIX}.tmp
if echo "\${MD5HASH}" | md5sum --status -c
then
        mv ${NAME}-${VERSION}-\${POSTFIX}.tmp /usr/bin/libopenh264.dll
else
        # Hash mismatch (or failed to download)
        rm ${NAME}-${VERSION}-\${POSTFIX}.tmp
        exit 1
fi
popd
chmod a+x /usr/bin/libopenh264.dll
mkdir -p /usr/share/doc/lib${NAME}
wget -q http://www.openh264.org/BINARY_LICENSE.txt -O - > 
/usr/share/doc/lib${NAME}/BINARY_LICENSE.txt
_EOF_
        chmod a+x ${D}/etc/postinstall/lib${NAME}.sh
        mkdir -p ${D}/etc/preremove
        cat << _EOF_ > ${D}/etc/preremove/lib${NAME}.sh
#!/bin/sh
rm -rf /usr/bin/libopenh264.dll /usr/share/doc/lib${NAME}
_EOF_
        chmod a+x ${D}/etc/preremove/lib${NAME}.sh
}

Reply via email to