On Tue, 21 Feb 2023 14:11:46 +0000
Jon Turney wrote:
> On 20/02/2023 08:55, Takashi Yano via Cygwin-apps wrote:
> > On Sun, 19 Feb 2023 15:37:47 +0000
> > Jon Turney wrote:
> [...]>> * I don't think you should need:
> >>
> >>> # Install postinstall/preremove scripts
> >>> mkdir -p ${D}/etc/postinstall ${D}/etc/preremove
> >>> cp ${C}/lib${NAME}.postinstall ${D}/etc/postinstall/lib${NAME}.sh
> >>> cp ${C}/lib${NAME}.preremove ${D}/etc/preremove/lib${NAME}.sh
> >>>
> >>
> >> This should happen automatically if the files are in $C (and you can
> >> list them in CYGWIN_FILES or make them with cygwin.patch file to put
> >> them there)
> >
> > That's what I understood from
> > https://cygwin.github.io/cygport/masterindex.html,
> > however, actually libopenh264.{postinstall,preremove} are
> > not installed during install process by cygport 0.36.0
> > even though openh264-2.3.1-1.cygwin.patch exists.
> >
> > Could you please give me a hint how I can make it work?
>
> Aha! This is a bug in cygport.
>
> (There's some code which skips over doing this for the first item in
> PKG_NAMES, assuming that is always the same as PN, which has already
> been done)
>
> Thanks for drawing that to my attention. I'll look into fixing it, but
> for the moment it seems you can workaround the bug by ensuring that the
> package with premove/postinstall scripts isn't first in that list, i.e.:
>
> - PKG_NAMES="libopenh264 libopenh264-headers"
> + PKG_NAMES="libopenh264-headers libopenh264"
Thanks! It works.
I updated the cygport file and cygwin.patch.
--
Takashi Yano <[email protected]>
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 -p ${NAME}-${VERSION}
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 1 ] # Source file is
dummy
then
NV=${NAME}-${VERSION}
pushd ..
# Download original source file.
wget -q
https://github.com/cisco/openh264/archive/refs/tags/v${VERSION}.tar.gz -O - |
tar xzf -
# Make source tarball 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-headers libopenh264"
libopenh264_CATEGORY="Video Libs"
libopenh264_CONTENTS="etc/ usr/share/"
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/.
# Get license file
mkdir -p ${D}/usr/share/doc/lib${NAME}
if ! wget -q http://www.openh264.org/BINARY_LICENSE.txt -O - >
${D}/usr/share/doc/lib${NAME}/BINARY_LICENSE.txt
then
echo "Need internet access!!!"
exit 1
fi
mkdir -p ${D}/etc/lib${NAME}
# Make sha256 hash
wget -q
http://ciscobinary.openh264.org/${NAME}-${VERSION}-win64.dll.bz2 -O - | bunzip2
| sha256sum | sed "s/-$/${NAME}-${VERSION}-win64.tmp/" >
${D}/etc/lib${NAME}/${NAME}-${VERSION}-win64.dll.sha256
wget -q
http://ciscobinary.openh264.org/${NAME}-${VERSION}-win32.dll.bz2 -O - | bunzip2
| sha256sum | sed "s/-$/${NAME}-${VERSION}-win32.tmp/" >
${D}/etc/lib${NAME}/${NAME}-${VERSION}-win32.dll.sha256
# Make version text
echo ${VERSION} > ${D}/etc/lib${NAME}/version.txt
}
--- origsrc/openh264-2.3.1/CYGWIN-PATCHES/libopenh264.postinstall
1970-01-01 09:00:00.000000000 +0900
+++ src/openh264-2.3.1/CYGWIN-PATCHES/libopenh264.postinstall 2023-02-17
12:36:27.633701700 +0900
@@ -0,0 +1,18 @@
+if [ $(uname -m) = "x86_64" ]
+then
+ POSTFIX="win64"
+else
+ POSTFIX="win32"
+fi
+VERSION=$(cat /etc/libopenh264/version.txt)
+cd /tmp
+wget -q http://ciscobinary.openh264.org/openh264-${VERSION}-${POSTFIX}.dll.bz2
-O - | bunzip2 > openh264-${VERSION}-${POSTFIX}.tmp
+if sha256sum --status -c
/etc/libopenh264/openh264-${VERSION}-${POSTFIX}.dll.sha256
+then
+ mv openh264-${VERSION}-${POSTFIX}.tmp /usr/bin/libopenh264.dll
+else
+ # Hash mismatch (or failed to download)
+ rm openh264-${VERSION}-${POSTFIX}.tmp
+ exit 1
+fi
+chmod a+x /usr/bin/libopenh264.dll
--- origsrc/openh264-2.3.1/CYGWIN-PATCHES/libopenh264.preremove 1970-01-01
09:00:00.000000000 +0900
+++ src/openh264-2.3.1/CYGWIN-PATCHES/libopenh264.preremove 2023-02-17
12:14:05.806697700 +0900
@@ -0,0 +1 @@
+rm -f /usr/bin/libopenh264.dll