On Mon, Dec 20, 2021 at 12:05:11AM +0100, Omar Polo wrote: > Klemens Nanni <[email protected]> writes: > > > On Sun, Dec 19, 2021 at 08:41:01PM +0000, Klemens Nanni wrote: > >> This is the last dependency for our telegram desktop ports. > >> They ship a bundled version which also works but I figured using proper > >> ports where possible is best, so here it is. > >> > >> Information for inst:openh264-2.1.1 > >> > >> Comment: > >> Cisco implementation of H.264 codec > >> > >> Required by: > >> tg_owt-0.0.0.20211212 > >> > >> 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. > >> > >> Maintainer: Klemens Nanni <[email protected]> > >> > >> WWW: https://github.com/cisco/openh264 > >> > >> Enabling tests and using gtest from ports took a while, but I managed to > >> do so without patching, which seems rather nice. > >> > >> [==========] 453 tests from 60 test cases ran. (207344 ms total) > >> [ PASSED ] 448 tests. > >> [ FAILED ] 5 tests, listed below: > >> > >> Builds and tests fine on amd64 and sparc64. > >> > >> The initial port was done with Andrew Krasavin. > >> > >> Feedback? OK? > > > > New tarball with HOMEPAGE set to https://www.openh264.org/ and > > PATCHFILES adding the commit id into the distname, i.e. > > > > -SIZE (openh264-frame-reorder-fix.patch) = 1151 > > +SIZE (openh264-frame-reorder-fix-6cc269be.patch) = 1151 > > > make port-lib-depends-check complains WANTLIB += c for h265enc
Thanks, I added the programs after creating wantlib.
>
> With CFLAGS_OPT='${CFLAGS}' the cflags are appended *twice*, i.e.
>
> > c++ -O2 -pipe -O2 -pipe -DNDEBUG ...
>
> so I'd set CFLAGS_OPT='' instead.
Yeah, doesn't hurt but ugly. I've confirmed that we can just set empty
both CFLAGS_OPT and CFLAGS_DEBUG and have our CFLAGS value take care of
the rest.
> Setting prefix explicitly in MAKE_FLAGS seems redundant too.
The port defaults to /usr/local, I'm happy to rely on that.
>
> > # C++ devel/gtest
> > COMPILER = base-clang ports-gcc
>
> I'm not sure what that means. At glance I can't really tell the minimum
> C++ version this needs, but since you've tested on sparc64 (which is
> a gcc arch IIRC) I assume it doesn't build with base gcc and thus it's
> at least C++11.
`make build' works on sparc64 with gcc 4.2.1 but `make test' builds
against the gtest c++ headers and fails, hence the need for a newer
compiler, but only due to tests.
I tried clarifying that.
>
> pkg/PLIST:
> > @so lib/libopenh264.so
> > lib/libopenh264.so.0
> > @lib lib/libopenh264.so.${LIBopenh264_VERSION}
>
> that doesn't look right, it should install only the last file. I
> haven't found an obvious way to avoid that other than patching out a
> couple of lines from the makefile.
Yes, most ports ship a single file but we do have ports that contain
symlinks, so I did not outright reject it.
I tried improving it but did get anywhere and the ports using openh264
do work, so...
>
> I tried it i386 too because it seems to be treated differently in the
> build, there are a lot of ifeq $(ARCH), x86 and there are some issue
> there:
>
> - the build fails because it uses nasm. I tried to use ASM=${CC} but
> then it complains about:
>
> >codec/common/x86/deblock.asm:601:20: error: invalid operand for instruction
> > movd xmm7, arg4d
> > ^~~~~
>
> so I added devel/nasm as BDEP for i386.
>
> - it enables avx2. I don't know what's going on, I have an i386 that
> should lack avx/avx2 (it's a pentium T2130) but the port builds and
> the test situation is the same as on amd64: 628 tests pass and 5
> fails.
>
> - it fails at linking, needs -Wl,-z,notext
Thanks, I squashed your i386 specific code into one block and made it
amend our LDFLAGS which is now unconditionally passed to the port.
>
> For the record, I tried to build it using meson since upstream ships a
> meson.build file, but quickly surrendered. The the meson.build file
> needs some serious tweaking because it supports only linux and windows
> on i386/amd64 and throws errors otherwise.
I never tried that, the Makefile was good enough and has less
dependencies.
>
> I'm attaching a tarball with everything beside the avx2 stuff addressed,
No idea about i386, really; I wouldn't treat it as a blocker, either.
> if you agree on the changes it's OK op@ to import. I'm attaching also a
> diff against your makefile for clarity.
Thanks. I have left out your LOCALBASE addition; using the default
PREFIX=/usr/local but keeping the include path modular makes no sense.
It depends on how gtest was built anyway... this PREFIX/LOCALBASE thing
is nothing but handwaving, so I'd like to hardcode things in new ports
(of mine), which seemed to be the rough consensus of porters anyway.
>
> Thanks,
>
> Omar Polo
>
>
> P.S.: there's an extra `getf' file (a diff?) in the tarball, make sure
> to remove that before importing :)
Done.
Feedback? OK?
I'll do an arm64 build soon.
openh264.tgz
Description: Binary data
