MakeMKV

Tja, das Ding wehrt sich mit allem was es hat, in einen Port gepresst zu werden ;) Bin jetzt immerhin so weit, dass die static libs gebaut werden -- die Ports setzen eine Variable ARCH, das hatte ffmpeg verwirrt -- es erwartet ARCH ungesetzt oder mit dem Wert x86, nur dann werden assembler-Teile mit nasm assembliert :o Ok, wenn man es weiß -- jetzt mal schauen, wieso ./configure für makemkv-oss immer noch schiefgeht. Alles lösbare Probleme, aber so langsam bin ich ein wenig genervt :D
 
Das glaube ich dir, aber Respect dafür das du es machst. Bin noch nicht so lange im FreeBSD Universum unterwegs das ich mich an einem eigenen Port trauen würde. Du musst es ja nicht mit Gewalt heute machen, wenn es heute nicht geht und du genervt bist ertsmal eine Pause machen und dann mit neuen Elan weiter machen :-)
 
Mal ganz ehrlich: Ports sind super einfach. Vorausgesetzt man kennt (und mag?) make ;) Ich habe vor FreeBSD Debian genutzt und auch da Pakete gebaut, womit ich aber nie so richtig warm geworden bin ... die FreeBSD Ports dagegen: Super! War mit das erste was ich auf FreeBSD gemacht habe, eigene Ports bauen :) Aber das wird so langsam etwas OT, sorry, dafür....

Der makemkv Port nervt mich deshalb, weil so viel "Trickserei" dabei ist und damit ständig unerwartet Dinge schiefgehen. Und man kommt eben nicht umhin, ab und zu ein "make clean" zu machen und neu zu testen, durch die Abhängigkeiten dauert das dann leider ewig. Gerade läuft "mal wieder" ein kompletter ffmpeg build, auf den ich warten muss um zu sehen, ob "stage" für makemkv-oss jetzt endlich ohne Fehler klappt. Ich komme dem Ziel jedenfalls näher ;)
 
@Zirias Wow cool, muss ich doch noch das richtige Programmieren lernen. Bin nur ein einfacher Web-Frontendentwickler, der so langsam in rRchtung Fullstack gehen muss. Hast du vielleicht ein kleine Doku wie man Ports erstellst. Können uns ja mal per PM austauschen.
 
So, der Port ist da: https://github.com/Zirias/zfbsd-ports/tree/master/new/multimedia/makemkv

Erster kleiner Test:
porting-makemkv-3.png


Wer ihn nutzen will kann einfach meinen ports-development tree clonen:
# git clone https://github.com/Zirias/zfbsd-ports

Bauen in poudriere funktioniert, allerdings muss man die spezielle MakeMKV EULA akzeptieren. Man kann z.B. folgendes in /usr/local/etc/poudriere.d/make.conf schreiben:
LICENSES_ACCEPTED+= MAKEMKV

Der Port ist insgesamt ziemlich dreckig, wie schon die manuelle Vorgehensweise nach meinem HOWTO auch -- gebaut wird mit FreeBSD headern (für ssl, expat, zlib) und dazu Linux libraries (potentiell auch andere Versionen). fdk-aac und ffmpeg werden statisch gelinkt, dazu werden die statischen libs im "pre-configure" gebaut und in ein temporäres Verzeichnis installiert, das führt dazu, dass der Port einen Großteil der Build-Zeit scheinbar in der "configure" Phase verbringt. Nicht besonders schön, aber so funktioniert es.

Ich bekomme hier bei jedem Lauf diese Ausgabe:
Internal error: openssl test 00FC failed
Scheint aber sonst keine weiteren Auswirkungen zu haben.
EDIT: Mist, es HAT Auswirkungen, makemkvcon stürzt jetzt ab bei verschlüsselten Discs. Da muss ich wohl nochmal ran. Eventuell muss ich auch noch openssl "bundlen", mal sehen.

Getestet ist das ganze in meiner Umgebung (amd64, linux-c7, ...) -- theoretisch müsste es auch mit linux-c6 gehen, theoretisch müsste es auch auf i386 gehen, gerne mal ausprobieren ;)
 
So, Lösung des Problems ist eingecheckt, für mich funktioniert es jetzt perfekt. Also würde ich mich über ein paar Tests durch andere freuen :)

Damit der Build mit OpenSSL "sauber" ist wird jetzt die passende OpenSSL Source-Version mit heruntergeladen und die Header aus dem Paket verwendet. Bin mir gar nicht sicher, ob das unbedingt nötig ist -- um den oben zitierten Fehler loszuwerden musste ich einfach "-DFORCE_OPENSSL_NO_EC" setzen -- aber schaden kann es nicht, und mit OpenSSL Headern zu bauen, die nicht zur verlinkten Lib passen, ist sowieso "begging for trouble", also bleibt das erstmal so :)

Achja, ich habe keine PORTREVISION eingeführt ... falls es jemand also schon getestet hat, von Hand deinstallieren und aufräumen bitte :)

Offene Punkte:
  • GUI! (Warum nur geht das nicht? ...)
  • Test auf i386 (sollte gehen, aber kann sein dass im Port was falsch ist, habe gerade kein Testsystem)
  • Test mit linux-c6 (wenn das geht, gut, wenn nicht lohnt sich das wohl nicht anzupassen ...)
  • läuft im Moment nur als root :( auch noch keine Ahnung warum ....
 
Hi Felix
habe mal dein Port durch mein Poudriere durchgejagt und es läuft durch mit linux-c7 und linux-c6. Ich kann es erst wahrscheinlich in der kommenden Woche richtig testen wenn mein Bluray Laufwerk da ist.

Gruß Daniel
 
Vermutung: Normaluser muss in der Gruppe 'operator' sein, damit Zugriff aufs Laufwerk geht.
Ganz so einfach ist es dann leider nicht. Mein User ist in dieser Gruppe, außerdem habe ich sogar in den devfs.rules
Code:
add path 'cd[0-9]\*'            mode 666
add path 'pass[0-9]\*'  mode 666
add path 'sg[0-9]\*'    mode 666
(was auch funktioniert).

makemkvcon macht irgendwas anderes, dank closed source nicht so leicht zu erraten, vielleicht hilft ein "truss-vergleich" root vs normaler user weiter ...

habe mal dein Port durch mein Poudriere durchgejagt und es läuft durch mit linux-c7 und linux-c6.
Danke, das ist schonmal sehr cool ;) Wenn es dann mit c6 gebaut sogar läuft wäre perfekt :D
 
Danke, das ist schonmal sehr cool ;) Wenn es dann mit c6 gebaut sogar läuft wäre perfekt :D

Ich gebe dann Feedback, wenn die ganze neue Hardware da ist und ich alles testen kann. Aber vielen lieben Dank für deine mühe und deine Zeit die du schon reingesteckt hast.

Gruß Daniel
 
Komme dem "nicht-root-Problem" tatsächlich mit truss ein wenig auf die Schliche -- links root, rechts non-root:

makemkv-nonroot.png


Ok, denke der Zugriff auf /dev/urandom (ist nur ein symlink zu /dev/random) ist für makemkvcon nicht "fatal". Wie funktioniert dieses Device eigentlich, soll das so sein, dass man darauf schreibt? :o Das darf bei mir in der Tat nur root. Sollte ich das ändern?

Das eigentliche Problem scheint zu sein, dass makemkvcon bei mir als normaler User kein temporäres File schreiben kann. Ok, also ich habe ein Verzeichnis /compat/linux/tmp -- erste Frage: soll das eigentlich da sein? Es ist leer. Und natürlich hat da nur root Schreibrechte, das klingt mir für ein /tmp auch nicht besonders sinnvoll ... aber wieso sollten Linux-Prozesse überhaupt ihr eigenes /tmp haben? Ist da einfach irgendwas durcheinander auf meiner Installation?

Danke und Grüße
Felix

Edit: das tempfile ist auch wirklich die einzige Ursache, wenn ich einfach mal die Rechte auf /compat/linux/tmp setze (g+w, o+w, +t) dann läuft makemkvcon bei mir auch problemlos als normaler User ;)
 
aber wieso sollten Linux-Prozesse überhaupt ihr eigenes /tmp haben
natürlich habe ich keine Ahnung, aber mich schaudert bei dem Gedanken, dass Linux-Prozesse Zugriff auf "mein /tmp" haben sollen. Also, ganz grundsätzlich schon mal halte ich Trennung hier durchaus für angesagt, möchte aber etwas weiter ausführen, dass "mein /tmp" nämlich ein tmpfs ist und im RAM liegt.
Ganz spontan entwickelt sich bei mir nun die Vorstellung eines wild gewordenen Linux-Prozesses (ich traue dem einfach nicht, was aber tatsächlich eher emotional denn technisch begründet ist), der mir gleich meinen RAM zerschießt.
Igitt!
 
Also kannst du bestätigen, dass dieses /compat/linux/tmp von einem der linux-c7 ports (vermutlich base) angelegt wird?

Sehe jetzt nicht, was da schiefgehen sollte. Ein tmpfs kann ja nicht beliebig wachsen, und in /tmp kann zwar jeder schreiben, aber noch lange nicht an "fremden" Dateien fummeln ... ist eigentlich ziemlich egal, ob das nun ein Linux- oder native-Prozess ist :o Aber das nur am Rande, mich interessiert hauptsächlich, ob dieses /compat/linux/tmp da wirklich hingehört und, wenn ja, wirklich mit so "ungewöhnlichen" Zugriffsrechten ;)
 
Der Port ist mittlerweile noch ein bisschen verbessert, der sichtbarste Unterschied ist, dass ich noch eine manpage zu "makemkvcon" spendiert habe (die allerdings sehr unvollständig ist, nur das nötigste ...)

Aus Mangel an Kritik :D (danke aber an einen User, der es zumindest mal ausprobiert hat!) habe ich den Port jetzt einfach mal submitted, mal sehen was die port committer so davon halten.
 
Der Port ist mittlerweile noch ein bisschen verbessert, der sichtbarste Unterschied ist, dass ich noch eine manpage zu "makemkvcon" spendiert habe (die allerdings sehr unvollständig ist, nur das nötigste ...)

Aus Mangel an Kritik :D (danke aber an einen User, der es zumindest mal ausprobiert hat!) habe ich den Port jetzt einfach mal submitted, mal sehen was die port committer so davon halten.

War ich der User :-)
 
Der Port ist mittlerweile noch ein bisschen verbessert, der sichtbarste Unterschied ist, dass ich noch eine manpage zu "makemkvcon" spendiert habe (die allerdings sehr unvollständig ist, nur das nötigste ...)

Aus Mangel an Kritik :D (danke aber an einen User, der es zumindest mal ausprobiert hat!) habe ich den Port jetzt einfach mal submitted, mal sehen was die port committer so davon halten.

ich bin sehr froh, dass du dieses Problem am lösen bist.
Vor einiger Zeit stand ich genau davor und fand keine andere Antwort, als mit einen BR-Player samt TV-Gerät zu leihen, um einige BR-DVDs ansehen zu können. Ich glaube, das sagte ich ja schon.
Das genau sind aber auch die einzigen BR-Scheiben, die ich überhaupt habe und ich habe sie gerade eben nicht zur Verfügung. Mangels Masse kann ich mich also nicht als Tester beteiligen, was ich ansonsten sehr gerne täte.
 
Habe den Port auf die neueste upstream Version 1.14.4 aktualisiert. Leider weiß ich nicht, was sich da geändert hat :)

Ansonsten warte ich immer noch auf Feedback zur Aufnahme in den offiziellen Ports tree.

Feedback vom Autor habe ich übrigens -- GUI wird wohl nicht SO einfach machbar sein, die kommuniziert mit "makemkvcon" über shared memory :o allerdings wäre in Zukunft eventuell sogar eine native FreeBSD version denkbar, schauen wir mal ob es dazu kommt!
 
Im Repo gibt es jetzt die neue Version 1.14.5 :)

Außerdem war der Build mit linux-c6 kaputt, was jemand per Mail reported hat -- ist gefixt :)
 
Update: Version 1.15.0 ist verfügbar.

Damit schwindet aber auch meine Hoffnung, dass der Port jemals offiziell aufgenommen werden kann. Inzwischen braucht makemkvcon eine neuere libstdc++ als in den linux-c7 ports verfügbar. Der Workaround ist, eine temporäre GNU toolchain zu bauen. Das ist natürlich verrückt und macht den Port recht groß und vielleicht auch etwas fragil... Also erwartet ziemlich lange Buildzeiten für diesen Port :)
 
Klar, ist nur völlig sinnlos, weil die nicht mehr läuft -- das verhindert die Software aktiv, wenn die Version "zu alt" ist.
 
Zurück
Oben