Forum Linux.général NFS et Makefile

Posté par  .
Étiquettes : aucune
0
27
juil.
2005
Hello,

Soit le makefile suivant :
all: test

toto:

test.c: toto
touch test.c

test.o: test.c
touch test.o

test: test.o
touch test
Ensuite, on fait une petite boucle en shell pour appeler une dizaine de fois la commande make.
En principe, on doit obtenir 10 fois la séquence suivante :
touch test.c
touch test.o
touch test
Si ce test est fait à partir d'un répertoire monté en NFS, ça ne marche pas :
touch test.c
touch test.o
touch test
touch test.c
touch test.c
touch test.c
touch test.c
touch test.c
touch test.c
touch test.c
touch test.c
touch test.c
Ceci semble lié à la machine qui exporte le filesystem car :
- en local sur une machine Linux : OK
- montage NFS entre deux machines Linux : KO
- en local sur une machine Sun : OK
- montage NFS entre deux machines Sun : OK
- montage NFS d'un filesystem Linux vers Sun : KO

Je précise que notre admin (ce n'est pas moi qui exploite le serveur de fichier sous Linux) a tenté pas mal de combinaisons entre les options d'export et les options de montage : rien à faire.
De plus, les machines sont à la même date (ntpdate).

Notre serveur de fichiers est en RH 7.2.

Si quelqu'un a une piste...
Merci d'avance.
  • # NFS + Makefile : synchronisation de l'heure nécessaire.

    Posté par  . Évalué à 0.

    Il n'y a normalement pas de problème pour utiliser make sur NFS, sauf que pour travailler, make utilise les dates des fichiers.

    Il faut donc absolument que la date sur ton client et ton serveur
    soient parfaitement synchronisés. Je te conseille d'utiliser NTP.
    xntpd est normalement fourni sur tous les UNIX propriétaires, et aussi
    sur la plupart des distributions Linux.

    @+
  • # Est-ce si grave finalement ?

    Posté par  . Évalué à 2.

    Bon je viens de relire ton post et de voir que les machines étaient bien à la même date.

    Ceci dit :

    * l'utilisation de xntpd assure une synchronisation continue, ce qui n'est pas le cas de ntpdate, mais ceci dit j'utilise ntpd et j'ai le même problème ici.

    * ensuite, vu les noms, tu veux tester ton makefile pour une des compilations. Il faut bien voir qu'il y a une différence entre touch et cc.
    touch intervient sur la date et l'heure du fichier. C'est donc une opération extrêmement courte, alors qu'une compilation est beaucoup plus longue. Même avec xntpd, la synchronisation n'est pas parfaite vu que touch est très courte, tu tombes au-dessous de la marge d'erreur
    de make.

    En outre, j'ai le problème si je boucle sans temporisation. En faisant la boucle avec une temporisation de 1s, je n'ai plus d'erreur. Un développeur ne va pas s'amuser à compiler plusieurs fois par secondes pas vrai ?

    @+
  • # Version de noyau...

    Posté par  . Évalué à 1.

    Peut-être une piste avec les tests complémentaires suivants :
    - en local sur une machine Debian woody : KO
    - en local sur une machine Debian sarge avec noyau 2.6 : OK

    J'attends de pouvoir faire le test sur Sun avec un filesystem exporté par une Debian sarge + kernel 2.6.
    Mais j'anticipe que la solution serait d'upgrader notre serveur de fichiers. Lourd, quoi...
    • [^] # Suite et fin

      Posté par  . Évalué à 2.

      J'ai pu faire le test sur une Sun avec un filesystem exporté depuis une debian sarge en 2.6. Et là ça marche parfaitement.
      On va donc commencer à réfléchir à l'upgrade de notre serveur :o/
  • # TOTO ?

    Posté par  . Évalué à 1.

    Est-ce qu'il n'y aurait pas tout simplement un fichier toto déjà existant sur le filesystem qui pose problème ? Hmm ?
    • [^] # Re: TOTO ?

      Posté par  . Évalué à 2.

      Non.
      La cible toto n'est là dans mon exemple que pour forcer le touch systématique de test.c. Et ça ça marche.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.