Bug 233137

Summary: multimedia/gstreamer1-libav: fails to build with FFMPEG=OFF on aarch64: gas-preprocessor.pl is missing from distfile
Product: Ports & Packages Reporter: Jan Beich <jbeich>
Component: Individual Port(s)Assignee: freebsd-multimedia (Nobody) <multimedia>
Status: Closed FIXED    
Severity: Affects Only Me CC: linimon, mikael
Priority: --- Keywords: needs-qa, regression
Version: LatestFlags: bugzilla: maintainer-feedback? (multimedia)
Hardware: Any   
OS: Any   
Bug Depends on:    
Bug Blocks: 231406    
Attachments:
Description Flags
patch none

Description Jan Beich freebsd_committer freebsd_triage 2018-11-11 13:13:32 UTC
aarch64 doesn't have GNU as(1) in base system.

  GNU assembler not found, install/update gas-preprocessor
  [...]
  gas-preprocessor.pl -arch aarch64 -as-type -- /usr/local/bin/as -v
  ./configure: gas-preprocessor.pl: not found
  check_gas using '/usr/local/bin/as' as AS
  check_as
  BEGIN /tmp/ffconf.IuZ0hH89/test.S
      1	.macro m n, y:vararg=0
      2	\n: .int \y
      3	.endm
      4	m x
  END /tmp/ffconf.IuZ0hH89/test.S

http://thunderx1.nyi.freebsd.org/data/112arm64-default/484272/logs/errors/gstreamer1-libav-1.14.4.log

Previously, the port built fine
http://thunderx1.nyi.freebsd.org/data/112arm64-default/483081/logs/gstreamer1-libav-1.12.3_2.log
Comment 1 Jan Beich freebsd_committer freebsd_triage 2018-11-11 13:25:19 UTC
According to configure from libav gas-preprocessor.pl may also be used on arm* and powerpc with altivec.
Comment 2 Jan Beich freebsd_committer freebsd_triage 2018-11-11 15:47:05 UTC
- Builds fine on aarch64 after ports r484697: https://ptpb.pw/G7Kn
- Still an issue for bundled ffmpeg
Comment 3 Mikael Urankar freebsd_committer freebsd_triage 2018-11-11 18:01:15 UTC
Created attachment 199145 [details]
patch
Comment 4 Mikael Urankar freebsd_committer freebsd_triage 2018-11-11 18:02:01 UTC
(In reply to Jan Beich from comment #2)
I'm testing the attached patch, it builds fine on aarch64. I've just launched a build on armv7 and it's building llvm :/
Comment 5 Jan Beich freebsd_committer freebsd_triage 2018-11-11 18:52:11 UTC
Comment on attachment 199145 [details]
patch

aarch64 is indeed fixed, armv6 is green but build failed on
13.0 armv7 (clang 7.0.1): https://ptpb.pw/IHaC

Looks like Clang assembler doesn't grok .gn directive:

  $ echo 'x .dn d2.f32' | clang -c -x assembler - -o /dev/null -target armv7-unknown-freebsd13.0-gnueabihf
  <stdin>:1:7: error: unexpected token in argument list
  x .dn d2.f32
	^
https://sourceware.org/binutils/docs/as/ARM-Directives.html
Comment 6 Jan Beich freebsd_committer freebsd_triage 2018-11-11 19:01:22 UTC
Doh, upstream has a fix.
https://trac.ffmpeg.org/ticket/6904
https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/f33f72847043

$ git describe --contains f33f72847043
n4.0~204
Comment 7 Jan Beich freebsd_committer freebsd_triage 2018-11-11 19:27:04 UTC
Comment on attachment 199145 [details]
patch

>+     freebsd)
>++        enable section_data_rel_ro

What is this for? Builds fine without:
11.2 aarch64: https://ptpb.pw/awjz
11.2 armv6:   https://ptpb.pw/LFNH
13.0 aarch64: https://ptpb.pw/cfHn
13.0 armv7:   https://ptpb.pw/IBVs

I didn't test 12.0 or 13.0 armv6 though but the results are unlikely to differ.
Comment 8 Mikael Urankar freebsd_committer freebsd_triage 2018-11-11 19:31:35 UTC
(In reply to Jan Beich from comment #7)
I wanted to remove LLD UNSAFE
Comment 9 commit-hook freebsd_committer freebsd_triage 2018-11-11 19:49:58 UTC
A commit references this bug:

Author: jbeich
Date: Sun Nov 11 19:49:22 UTC 2018
New revision: 484762
URL: https://svnweb.freebsd.org/changeset/ports/484762

Log:
  multimedia/gstreamer1-libav: unbreak FFMPEG=OFF on aarch64 after r483887

  - Drop GNU as(1) dependency as it's no longer required

  PR:		233137
  Submitted by:	Mika?l Urankar (based on)

Changes:
  head/multimedia/gstreamer1-libav/Makefile
  head/multimedia/gstreamer1-libav/files/patch-clang-neon
Comment 10 Jan Beich freebsd_committer freebsd_triage 2018-11-11 20:01:29 UTC
(In reply to mikael.urankar from comment #8)
OK. I've dropped that change to remain consistent with multimedia/ffmpeg.