Ich kann OBS nicht vom Source bauen, build failed

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Ich kann OBS nicht vom Source bauen, build failed

Beitrag von Knogle » 23.08.2021 22:13:57

Hallo Freunde.
Ich habe aktuell ein kleines Problem unter meinem Debian Bullseye, als auch unter meinem Debian Sid.
Wenn ich z.B. obs hole mit "apt source obs-studio" und die dependencies dazu mit "apt build-dep obs-studio" und dann versuche zu bauen mit dpkg-buildpackage -rfakeroot -b -uc -us als auch vom Github direkt bekomme ich in beiden cases folgenden Fehler und es bricht bei der obs-ffmpeg-audio-encoders.c ab.

Woran kann das liegen dass ich mir das Ding nicht bauen kann, weder aus dem Git Repo noch direkt von den apt sources auf verschiedenen Systemen?

VG

Code: Alles auswählen


[ 41%] Built target obs-x264
[ 42%] Built target obs-libfdk
[ 43%] Building C object plugins/obs-ffmpeg/CMakeFiles/obs-ffmpeg.dir/obs-ffmpeg-audio-encoders.c.o
In file included from /tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:27:
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-formats.h:3:47: error: unknown type name ‘AVCodecContext’; did you mean ‘AVFormatContext’?
    3 | static inline int64_t rescale_ts(int64_t val, AVCodecContext *context,
      |                                               ^~~~~~~~~~~~~~
      |                                               AVFormatContext
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c: In function ‘convert_speaker_layout’:
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:65:10: error: ‘AV_CH_LAYOUT_MONO’ undeclared (first use in this function)
   65 |   return AV_CH_LAYOUT_MONO;
      |          ^~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:65:10: note: each undeclared identifier is reported only once for each function it appears in
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:67:10: error: ‘AV_CH_LAYOUT_STEREO’ undeclared (first use in this function)
   67 |   return AV_CH_LAYOUT_STEREO;
      |          ^~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:69:10: error: ‘AV_CH_LAYOUT_SURROUND’ undeclared (first use in this function)
   69 |   return AV_CH_LAYOUT_SURROUND;
      |          ^~~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:71:10: error: ‘AV_CH_LAYOUT_4POINT0’ undeclared (first use in this function)
   71 |   return AV_CH_LAYOUT_4POINT0;
      |          ^~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:73:10: error: ‘AV_CH_LAYOUT_4POINT1’ undeclared (first use in this function)
   73 |   return AV_CH_LAYOUT_4POINT1;
      |          ^~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:75:10: error: ‘AV_CH_LAYOUT_5POINT1_BACK’ undeclared (first use in this function)
   75 |   return AV_CH_LAYOUT_5POINT1_BACK;
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:77:10: error: ‘AV_CH_LAYOUT_7POINT1’ undeclared (first use in this function)
   77 |   return AV_CH_LAYOUT_7POINT1;
      |          ^~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c: In function ‘convert_ff_channel_layout’:
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:88:7: error: ‘AV_CH_LAYOUT_MONO’ undeclared (first use in this function)
   88 |  case AV_CH_LAYOUT_MONO:
      |       ^~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:90:7: error: ‘AV_CH_LAYOUT_STEREO’ undeclared (first use in this function)
   90 |  case AV_CH_LAYOUT_STEREO:
      |       ^~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:92:7: error: ‘AV_CH_LAYOUT_SURROUND’ undeclared (first use in this function)
   92 |  case AV_CH_LAYOUT_SURROUND:
      |       ^~~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:94:7: error: ‘AV_CH_LAYOUT_4POINT0’ undeclared (first use in this function)
   94 |  case AV_CH_LAYOUT_4POINT0:
      |       ^~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:96:7: error: ‘AV_CH_LAYOUT_4POINT1’ undeclared (first use in this function)
   96 |  case AV_CH_LAYOUT_4POINT1:
      |       ^~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:98:7: error: ‘AV_CH_LAYOUT_5POINT1_BACK’ undeclared (first use in this function)
   98 |  case AV_CH_LAYOUT_5POINT1_BACK:
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:100:7: error: ‘AV_CH_LAYOUT_7POINT1’ undeclared (first use in this function)
  100 |  case AV_CH_LAYOUT_7POINT1:
      |       ^~~~~~~~~~~~~~~~~~~~
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c: In function ‘enc_create’:
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:205:13: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  205 |  enc->codec = avcodec_find_encoder_by_name(type);
      |             ^
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:209:14: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  209 |   enc->codec = avcodec_find_encoder_by_name(alt);
      |              ^
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c: In function ‘do_encode’:
/tmp/obs-studio/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c:343:16: error: implicit declaration of function ‘rescale_ts’ [-Werror=implicit-function-declaration]
  343 |  packet->pts = rescale_ts(avpacket.pts, enc->context, time_base);
      |                ^~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [plugins/obs-ffmpeg/CMakeFiles/obs-ffmpeg.dir/build.make:95: plugins/obs-ffmpeg/CMakeFiles/obs-ffmpeg.dir/obs-ffmpeg-audio-encoders.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1381: plugins/obs-ffmpeg/CMakeFiles/obs-ffmpeg.dir/all] Error 2
make: *** [Makefile:171: all] Error 2


Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: Ich kann OBS nicht vom Source bauen, build failed

Beitrag von hikaru » 23.08.2021 22:50:31

Ich habe gerade in einer relativ frischen Bullseye-VM Debianobs-studio erfolgreich gebaut. Alles andere hätte mich auch verwundert, denn sonst hätte es einen FTBS-Bugreport geben müssen, und der wäre release-critical gewesen.

Ich sehe, dass sich deine Fehlermeldungen auf ffmpeg beziehen. Hast du das zufällig aus einer Fremdquelle (z.B. deb-multimedia) oder hast du es selbst mir veränderten Optionen selbst gebaut?
Ich frage, weil ffmpeg und seine Schnittstellen meiner Erfahrung nach sehr sensibel auf Veränderungen reagiert. Ich hatte vor einigen Jahren mal Debianffmpeg und Debianmpv mit cuvid-Support gebaut, wonach die Pakete aber nicht mehr zueinander kompatibel waren, weil sie unterschiedliche Versionen der cuvid-Schnittstelle nutzten. Für Debian war das egal, denn cuvid war ohnehin nicht DFSG-konform. Aber ich musste daraufhin eine neuere mpv-Version als die in Debian vorhandene nehmen.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: Ich kann OBS nicht vom Source bauen, build failed

Beitrag von Knogle » 24.08.2021 13:00:28

Ohje, ich danke dir. Habe mal mein Custom FFmpeg rausgeworfen. Nun komme ich ein bisschen weiter, bis hier her.
Haste da eine Idee zu? Ich habe gedacht für nvenc muss ich zwingend FFmpeg neu kompilieren, aber scheinbar geht es auch mit dem Standard .deb Paket aus dem stable Repo.
Habe mir bei den Versuchen wohl ein kleines Franken-Debian gebaut da ich die Grafiktreiber aus dem sid genommen habe. Meinst du es lohnt sich auch da bei den Grafiktreibern auf stable zurückzurollen?
Ist Verbose Output bei

Code: Alles auswählen

dpkg-buildpackage -rfakeroot -b -uc -us
möglich damit ich sehe woran es liegt?

VG

Code: Alles auswählen

Scour processed file "media_next.svg" in 1 ms: 214/177 bytes new/orig -> 120.9%
difference: 0.000%
Scour processed file "media_previous.svg" in 1 ms: 214/177 bytes new/orig -> 120.9%
difference: 0.000%
   dh_strip_nondeterminism
   dh_compress
   dh_fixperms
   dh_missing
dh_missing: warning: usr/lib/x86_64-linux-gnu/obs-plugins/sndio.so exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/ar-SA.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/ca-ES.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/cs-CZ.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/da-DK.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/de-DE.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/el-GR.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/en-GB.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/en-US.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/es-ES.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/et-EE.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/fa-IR.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/fi-FI.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/fr-FR.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/gl-ES.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/hu-HU.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/id-ID.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/it-IT.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/ja-JP.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/ka-GE.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/kab-KAB.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/ko-KR.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/nl-NL.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/pl-PL.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/pt-BR.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/pt-PT.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/ru-RU.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/sk-SK.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/sl-SI.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/sv-SE.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/tr-TR.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/uk-UA.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/zh-CN.ini exists in debian/tmp but is not installed to anywhere 
dh_missing: warning: usr/share/obs/obs-plugins/sndio/locale/zh-TW.ini exists in debian/tmp but is not installed to anywhere 
	The following debhelper tools have reported what they installed (with files per package)
	 * dh_install: libobs-dev (11), libobs0 (27), obs-plugins (12), obs-studio (33)
	 * dh_installdocs: libobs-dev (0), libobs0 (0), obs-plugins (0), obs-studio (0)
	 * dh_installman: libobs-dev (0), libobs0 (0), obs-plugins (0), obs-studio (1)
	If the missing files are installed by another tool, please file a bug against it.
	When filing the report, if the tool is not part of debhelper itself, please reference the
	"Logging helpers and dh_missing" section from the "PROGRAMMING" guide for debhelper (10.6.3+).
	  (in the debhelper package: /usr/share/doc/debhelper/PROGRAMMING.gz)
	Be sure to test with dpkg-buildpackage -A/-B as the results may vary when only a subset is built
	If the omission is intentional or no other helper can take care of this consider adding the
	paths to debian/not-installed.

	Remember to be careful with paths containing "x86_64-linux-gnu", where you might need to
	use a wildcard or (assuming compat 13+) e.g. ${DEB_HOST_MULTIARCH} in debian/not-installed
	to ensure it works on all architectures (see #961104).
dh_missing: error: missing files, aborting
make: *** [debian/rules:11: binary] Error 255
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Ich kann OBS nicht vom Source bauen, build failed

Beitrag von JTH » 24.08.2021 13:43:34

Knogle hat geschrieben: ↑ zum Beitrag ↑
24.08.2021 13:00:28
Ist Verbose Output bei

Code: Alles auswählen

dpkg-buildpackage -rfakeroot -b -uc -us
möglich damit ich sehe woran es liegt?
dpkg-buildpackage selbst wird meine ich nicht gesprächiger. Du kannst aber debhelper, was im Hintergrund hier die eigentliche Arbeit macht, gesprächig machen:

Code: Alles auswählen

DH_VERBOSE=1 dpkg-buildpackage -b --no-sign
Ich glaube aber nicht, dass dir das an der Stelle wesentlich weiterhilft. Da liegen halt Dateien herum, die gebaut werden (oder wurden), aber nicht ins Paket wandern, das steht ja schon recht ausführlich dort. Hast du an den Buildoptionen schon was verändert? Wenn ja, ist das Paket womöglich kaputt und baut Sachen, die es gar nicht weiter benutzt.

Falls nicht – räum das ganze nochmal auf. Den Ordner debian/tmp/ kannst du normalerweise gefahrlos löschen, der ist ein Produkt des Paketbauens.

-rfakeroot ist übrigens der Standardwert, braucht man nicht angeben.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: Ich kann OBS nicht vom Source bauen, build failed

Beitrag von hikaru » 24.08.2021 14:17:46

Mein gestriger erfolgreicher Test-Build stammte aus einer recht frischen VM. Wenn ich dort aber Debianlibsndio-dev nachinstalliere, dann schlägt mein Build mit den gleichen sndio-Meldungen fehl.
Nimm also mal eine frische Umgebung (z.B. mit Debianpbuilder) oder deinstalliere zumindest Debianlibsndio-dev!

btw:
Ich frage mich, ob man einen Bugreport dafür aufmache sollte, dass das Vorhandensein von Debianlibsndio-dev zu FTBFS führt. Natürlich sollte man idealerweise eine saubere Build-Umgebung nehmen, aber meinem Verständnis nach sollte ein zusätzliches Paket keine Probleme verursachen. Entweder sollte der Build dann etwas sinnvolles Anderes machen (z.B. ein sndio-Plugin bauen) oder das Vorhandensein des Pakets abfangen.

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Ich kann OBS nicht vom Source bauen, build failed

Beitrag von JTH » 24.08.2021 14:39:47

hikaru hat geschrieben: ↑ zum Beitrag ↑
24.08.2021 14:17:46
Mein gestriger erfolgreicher Test-Build stammte aus einer recht frischen VM. Wenn ich dort aber Debianlibsndio-dev nachinstalliere, dann schlägt mein Build mit den gleichen sndio-Meldungen fehl.
Ha, interessant. Da lohnt es sich, manchmal auch mit einer unsauberen Buildumgebung zu bauen!

Das ist wahrscheinlich noch ein relativ neuer „Bug“. Entstanden durch einen Wechsel von debhelper-compat 12 zu 13 und entsprechendes Verhalten von dh_missing bei Level 13:
man dh_missing hat geschrieben: --fail-missing
This option is like --list-missing, except if a file was missed, it will not only list the missing files, but also fail with a nonzero exit code.

This is the default in compat 13 and later.
Vorher war das nur eine Warnung, jetzt führts zum Fehlschlag.

hikaru hat geschrieben: ↑ zum Beitrag ↑
24.08.2021 14:17:46
Ich frage mich, ob man einen Bugreport dafür aufmache sollte, dass das Vorhandensein von Debianlibsndio-dev zu FTBFS führt. Natürlich sollte man idealerweise eine saubere Build-Umgebung nehmen, aber meinem Verständnis nach sollte ein zusätzliches Paket keine Probleme verursachen. Entweder sollte der Build dann etwas sinnvolles Anderes machen (z.B. ein sndio-Plugin bauen) oder das Vorhandensein des Pakets abfangen.
FTBFS könnte vielleicht etwas streng sein, aber nicht sauber ist es definitiv. Es wird etwas gebaut, was nicht benutzt wird. Vielleicht ist die Auslassung ja auch gar nicht so gewollt. (Freiwillige vor ;) )

Du, Knogle, könntest den Fehler hier wahrscheinlich umgehen (wenn du Debianlibsndio-dev nicht deinstallieren möchstest), indem du die gelisteten, bemängelten Dateien in einer Datei debian/not-installed auflistest, zwei Zeilen sollten reichen:

Code: Alles auswählen

usr/lib/x86_64-linux-gnu/obs-plugins/sndio.so
usr/share/obs/obs-plugins/sndio/locale/*
Manchmal bekannt als Just (another) Terminal Hacker.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: Ich kann OBS nicht vom Source bauen, build failed

Beitrag von Knogle » 24.08.2021 15:33:32

Herzlichen Dank euch, die Variante mit debian/not-installed hat echt gut funktioniert.
Ich habe da eine Frage, undzwar was ist der beste Weg um ffmpeg mit nvenc Support zu kriegen ohne dabei wieder alles was mit ffmpeg zutun hat kaputt zu machen?
Ich habe vor OBS zu kompilieren damit ich dort auch die GPU Beschleunigung durch Nvidia zum Aufnehmen benutzen kann. Habt ihr dazu eventuell noch ne Idee?

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Ich kann OBS nicht vom Source bauen, build failed

Beitrag von JTH » 24.08.2021 17:35:09

Was der beste Weg ist, musst du wahrscheinlich selbst entscheiden. Direkt aus den Debian-Repos wirst du es nicht ohne Neubauen von FFmpeg und OBS bekommen, da weißt das Debian-Wiki ausdrücklich drauf hin.

Zum Neubauen müsstest du ca. passende Header installieren (nv-codec-headers), FFmpeg aus den Debiansourcen neu bauen (mit passenden Flags, vermutlich --enable-nonfree und --enable-nvenc; und idealerweise die Version lokal anpassen mit dch o.ä.), die gebauten Pakete installieren und noch OBS neu bauen (vermutlich auch mit passenden Flags) und installieren.

Oder du installierst dir OBS von deb-multimedia.org, das kann anscheinend – mit den von dort mitinstalliertem FFmpeg-Paketen – ohne extra Arbeit deinerseits NVENC. Aber: deb-multimedia.org bringt bei zukünftigen Updates evtl. Probleme mit sich, dazu findest du diverse Themen hier im Forum. Ist eine Abwägungssache.
Manchmal bekannt als Just (another) Terminal Hacker.

Antworten