Ignore:
Timestamp:
Nov 18, 2008 9:54:31 AM (16 years ago)
Author:
raasch
Message:

precompilation mechanism completely revised: now one depository per configuration block, further change of output messages

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SCRIPTS/mbuild

    r210 r215  
    9595     #                    ({mainprog}_current_version)
    9696     # 02/10/08 - Siggi - adapted for lcxt4
     97     # 14/11/08 - Siggi - update mechanism completely revised: source tarfile
     98     #                    remains in source directory, one depository per block
     99     #                    (given in the config-file) is created, always all files
     100     #                    from the source directory are copied to the respective
     101     #                    depository, no additional file checks are done any more
     102     #                    (version 2.1)
    97103
    98104
     
    121127 typeset  -L50 column2
    122128 typeset  -L70 column3
    123  typeset  -L40 version="MBUILD  2.0  Rev$Rev$"
     129 typeset  -L40 version="MBUILD  2.1  Rev$Rev$"
    124130
    125131    # FEHLERBEHANDLUNG
     
    141147
    142148
     149 tmp_mbuild=${working_directory}/tmp_mbuild
    143150
    144151    # SHELLSCRIPT-OPTIONEN EINLESEN
     
    187194    # HOST-IDENTIFIER (local_host) AUS KONFIGURATIONSDATEI BESTIMMEN
    188195 line=""
    189  grep  "%host_identifier"  $config_file  >  tmp_mbuild
     196 grep  "%host_identifier"  $config_file  >  $tmp_mbuild
    190197 while read line
    191198 do
     
    200207       fi
    201208    fi
    202  done < tmp_mbuild
     209 done < $tmp_mbuild
    203210
    204211 if [[ "$local_host" = "" ]]
     
    230237    # BENUTZERNAMEN AUF LOKALEM RECHNER AUS KONFIGURATIONSDATEI ERMITTELN
    231238 line=""
    232  grep  " $local_host" $config_file | grep "%remote_username"  >  tmp_mbuild
     239 grep  " $local_host" $config_file | grep "%remote_username"  >  $tmp_mbuild
    233240 while read line
    234241 do
     
    237244       local_username=`echo $line | cut -d" " -s -f2`
    238245    fi
    239  done < tmp_mbuild
     246 done < $tmp_mbuild
    240247
    241248
     
    254261    # VARIABLEN SETZEN, WEIL DIESE EVTL. IN PFADNAMEN VERWENDET WERDEN
    255262 line=""
    256  grep "%" $config_file  >  tmp_mbuild
     263 grep "%" $config_file  >  $tmp_mbuild
    257264 while read line
    258265 do
     
    264271#       eval echo \"   $var=\$$var \"   # AUSGABE ZU TESTZWECKEN
    265272    fi
    266  done < tmp_mbuild
     273 done < $tmp_mbuild
    267274
    268275    # NUN PRUEFEN, OB EIN GLOBALER QUELLTEXTPFAD VEREINBART WURDE
    269276 line=""
    270  grep "%source_path" $config_file  >  tmp_mbuild
     277 grep "%source_path" $config_file  >  $tmp_mbuild
    271278 while read line
    272279 do
     
    278285       fi
    279286    fi
    280  done < tmp_mbuild
     287 done < $tmp_mbuild
    281288
    282289 line=""
    283  grep  " $local_host" $config_file | grep "%source_path"  >  tmp_mbuild
     290 grep  " $local_host" $config_file | grep "%source_path"  >  $tmp_mbuild
    284291 while read line
    285292 do
     
    288295       local_source_path=`echo $line | cut -d" " -s -f2`
    289296    fi
    290  done < tmp_mbuild
     297 done < $tmp_mbuild
    291298
    292299 if [[ "$local_source_path" = "" ]]
     
    306313
    307314
    308      # EBENSO PFAD FUER DAS MAKE-DEPOSITORY ERMITTELN
     315
     316    # GLOBALEN DEPOSITORY-PFAD ERMITTELN
    309317 line=""
    310  grep "%depository_path" $config_file  >  tmp_mbuild
     318 grep "%depository_path" $config_file  >  $tmp_mbuild
    311319 while read line
    312320 do
     
    318326       fi
    319327    fi
    320  done < tmp_mbuild
    321 
    322  line=""
    323  grep  " $local_host" $config_file | grep "%depository_path"  >  tmp_mbuild
    324  while read line
    325  do
    326     if [[ "$line" != ""  &&  $(echo $line | cut -c1) != "#" ]]
    327     then
    328        local_depository_path=`echo $line | cut -d" " -s -f2`
    329     fi
    330  done < tmp_mbuild
    331 
    332  if [[ "$local_depository_path" = "" ]]
    333  then
    334     if [[ "$global_depository_path" != "" ]]
    335     then
    336        local_depository_path=$global_depository_path
    337     else
    338        printf "\n  +++ no depository path found in configuration file"
    339        printf "\n      for local host \"$local_host\" "
    340        printf "\n      please set \"\%depository_path\" in configuration file"
    341        locat=config_file; exit
    342     fi
    343  fi
    344  eval local_depository_path=$local_depository_path
    345  eval local_depository_path=$local_depository_path
     328 done < $tmp_mbuild
    346329
    347330
     
    395378 column1="local source path:"; column2=$local_source_path
    396379 printf "| $column1$column2 | \n"
    397  column1="make depository:"; column2=$local_depository_path
    398  printf "| $column1$column2 | \n"
    399380 printf "#------------------------------------------------------------------------# \n"
    400381
     
    405386 then
    406387
    407     cd  $local_source_path
    408 
    409 
    410        # LISTE DER ZU PRUEFENDEN QUELLTEXTDATEIEN ERSTELLEN
    411     source_code_files=`ls -1  *.$suf`
    412 
    413 
    414 
    415        # VERZEICHNIS FUER DAS MAKE-DEPOSITORY ERZEUGEN,
    416        # FALLS NOCH NICHT VORHANDEN. ANSONSTEN ALLE DATEIEN
    417        # NEUEREN DATUMS IN DIESES VERZEICHNIS KOPIEREN
    418     if [[ ! -d $local_depository_path ]]
    419     then
    420        if  mkdir $local_depository_path
    421        then
    422           printf "\n\n  *** directory for make depository:"
    423           printf "\n           $local_depository_path"
    424           printf "\n      was created\n"
    425 
    426              # MAKEFILE UND QUELLTEXTDATEIEN UNTER BEIBEHALTUNG
    427              # IHRES DATUMS INS VERZEICHNIS KOPIEREN
    428           printf "\n  *** makefile and source code files are copied to"
    429           printf "\n      $local_depository_path\n"
    430           printf "\n      copying makefile \"$makefile\" ..."
    431           cp -p  $makefile  $local_depository_path/Makefile
    432 
    433              # QUELLTEXTDATEIEN MUESSEN IM MAKEFILE AUFGEFUEHRT
    434              # SEIN
    435           for  filename  in  $source_code_files
    436           do
    437              if [[ $(grep -c $filename  $makefile) = 0 ]]
    438              then
    439                 printf "\n  +++ source code file:"
    440                 printf "\n         $filename"
    441                 printf "\n      is not listed in makefile"
    442                 locat=makefile; exit
    443              else
    444                 printf "\n      copying source code file \"$filename\" ..."
    445                 cp -p  $filename  $local_depository_path
    446              fi
    447           done
    448           printf "\n"
    449        else
    450           printf "\n  +++ directory for make depository:"
    451           printf "\n           $local_depository_path"
    452           printf "\n      cannot be created"
    453           locat=local_depository_path; exit
    454        fi
    455     else
    456  
    457        printf "\n  *** checking file status ..."
    458 
    459           # MAKEFILE KOPIEREN, FALLS NEUEREN DATUMS
    460        if [[ $makefile -nt $local_depository_path/Makefile ]]
    461        then
    462           printf "\n  *** update of \"$makefile\" "
    463           cp -f -p  $makefile  $local_depository_path/Makefile
    464           update=true
    465 
    466              # PRUEFEN, OB ALLE DATEIEN IM DEPOSITORY AUCH IM NEUEN MAKEFILE
    467              # VERZEICHNET SIND UND GEGEBENENFALLS DATEIEN LOESCHEN
    468           cd  $local_depository_path
    469           source_code_files_in_depository=`ls -1  *.$suf`
    470           for  filename  in  $source_code_files_in_depository
    471           do
    472              if [[ $(grep -c $filename  Makefile) = 0 ]]
    473              then
    474                 printf "\n  *** source code file in \"$local_depository_path\":"
    475                 printf "\n         $filename"
    476                 printf "\n      is not listed in makefile"
    477                 if [[ $silent = false ]]
    478                 then
    479                    answer=dummy
    480                    printf "\n\n"
    481                    while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    482                    do
    483                       printf " >>> delete \"$filename\" in \"$local_depository_path\" (y/n) ?  "
    484                       read  answer
    485                    done
    486                    if [[ $answer = y  ||  $answer = Y ]]
    487                    then
    488                       base=`echo $filename | cut -d. -f2`
    489                       rm -f  $filename
    490                       rm -f  ${base}.o  ${base}.mod
    491                       printf "\n  *** \"$filename\" deleted in \"$local_depository_path\" "
    492                    else
    493                       printf "\n  *** \"$filename\" not deleted in \"$local_depository_path\" "
    494                    fi
    495                 fi
    496              fi
    497           done
    498           cd  -  > /dev/null  2>&1
    499 
    500        elif [[ $local_depository_path/Makefile -nt $makefile ]]
    501        then
    502           printf "\n  *** makefile in depository is newer than"
    503           printf "\n      \"$makefile\" "
    504           if [[ $silent = false ]]
    505           then
    506              answer=dummy
    507              printf "\n\n"
    508              while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    509              do
    510                 printf " >>> update \"$makefile\" (y/n) ?  "
    511                 read  answer
    512              done
    513              if [[ $answer = y  ||  $answer = Y ]]
    514              then
    515                 cp -f -p  $local_depository_path/Makefile  $makefile
    516                 printf "\n  *** \"$makefile\" updated"
    517              else
    518                 printf "\n  *** \"$makefile\" not updated"
    519              fi
    520           fi
    521        fi
    522 
    523           # QUELLTEXTDATEIEN KOPIEREN, FALLS NEUEREN DATUMS
    524           # SIE MUESSEN IM MAKEFILE AUFGEFUEHRT SEIN
    525        for  filename  in  $source_code_files
    526        do
    527           if [[ $(grep -c $filename  $makefile) = 0 ]]
    528           then
    529              printf "\n  +++ source code file:"
    530              printf "\n         $filename"
    531              printf "\n      is not listed in makefile"
    532              locat=makefile; exit
    533           else
    534              if [[ ! -f $local_depository_path/$filename ]]
    535              then
    536                 cp -p  $filename  $local_depository_path
    537                 printf "\n  *** source code file \"$filename\" created in \"$local_depository_path\" "
    538              fi
    539              if [[ $filename -nt $local_depository_path/$filename ]]
    540              then
    541                 printf "\n  *** update of source code file \"$filename\" "
    542                 cp -f -p  $filename  $local_depository_path
    543                 update=true
    544              fi
    545           fi
    546        done
    547 
    548 
    549           # PRUEFEN, OB ALLE DATEIEN IM DEPOSITORY IM AKTUELLEN ARBEITSVERZEICHNIS VORHANDEN
    550           # ODER EVTL. NEUEREN DATUMS SIND
    551        cd  $local_depository_path
    552        source_code_files_in_depository=`ls -1  *.$suf`
    553        cd  -  > /dev/null  2>&1
    554        for  filename  in  $source_code_files_in_depository
    555        do
    556           if [[ ! -f $filename ]]
    557           then
    558              printf "\n  *** source code file \"$filename\" does not exist in current directory"
    559              if [[ $silent = false ]]
    560              then
    561                 answer=dummy
    562                 printf "\n\n"
    563                 while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    564                 do
    565                    printf " >>> create \"$filename\" in current directory (y/n) ?  "
    566                    read  answer
    567                 done
    568                 if [[ $answer = y  ||  $answer = Y ]]
    569                 then
    570                    cp -p  $local_depository_path/$filename  $filename
    571                    printf "\n  *** source code file \"$filename\" created in current directory"
    572                 else
    573                    printf "\n  *** source code file \"$filename\" not created in current directory"
    574                 fi
    575              fi
    576           elif [[ $local_depository_path/$filename -nt $filename ]]
    577           then
    578              ls -al $local_depository_path/$filename
    579              ls -al $filename
    580              printf "\n  *** source code file \"$filename\" in depository is newer than in current directory"
    581              if [[ $silent = false ]]
    582              then
    583                 answer=dummy
    584                 printf "\n\n"
    585                 while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    586                 do
    587                    printf " >>> update \"$filename\" in current directory (y/n) ?  "
    588                    read  answer
    589                 done
    590                 if [[ $answer = y  ||  $answer = Y ]]
    591                 then
    592                    cp -f -p  $local_depository_path/$filename  $filename
    593                    printf "\n  *** source code file \"$filename\" updated in current directory"
    594                 else
    595                    printf "\n  *** source code file \"$filename\" not updated in current directory"
    596                 fi
    597              fi
    598           fi
    599        done
    600 
    601        if [[ $update = false ]]
    602        then
    603           printf "\n  *** no updates necessary in \"$local_depository_path\" "
    604           if [[ $silent = false ]]
    605           then
    606              answer=dummy
    607              printf "\n\n"
    608              while [[ "$answer" != y  &&  "$answer" != Y  &&  "$answer" != n  &&  "$answer" != N ]]
    609              do
    610                 printf " >>> continue with updates on remote hosts (y/n) ?  "
    611                 read  answer
    612              done
    613              if [[ $answer = n  ||  $answer = N ]]
    614              then
    615                 locat=user_abort; exit
    616              fi
    617           fi
    618        fi
    619     fi
    620  
    621 
    622  
    623        # QUELLTEXTDATEIEN UND MAKEFILE MIT TAR ZUSAMMENBINDEN
    624388       # IN JEDEM FALL ALLEN DATEIEN WRITE-PERMIT GEBEN, DAMIT ES AUF
    625389       # DEN REMOTE-RECHNERN NICHT EVTL. ZU PROBLEMEN BEIM UEBERSCHREIBEN KOMMT
    626     printf "\n\n  *** tar of makefile and source files in depository ..." 
    627     cd  $local_depository_path
    628     chmod u+w  Makefile  *.$suf
     390    cd  $local_source_path
     391    printf "\n\n  *** tar of makefile and source files in $local_source_path" 
    629392    tar -cf  ${mainprog}_sources.tar  Makefile  *.$suf
    630393    printf "\n"
     
    665428 printf "\n  *** scanning configuration file for host(s) ..."
    666429
    667  grep  %fopts  $config_file  >  tmp_mbuild
     430 grep  %fopts  $config_file  >  $tmp_mbuild
    668431 while read line
    669432 do
     
    672435    (( ihost = ihost + 1 ))
    673436    hostline[$ihost]="$line"
    674  done < tmp_mbuild
     437 done < $tmp_mbuild
    675438
    676439 
     
    750513    line=""
    751514    found=false
    752     grep  "$remote_host_string" $config_file | grep "%remote_username"  >  tmp_mbuild
     515    grep  "$remote_host_string" $config_file | grep "%remote_username"  >  $tmp_mbuild
    753516    while read line1
    754517    do
     
    765528       fi
    766529
    767     done < tmp_mbuild
     530    done < $tmp_mbuild
    768531
    769532    if [[ $found = false ]]
     
    778541    line=""
    779542    remote_source_path=""
    780     grep  "$remote_host_string" $config_file | grep "%source_path"  >  tmp_mbuild
     543    grep  "$remote_host_string" $config_file | grep "%source_path"  >  $tmp_mbuild
    781544    while read line1
    782545    do
     
    792555       fi
    793556
    794     done < tmp_mbuild
     557    done < $tmp_mbuild
    795558
    796559    if [[ "$remote_source_path" = "" ]]
     
    813576    remote_md=""
    814577    line=""
    815     grep  "$remote_host_string" $config_file | grep "%depository_path"  >  tmp_mbuild
     578    grep  "$remote_host_string" $config_file | grep "%depository_path"  >  $tmp_mbuild
    816579    while read line1
    817580    do
     
    827590       fi
    828591
    829     done < tmp_mbuild
     592    done < $tmp_mbuild
    830593
    831594    if [[ "$remote_md" = "" ]]
     
    843606
    844607    remote_md=$(eval echo $remote_md)
     608    [[ "$condition1" != "" ]]  &&  remote_md=${remote_md}_$condition1
     609    [[ "$condition2" != "" ]]  &&  remote_md=${remote_md}_$condition2
    845610
    846611
     
    848613    line=""
    849614    found=false
    850     grep  "$remote_host_string" $config_file | grep "%compiler_name "  >  tmp_mbuild
     615    grep  "$remote_host_string" $config_file | grep "%compiler_name "  >  $tmp_mbuild
    851616    while read line1
    852617    do
     
    863628       fi
    864629
    865     done < tmp_mbuild
     630    done < $tmp_mbuild
    866631
    867632    if [[ $found = false ]]
     
    879644       line=""
    880645       found=false
    881        grep  "$remote_host_string" $config_file | grep "%compiler_name_ser"  >  tmp_mbuild
     646       grep  "$remote_host_string" $config_file | grep "%compiler_name_ser"  >  $tmp_mbuild
    882647       while read line1
    883648       do
     
    894659          fi
    895660
    896        done < tmp_mbuild
     661       done < $tmp_mbuild
    897662
    898663       if [[ $found = false ]]
     
    911676    line=""
    912677    found=false
    913     grep  "$remote_host_string" $config_file | grep "%cpp_options"  >  tmp_mbuild
     678    grep  "$remote_host_string" $config_file | grep "%cpp_options"  >  $tmp_mbuild
    914679    while read line1
    915680    do
     
    927692       fi
    928693
    929     done < tmp_mbuild
     694    done < $tmp_mbuild
    930695
    931696    if [[ $found = false ]]
     
    963728       # NETCDF-OPTIONEN ERMITTELN
    964729    line=""
    965     grep  "$remote_host_string" $config_file | grep "%netcdf_inc"  >  tmp_mbuild
     730    grep  "$remote_host_string" $config_file | grep "%netcdf_inc"  >  $tmp_mbuild
    966731    while read line1
    967732    do
     
    978743       fi
    979744
    980     done < tmp_mbuild
     745    done < $tmp_mbuild
    981746
    982747    line=""
    983     grep  "$remote_host_string" $config_file | grep "%netcdf_lib"  >  tmp_mbuild
     748    grep  "$remote_host_string" $config_file | grep "%netcdf_lib"  >  $tmp_mbuild
    984749    while read line1
    985750    do
     
    996761       fi
    997762
    998     done < tmp_mbuild
     763    done < $tmp_mbuild
    999764
    1000765
     
    1003768    line=""
    1004769    found=false
    1005     grep  "$remote_host_string" $config_file | grep "%fopts"  >  tmp_mbuild
     770    grep  "$remote_host_string" $config_file | grep "%fopts"  >  $tmp_mbuild
    1006771    while read line1
    1007772    do
     
    1022787       fi
    1023788
    1024     done < tmp_mbuild
     789    done < $tmp_mbuild
    1025790
    1026791    if [[ $found = false ]]
     
    1036801    line=""
    1037802    found=false
    1038     grep  "$remote_host_string" $config_file | grep "%lopts"  >  tmp_mbuild
     803    grep  "$remote_host_string" $config_file | grep "%lopts"  >  $tmp_mbuild
    1039804    while read line1
    1040805    do
     
    1055820       fi
    1056821
    1057     done < tmp_mbuild
     822    done < $tmp_mbuild
    1058823
    1059824    if [[ $found = false ]]
     
    1078843    column1="make depository:"; column2=$remote_md
    1079844    printf "| $column1$column2 | \n"
     845    line=$(echo "$remote_md" | cut -c51-)
     846    while [[ "$line" != "" ]]
     847    do
     848       column1=""
     849       column2=$line
     850       printf "| $column1$column2 | \n"
     851       line=$(echo "$line" | cut -c51-)
     852    done
    1080853    if [[ $compile_utility_programs = true ]]
    1081854    then
     
    12471020                   # KOENNEN DOLLAR-ZEICHEN NICHT BENUTZT WERDEN
    12481021                remote_md=`echo $remote_md | sed 's/\$HOME\///'`
    1249                 /bin/scp  ${mainprog}_sources.tar  ${remote_username}@${remote_addres}:${remote_md}/${mainprog}_sources.tar
     1022                /bin/scp  ${local_source_path}/${mainprog}_sources.tar  ${remote_username}@${remote_addres}:${remote_md}/${mainprog}_sources.tar
    12501023             else
    1251                 scp  ${mainprog}_sources.tar  ${remote_username}@${remote_addres}:${remote_md}/${mainprog}_sources.tar
     1024                scp  ${local_source_path}/${mainprog}_sources.tar  ${remote_username}@${remote_addres}:${remote_md}/${mainprog}_sources.tar
    12521025             fi
    12531026
     
    14771250          then
    14781251
     1252                # DEPOSITORY VERZEICHNIS ERZEUGEN, FALLS NOCH NICHT VORHANDEN
     1253             eval remote_md=$remote_md
     1254             if [[ ! -d $remote_md ]]
     1255             then
     1256                if  mkdir $remote_md
     1257                then
     1258                   printf "\n\n  *** directory for make depository:"
     1259                   printf "\n           $remote_md"
     1260                   printf "\n      was created\n"
     1261                else
     1262                   printf "\n  +++ directory for make depository:"
     1263                   printf "\n           $remote_md"
     1264                   printf "\n      cannot be created"
     1265                   locat=local_depository_path; exit
     1266                fi
     1267             fi
     1268
     1269                # QUELLTEXT-DATEIEN AUS REPOSITORY INS DEPOSITORY KOPIEREN
     1270             echo " "
     1271             echo "  *** updating sources in $remote_md"
     1272             cd  $remote_md
     1273             cp  $local_source_path/${mainprog}_sources.tar  .
     1274             tar xf  ${mainprog}_sources.tar
     1275
    14791276                # MAKE MIT ZUVOR ERMITTELTEN OPTIONEN AUF LOKALEM RECHNER AUSFUEHREN
    14801277             echo " "
Note: See TracChangeset for help on using the changeset viewer.