Annoyme Portierung auf Mac OS X

Ich hatte mich schon immer auf eine Gelegenheit gefreut mal etwas bestehendes auf eine andere Platform zu portieren. Ich hab zwar schon unter Solarix und AIX gecodet aber nun hatte ich eben die Chance mein eigenes Annoyme auf OSX zu testen und war angenehm überrascht. Bis auf ein paar Probleme mit Includes, Anpassungen der cmake Skripte und Dateinamenprobleme hat es ganz gut geklappt.

Interessant war jedoch auch ein Problem mit libao unter 10.4 siehe: https://trac.xiph.org/ticket/727

Laufen tut annoyme jedoch noch nicht ganz auf Mac, die libao Version kann hier offenbar nur mit 44k Samples umgehen und bei annoyme gibts zur Zeit nur 22k.


./annoyme
...
Opening sound output.
ao_macosx_open: Only support 44.1kHz right now
terminate called after throwing an instance of 'SoundOutputException'

Ingesamt würde ich auch sagen ist dies ein ziemlich guter Test für cmake gewesen von dem ich recht begeistert bin. Im gegensatz zu den autotools war der Einstieg auch recht einfach auch wenn man beim Einstieg vom ersten Howto eigentlich direkt in die Funktionsreferenz gehen muss da man ansonsten nur auf das Buch verwiesen wird und andere Einleitungsdokumente fehlen. http://www.cmake.org/

Mac – Case Insensitivity

Ein weiterer Fallstrick der mich bei meiner spielerei mit dem Mac überraschte war die offensichtliche Case Insensitivtät unter OSX.

Als jemand der sich unter der Shell relativ wohl fühlt ist dies ein druchaus überraschendes Verhalten. Mir ist es jedoch erst aufgefallen, alls ich etwas aus dem Annoyme git Repository ausgecheckt habe und seltsamerweise immer eine Datei verändert war.

Im Repository gibt es eine Datei „annoyme.cpp“, welche main beinhaltet und „Annyome.cpp“ für die Hauptklasse der Anwendung. Anscheinend muss ich mir hier aus portibilitätsgründen etwas neues ausdenken.

Hier ein kleines Beispiel wie sich die Case Insensitivität auf der Shell auswirken kann:

/tmp/testrange)$ ls -l
/tmp/testrange)$ touch thesame
/tmp/testrange)$ ls -l
total 0
-rw-r--r-- 1 bpeter wheel 0B 5 Apr 21:37 thesame
/tmp/testrange)$ touch TheSame
/tmp/testrange)$ ls -l
total 0
-rw-r--r-- 1 bpeter wheel 0B 5 Apr 21:38 thesame
/tmp/testrange)$ rm tHeSaMe
/tmp/testrange)$ ls -l

Linux NFS export auf Mac OSX mounten

Dank der Firma, komme ich dieses Wochenende in den Genuss mich ein wenig mit Mac OSX außereinanderzusetzen. Leihweise habe ich ein Macbook zur Verfügung und versuche mich ein wenig damit zurecht zu finden. Als alter Linux user ist man doch sehr an einige Begebenheiten gewohnt aber das mounten von NFS sollte ja doch möglich sein.

Mein Desktop Rechner exportier ein Dateisystem /media das ich gerne auf den Dektop in das Verzeichnis jet mounten möchte, doch unter OSX erwies sicht das als nicht ganz Problemlos.

Ein normales mounten des Dateisytems schlug fehl.

sudo mount -t nfs -o ro 192.168.0.2:/media /Users/bpeter/Desktop/jet/

Dies ergab den folgenden Fehler "mount_nfs: /Users/bpeter/Desktop/jet/: Operation not permitted". — Natürlich nicht sonderlich aussagekräftig, da die Freigabe für die Client IP des Macbooks durchaus in der /etc/exports sowie /etc/hosts.allow gegeben war. Ein Blick in die syslog-Datei der Linux Kiste verriet jedoch schon etwas mehr.

Apr 4 21:27:15 jet nfsd[3186]: NFS request from noname originated on insecure port, psychoanalysis suggested

Ein Blick in die manpage von mount_nfs enhüllte dann, dass es eine Option namens „resvport“ gibt. Diese sorgt dafür, dass der verwendete Port des NFS Clients unter den reservierten Portnummern ist und daher auch von etwas pingeligen NFS Servern akzeptiert wird. Um das mount Problem also zu lösen musste ich nur folgenden Befehl verwenden:

sudo mount -t nfs -o ro,resvport,noowners 192.168.0.2:/media /Users/bpeter/Desktop/jet/

Zusätzlich habe ich den Befehl noowners angehängt, dieser sorgt dafür dass ich die Dateien öffnen kann auch wenn sie nicht die selbe UID wie ich haben. (Ein Hoch auf die Sicherheit von NFS …). Das Verzeichnis wurde nun korrekt eingebunden.