Makefile & umask

molgow

Vétéran
Club MacG
4 Janvier 2002
5 493
612
37
Suisse
www.monts-chevreuils.ch
J'essaie de configurer un Makefile (j'utilise gmake et PAS make). En fait, il faudrait que mon makefile puisse lancer la commande : "umask 007". Pas bien compliqué vous allez dire ? Ben en fait si! car umask est une commande intégrée au shell. Et ça n'a donc pas l'air de fonctionner comme je voudrais. La commande n'a aucun effet.
J'ai même testé la valeur de umask dans le makefile en faisant :
umask 007
umask # à ce moment là ça affiche l'ancienne valeur de umask

Vraiment bizarre, et je vois pas comment faire.. je suis même pas sûr qu'il existe une solution
 

bertrand.serullaz

Membre émérite
19 Septembre 2001
651
26
53
Asnières 92
Comme tu dis sur le principe c'est tout simple, tu tapes ton umask avant de lancer ton shell. Soit ton shell fait un su non loggé -> aller le modifier dans le /etc. Soit le su est loggé -> aller modifier le .profile du user concerné. Je regarderais ce soir car j'avoue je parle d'après Solaris, j'ai jamais eu à bricoler ca sous OsX...
 

molgow

Vétéran
Club MacG
4 Janvier 2002
5 493
612
37
Suisse
www.monts-chevreuils.ch
Bah en fait mon makefile c'est pour Solaris


Désolé de pas avoir spécifié mais il me semblait que ça devait être pareil..

Je suis pas sûr d'avoir bien compris ce que tu me dis là. Mais mon souhait c'est juste de pouvoir exécuter la commande umask dans un Makefile. Ca peut paraître étrange, mais c'est pour éviter que les personnes avec qui je travaille "foute le boxon" (
) à chaque fois qu'elle veulent travailler sur le projet commun (malheureusement, certains confondent "umask 007" et "umask 700"
)

Et donc le problème c'est que umask est une commande du shell et non pas un programme "normal" comme l'est "ls". Quand je tape "where umask", la première ligne est "umask is a shell built-in".

Ca peut paraitre illogique que ça pose problème.. d'ailleurs je n'y croyais pas moi même au début. Mais il me semble que c'est malheureusement bien là où est le problème.

Voici juste l'extrait de mon Makefile qui ne fonctionne pas :
<font class="small">Code:</font><hr /><pre>
UMASK = umask

...

begin :
$(UMASK) 0007
@$(ECHO) "voilà tu peux travailler"
</pre><hr />
 

Bobbus

Membre confirmé
5 Décembre 2001
146
1
39
ça paraît assez logique de pas pouvoir utiliser umask dans un Makefile, vu que umask modifie tous les droits sur les fichiers qui sont ensuite crées et a donc une action bien au delà du simple make...

Par contre, tu peux utiliser chmod, chown, chgrp, etc qui elles permettent de changer les permissions sur des fichiers déjà existants...

Evidemment, ce n'est pas forcément ça que tu veux

Sinon tu peux lancer le umask au login, dans le .zshrc/.tcshrc/.bashrc/.kshrc (j'ai oublié personne
)

Dernière suggestion, il y a la possibilité d'utiliser install (copy files and set attributes) qui est habituellement utilisé dans les Makefiles au moment de l'installation.

Bob
 

molgow

Vétéran
Club MacG
4 Janvier 2002
5 493
612
37
Suisse
www.monts-chevreuils.ch
Bobbus a dit:
Evidemment, ce n'est pas forcément ça que tu veux

Sinon tu peux lancer le umask au login, dans le .zshrc/.tcshrc/.bashrc/.kshrc (j'ai oublié personne
)
En effet, c'est pas trop ce que je veux. D'habitude je travaille en "umask 077", c'est juste pour un projet commun que j'ai besoin du "umask 007"


Bobbus a dit:
Dernière suggestion, il y a la possibilité d'utiliser install (copy files and set attributes) qui est habituellement utilisé dans les Makefiles au moment de l'installation.
Merci mais j'ai pas l'impression que ça puisse m'aider.

Je crois que je vais me résigner à faire répeter "umask james bond" plusieurs fois à la personne avec qui je travaille pour qu'elle me fasse un "umask 007" à chaque fois