/[pdpsoft]/trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh
ViewVC logotype

Diff of /trunk/grid-mw-security/glexec/util/glexec_from_source/sac_from_source.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2204 by msalle, Tue Feb 8 16:17:47 2011 UTC revision 2205 by msalle, Thu Feb 24 10:06:22 2011 UTC
# Line 20  NEWFLAGFILE_TMP=/tmp/${NEWFLAGFILE_DEFAU Line 20  NEWFLAGFILE_TMP=/tmp/${NEWFLAGFILE_DEFAU
20  DESTDIR_DEFAULT=/tmp/build    # Where to install binaries  DESTDIR_DEFAULT=/tmp/build    # Where to install binaries
21    
22  webcvs=http://glite.cvs.cern.ch/cgi-bin/glite.cgi/  # Web CVS location  webcvs=http://glite.cvs.cern.ch/cgi-bin/glite.cgi/  # Web CVS location
23  mwsec_svnroot=https://ndpfsvn.nikhef.nl/repos/mwsec/  mwsec_svnroot=http://ndpfsvn.nikhef.nl/ro/mwsec/
24  globus_baseurl=http://www.globus.org/ftppub/   # Base for globus tarball  globus_baseurl=http://www.globus.org/ftppub/   # Base for globus tarball
25  globus_flavor=unset  globus_flavor=unset
26    
27  # Valid return codes: anything less than RC_FAILED is non-blocking  # Valid return codes: anything less than RC_FAILED is non-blocking
28  RC_SUCCESS=0  RC_SUCCESS=0
29  RC_SKIPPED=1  RC_SKIPPED=1
30  RC_FAILED=2  RC_DISTFAILED=2
31  RC_MISSDEP=4  RC_FAILED=4
32    RC_MISSDEP=8
33    
34  myexit()    {  myexit()    {
35      if [ -f "$NEWFLAGFILE_TMP" ];then      if [ -f "$NEWFLAGFILE_TMP" ];then
# Line 155  usage()        { Line 156  usage()        {
156      echo " -V            be more verbose."      echo " -V            be more verbose."
157      echo " -h            show this helptext."      echo " -h            show this helptext."
158      echo      echo
159      echo "Exit values:"      echo "Valid exit values:"
160      echo " 1  non-build related error"      echo " 1  non-build related error"
161      echo " $RC_FAILED  at least one build failed, but no failed dependencies"      echo "or sum of"
162      echo " $RC_MISSDEP  at least one build missed dependencies, but no build"\      echo " $RC_DISTFAILED  at least one distribution tarball failed"
163           "failed"      echo " $RC_FAILED  at least one build failed"
164      echo " `expr $RC_FAILED + $RC_MISSDEP`  at least one build failed and at"\      echo " $RC_MISSDEP  at least one build missed dependencies"
          "least on build missed dependencies"  
165      echo      echo
166      echo "Format for config file:"      echo "Format for config file:"
167      echo "<target> [tag:<value>] [compo:<value>] [cvsroot:<value>] \\"      echo "<target> [tag:<value>] [compo:<value>] [cvsroot:<value>] \\"
# Line 569  print_result() { Line 569  print_result() {
569      [ "$rc" = "$RC_SKIPPED" ] && return      [ "$rc" = "$RC_SKIPPED" ] && return
570      case "$rc" in      case "$rc" in
571          $RC_SUCCESS)    result="SUCCESS" ;;          $RC_SUCCESS)    result="SUCCESS" ;;
572            $RC_DISTFAILED) result="DIST TARBALL FAILED"
573                            echo "$tool" >> $NEWTARGETFILE
574                            DISTFAILED=$RC_DISTFAILED ;;
575          $RC_MISSDEP)    result="MISSING DEPS"          $RC_MISSDEP)    result="MISSING DEPS"
576                          echo "$tool" >> $NEWTARGETFILE                          echo "$tool" >> $NEWTARGETFILE
577                          MISSING=$RC_MISSDEP ;;                          MISSING=$RC_MISSDEP ;;
# Line 594  make_dist() { Line 597  make_dist() {
597          if [ -f "$tarball" ];then          if [ -f "$tarball" ];then
598              rm -f $tarball              rm -f $tarball
599          fi          fi
600          make dist || return $RC_FAILED          make dist || return $RC_DISTFAILED
601          mkdir -p ${myDISTDIR} && mv $tarball ${myDISTDIR} || return $RC_FAILED          mkdir -p ${myDISTDIR} && mv $tarball ${myDISTDIR} || return $RC_DISTFAILED
602      fi      fi
603      return $RC_SUCCESS      return $RC_SUCCESS
604  }  }
# Line 855  voms_git()     { Line 858  voms_git()     {
858                  ${includedir_flag} \                  ${includedir_flag} \
859                  --disable-glite --disable-java --with-api-only && \                  --disable-glite --disable-java --with-api-only && \
860      make && \      make && \
861      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
862      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
863      set_def_compo_flags voms prefix includes libdir      set_def_compo_flags voms prefix includes libdir
864      return $RC_SUCCESS      return $RC_SUCCESS
865  }  }
# Line 972  lcmaps()    { Line 975  lcmaps()    {
975                  ${globus_prefix_flag} \                  ${globus_prefix_flag} \
976                  ${globus_flavor_flag} && \                  ${globus_flavor_flag} && \
977      make && \      make && \
978      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
     make_dist || return $RC_FAILED  
979      set_def_compo_flags lcmaps prefix includes libdir      set_def_compo_flags lcmaps prefix includes libdir
980        
981      # remove liblcmaps*.la files from installation. It's a hack...      # remove liblcmaps*.la files from installation. It's a hack...
     cd ${lcmaps_libdir:-${lcmaps_prefix:-${myDESTDIR}/$GNU_DEF_PFX}}  
982      warning "Removing liblcmaps\*.la files from $findlibdir"      warning "Removing liblcmaps\*.la files from $findlibdir"
983      find . -name liblcmaps\*.la -exec rm "{}" \;      find ${lcmaps_libdir:-${lcmaps_prefix:-${myDESTDIR}/$GNU_DEF_PFX}} \
984            -name liblcmaps\*.la -exec rm "{}" \;
985      rc_lcmaps_interface=$RC_SUCCESS      rc_lcmaps_interface=$RC_SUCCESS
986    
987        make_dist || return $RC_DISTFAILED
988      return $RC_SUCCESS      return $RC_SUCCESS
989  }  }
990    
991  # LCMAPS-INTERFACE:  # LCMAPS-INTERFACE:
992  lcmaps_interface()    {  lcmaps_interface()    {
993      if [ "$rc_lcmaps" = "$RC_SUCCESS" ];then      if [ "$rc_lcmaps" = "$RC_SUCCESS" -o "$rc_lcmaps" = "$RC_DISTFAILED" ];then
994          warning "No need to build lcmaps_interface: "\          warning "No need to build lcmaps_interface: "\
995                  "lcmaps has been build successfully."                  "lcmaps has been build successfully."
996          return $RC_SUCCESS          return $RC_SUCCESS
# Line 1016  lcas() { Line 1021  lcas() {
1021                  ${includedir_flag} \                  ${includedir_flag} \
1022                  ${globus_prefix_flag} ${globus_flavor_flag} && \                  ${globus_prefix_flag} ${globus_flavor_flag} && \
1023      make && \      make && \
1024      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
     make_dist || return $RC_FAILED  
1025      set_def_compo_flags lcas prefix includes libdir      set_def_compo_flags lcas prefix includes libdir
1026      rc_lcas_interface=$RC_SUCCESS      rc_lcas_interface=$RC_SUCCESS
1027        make_dist || return $RC_DISTFAILED
1028      return $RC_SUCCESS      return $RC_SUCCESS
1029  }  }
1030    
1031  # LCAS-INTERFACE:  # LCAS-INTERFACE:
1032  lcas_interface()   {  lcas_interface()   {
1033      if [ "$rc_lcas" = "$RC_SUCCESS" ];then      if [ "$rc_lcas" = "$RC_SUCCESS" -o "$rc_lcas" = "$RC_DISTFAILED" ];then
1034          warning "No need to build lcas_interface: lcas has been build successfully."          warning "No need to build lcas_interface: lcas has been build successfully."
1035          return $RC_SUCCESS          return $RC_SUCCESS
1036      fi      fi
# Line 1053  glexec()    { Line 1058  glexec()    {
1058      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \
1059                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} && \                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} && \
1060      make && \      make && \
1061      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1062      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1063      return $RC_SUCCESS      return $RC_SUCCESS
1064  }  }
1065    
# Line 1068  lcmaps_plugins_basic() { Line 1073  lcmaps_plugins_basic() {
1073      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \
1074                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} && \                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} && \
1075      make && \      make && \
1076      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1077      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1078      return $RC_SUCCESS      return $RC_SUCCESS
1079  }  }
1080    
# Line 1083  lcmaps_plugins_verify_proxy()  { Line 1088  lcmaps_plugins_verify_proxy()  {
1088      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \
1089                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} && \                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} && \
1090      make && \      make && \
1091      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1092      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1093      return $RC_SUCCESS      return $RC_SUCCESS
1094  }  }
1095    
# Line 1100  lcmaps_plugins_voms()  { Line 1105  lcmaps_plugins_voms()  {
1105                  ${globus_prefix_flag} ${globus_flavor_flag} \                  ${globus_prefix_flag} ${globus_flavor_flag} \
1106                  ${voms_prefix_flag} ${voms_includes_flag} ${voms_libdir_flag} && \                  ${voms_prefix_flag} ${voms_includes_flag} ${voms_libdir_flag} && \
1107      make && \      make && \
1108      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1109      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1110      return $RC_SUCCESS      return $RC_SUCCESS
1111  }  }
1112    
# Line 1116  lcmaps_plugins_afs()   { Line 1121  lcmaps_plugins_afs()   {
1121                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \
1122                  ${globus_prefix_flag} ${globus_flavor_flag} && \                  ${globus_prefix_flag} ${globus_flavor_flag} && \
1123      make && \      make && \
1124      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1125      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1126      return $RC_SUCCESS      return $RC_SUCCESS
1127  }  }
1128    
# Line 1131  lcmaps_plugins_gums()  { Line 1136  lcmaps_plugins_gums()  {
1136      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \
1137                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} && \                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} && \
1138      make && \      make && \
1139      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1140      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1141      return $RC_SUCCESS      return $RC_SUCCESS
1142  }  }
1143    
# Line 1162  pep_api() { Line 1167  pep_api() {
1167      ./configure ${mypepprefix_flag} ${libdir_flag} ${sysconfdir_flag} \      ./configure ${mypepprefix_flag} ${libdir_flag} ${sysconfdir_flag} \
1168                  ${mypepdatadir_flag} && \                  ${mypepdatadir_flag} && \
1169      make && \      make && \
1170      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
     make doxygen && \  
     make_dist || return $RC_FAILED  
1171      set_def_compo_flags pep_api prefix      set_def_compo_flags pep_api prefix
1172        make doxygen && make_dist || return $RC_DISTFAILED
1173      return $RC_SUCCESS      return $RC_SUCCESS
1174  }  }
1175    
# Line 1180  lcmaps_plugins_c_pep() { Line 1184  lcmaps_plugins_c_pep() {
1184                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \
1185                  ${pep_api_prefix_flag} ${pep_api_libdir_flag} && \                  ${pep_api_prefix_flag} ${pep_api_libdir_flag} && \
1186      make && \      make && \
1187      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1188      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1189      return $RC_SUCCESS      return $RC_SUCCESS
1190  }  }
1191    
# Line 1195  jobrep_api()   { Line 1199  jobrep_api()   {
1199      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \
1200                  ${includedir_flag} && \                  ${includedir_flag} && \
1201      make && \      make && \
1202      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
     make_dist || return $RC_FAILED  
1203      set_def_compo_flags jobrep_api prefix includes libdir      set_def_compo_flags jobrep_api prefix includes libdir
1204        make_dist || return $RC_DISTFAILED
1205      return $RC_SUCCESS      return $RC_SUCCESS
1206  }  }
1207    
# Line 1210  lcmaps_plugins_jobrep()        { Line 1214  lcmaps_plugins_jobrep()        {
1214      ./bootstrap && \      ./bootstrap && \
1215      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \
1216                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \
1217                  ${jobrep_api_prefix_flag} ${jobrep_api_includes_flag} ${jobrep_api_libdir_flag} \                  ${jobrep_api_prefix_flag} ${jobrep_api_includes_flag} \
1218                        ${jobrep_api_libdir_flag} \
1219                  ${globus_prefix_flag} ${globus_flavor_flag} && \                  ${globus_prefix_flag} ${globus_flavor_flag} && \
1220      make && \      make && \
1221      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1222      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1223      return $RC_SUCCESS      return $RC_SUCCESS
1224  }  }
1225    
# Line 1240  saml2_xacml2_c_lib()   { Line 1245  saml2_xacml2_c_lib()   {
1245      ./configure ${prefix_flag} ${libdir_flag} \      ./configure ${prefix_flag} ${libdir_flag} \
1246                  --with-gsoap=${gsoap_prefix} && \                  --with-gsoap=${gsoap_prefix} && \
1247      make && \      make && \
1248      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
     make_dist || return $RC_FAILED  
1249      set_def_compo_flags xacml prefix      set_def_compo_flags xacml prefix
1250        make_dist || return $RC_DISTFAILED
1251      return $RC_SUCCESS      return $RC_SUCCESS
1252  }  }
1253    
# Line 1257  lcmaps_plugins_scas_client()   { Line 1262  lcmaps_plugins_scas_client()   {
1262                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \
1263                  ${xacml_prefix_flag} ${xacml_libdir_flag} && \                  ${xacml_prefix_flag} ${xacml_libdir_flag} && \
1264      make && \      make && \
1265      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1266      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1267      return $RC_SUCCESS      return $RC_SUCCESS
1268  }  }
1269    
# Line 1275  scas() { Line 1280  scas() {
1280                  ${xacml_prefix_flag} ${xacml_libdir_flag} \                  ${xacml_prefix_flag} ${xacml_libdir_flag} \
1281                  ${globus_prefix_flag} ${globus_flavor_flag} && \                  ${globus_prefix_flag} ${globus_flavor_flag} && \
1282      make && \      make && \
1283      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1284      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1285      return $RC_SUCCESS      return $RC_SUCCESS
1286  }  }
1287    
# Line 1290  ees()  { Line 1295  ees()  {
1295      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \      ./configure ${prefix_flag} ${libdir_flag} ${sysconfdir_flag} \
1296                  ${xacml_prefix_flag} ${xacml_libdir_flag} && \                  ${xacml_prefix_flag} ${xacml_libdir_flag} && \
1297      make && \      make && \
1298      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1299      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1300      return $RC_SUCCESS      return $RC_SUCCESS
1301  }  }
1302    
# Line 1306  lcas_plugins_basic()   { Line 1311  lcas_plugins_basic()   {
1311                  ${lcas_prefix_flag} ${lcas_includes_flag} ${lcas_libdir_flag} \                  ${lcas_prefix_flag} ${lcas_includes_flag} ${lcas_libdir_flag} \
1312                  ${globus_prefix_flag} ${globus_flavor_flag} && \                  ${globus_prefix_flag} ${globus_flavor_flag} && \
1313      make && \      make && \
1314      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1315      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1316      return $RC_SUCCESS      return $RC_SUCCESS
1317  }  }
1318    
# Line 1322  lcas_plugins_check_executable()        { Line 1327  lcas_plugins_check_executable()        {
1327                  ${lcas_prefix_flag} ${lcas_includes_flag} ${lcas_libdir_flag} \                  ${lcas_prefix_flag} ${lcas_includes_flag} ${lcas_libdir_flag} \
1328                  ${globus_prefix_flag} ${globus_flavor_flag} && \                  ${globus_prefix_flag} ${globus_flavor_flag} && \
1329      make && \      make && \
1330      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1331      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1332      return $RC_SUCCESS      return $RC_SUCCESS
1333  }  }
1334    
# Line 1349  gridsite()     { Line 1354  gridsite()     {
1354          return $RC_FAILED          return $RC_FAILED
1355    
1356      VERSION=`grep "^PATCH_VERSION" ../VERSION|cut -d= -f2`      VERSION=`grep "^PATCH_VERSION" ../VERSION|cut -d= -f2`
     make_dist ../gridsite-${VERSION}.src.tar.gz || return $RC_FAILED  
1357    
1358      # Setup gridsite flag for other compos      # Setup gridsite flag for other compos
1359      set_compo_flags gridsite prefix libdir      set_compo_flags gridsite prefix libdir
1360    
1361        make_dist ../gridsite-${VERSION}.src.tar.gz || return $RC_DISTFAILED
1362      return $RC_SUCCESS      return $RC_SUCCESS
1363  }  }
1364    
# Line 1369  lcas_plugins_voms() { Line 1375  lcas_plugins_voms() {
1375                  ${voms_prefix_flag} ${voms_includes_flag} ${voms_libdir_flag} \                  ${voms_prefix_flag} ${voms_includes_flag} ${voms_libdir_flag} \
1376                  ${gridsite_prefix_flag} &&                  ${gridsite_prefix_flag} &&
1377      make && \      make && \
1378      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1379      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1380      return $RC_SUCCESS      return $RC_SUCCESS
1381  }  }
1382    
# Line 1388  lcas_lcmaps_gt4_interface()    { Line 1394  lcas_lcmaps_gt4_interface()    {
1394                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \                  ${lcmaps_prefix_flag} ${lcmaps_includes_flag} ${lcmaps_libdir_flag} \
1395                  ${globus_prefix_flag} ${globus_flavor_flag} && \                  ${globus_prefix_flag} ${globus_flavor_flag} && \
1396      make && \      make && \
1397      make ${DESTDIR_flag} install && \      make ${DESTDIR_flag} install || return $RC_FAILED
1398      make_dist || return $RC_FAILED      make_dist || return $RC_DISTFAILED
1399      return $RC_SUCCESS      return $RC_SUCCESS
1400  }  }
1401    
# Line 1583  if [ -n "$reqs" ];then Line 1589  if [ -n "$reqs" ];then
1589      error "Unknown target(s): $reqs"      error "Unknown target(s): $reqs"
1590  fi  fi
1591    
1592    DISTFAILED=0
1593  MISSING=0  MISSING=0
1594  FAILED=0  FAILED=0
1595  # Anything to be done?  # Anything to be done?
# Line 1610  if [ -n "$build_targets" ];then Line 1617  if [ -n "$build_targets" ];then
1617      fi      fi
1618  fi  fi
1619    
1620  myexit `expr $MISSING + $FAILED`  myexit `expr $DISTFAILED + $MISSING + $FAILED`

Legend:
Removed from v.2204  
changed lines
  Added in v.2205

grid.support@nikhef.nl
ViewVC Help
Powered by ViewVC 1.1.28