copiler un programme via cocoa

wiskywisky Membre
août 2009 modifié dans API AppKit #1
Bonjour à  tous,

Je viens vers vous pour m'aider à  trouve une solution à  un problème assez pousser.

Contrainte :
1) doit être executé avec les droits root

J'ai une application qui a besoin de programme en ligne de commande spécifique. Par une contrainte que je ne maitrise pas il est impossible de compiler les librairies et programmes en UB. Il faut donc le compiler sur chaque Mac.
Pour simplifier la tâche je souhaite faire une UI Cocoa dans mon application pour exécuter la compilation et l'installation.
Comme indiqué dans les contrainte, je doit faire tout cela an mode Root. Les source sont inclus dans le package de mon programme.
J'utilise la méthode "Calling a Privileged Installer" d'écrite par Apple ici pour lancer les commandes. Sauf que, contrairement à  NSTask je ne peux pas définir le dossier de travail. Pour le changer, je lance donc un script auquel j'envoie le chemin de travail en argument. Il le change et lance la commande. Malheureusement la commande n'est pas lancé en tant que Root.

Donc, j'attends vous idée, pour soit lancer une NSTask en tant que root soit trouver une solution au problème du script.

Script pour make :
#!/bin/sh<br /><br />echo $1<br /><br />SELFPATH=`echo $1 | cut -d&#092;&quot; -f2`<br />echo $SELFPATH<br />cd &quot;$SELFPATH&quot;<br /><br />make<br />

Réponses

  • zoczoc Membre
    août 2009 modifié #2
    Deux remarques:
    • Compiler en root... Je ne vois aucune bonne raison (ni aucune mauvaise d'ailleurs) qui obligerait de compiler avec le compte root. On ne compile jamais avec le compte root. J'ai par le passé compilé de nombreux trucs, dont des noyaux linux, et je n'ai jamais utilisé le compte root pour cela.
    • Pourquoi ne pas fournir un exécutable précompilé pour chaque plateforme (intel & ppc) si fournir un UB n'est pas possible (ce dont je doute fortement d'ailleurs, car avec la commande lipo on peut faire un UB à  partir de plusieurs exécutables spécifiques à  chaque architecture...). Je doute en effet que plus de 1% des utilisateurs Mac aient le nécessaire sur leur Mac pour compiler du C...


    Edit: Si ce que tu cherches à  fournir c'est GPUtils (dont tu parles sur ton blog), alors il est enfantin de le compiler en UB:
    <br />svn co https://gputils.svn.sourceforge.net/svnroot/gputils/trunk gputils<br />cd gputils/gputils/<br />env CFLAGS=&quot;-O -g -arch i386 -arch ppc&quot; LDFLAGS=&quot;-arch i386 -arch ppc&quot;   ./configure --disable-dependency-tracking<br />make<br />file gpasm/gpasm<br />gpasm/gpasm: Mach-O universal binary with 2 architectures<br />gpasm/gpasm (for architecture i386):	Mach-O executable i386<br />gpasm/gpasm (for architecture ppc7400):	Mach-O executable ppc<br /><br />
    


    Pour plus d'infos : http://developer.apple.com/technotes/tn2005/tn2137.html
  • wiskywisky Membre
    01:35 modifié #3
    T'a vue juste !
    J'ai chercher un bon moment en vain avant de tenter d'intégré la compilation dans mon application. Maintenant c'est réglé. Je me suis permis de reprendre ta solution (en te sitant) sur mon blog.
    Qui est d'ailleurs plus un aide mémoire qu'un vrais blog.

    Un grand merci à  toi. Cela m'enlève une épine du pied.
    ça mérite une tournée !
    :p   :p :p :p :p :p
    <3 <3 <3 <3 <3 <3 <3
Connectez-vous ou Inscrivez-vous pour répondre.