Hi Michael:

The C++ changes look fine to me.  I am less familiar with scripts, so I hope 
someone else will chime in on that part of the patch.
 
You might consider checking this in as two separate pataches anyway, since the 
problems fixed in the C++ and script codes are correspondingly distinct.

THH
________________________________________
From: Michael Ferguson [[email protected]]
Sent: Monday, February 24, 2014 11:01 AM
To: chapel-developers
Subject: [Chapel-developers] request for review: portability fixes

Hi -

I recently switched to using Debian 7.4 for my Chapel development,
and I discovered:
  - gcc 4.7.2 has -Wall enabled warnings about casting away const
  - /bin/sh is more POSIX-compilant and doesn't like bash-isms
  - /bin/csh is not tcsh and behaves oddly with echo >> somefile

I've addressed these problems. For the build errors, in most
cases I just made cast-to types include 'const' in the right way,
but in one case I actually added C++'s const_cast.

The main /bin/sh problem is that [ "a" == "b" ] does not
work; what we want is [ "a" = "b" ] for string comparison
or [ 1 -eq 2 ] for numeric comparison.

The /bin/csh problems caused me to convert two tests
to using /bin/sh :
  test/memory/shannon/outofmemory/sub_test
and lots of tiny scripts in
  test/compflags/bradc/printstuff/

since the group has been trying to move away from csh.

Patch below and attached.

Index: compiler/AST/symbol.cpp
===================================================================
--- compiler/AST/symbol.cpp     (revision 22775)
+++ compiler/AST/symbol.cpp     (working copy)
@@ -1800,8 +1800,8 @@


  static int compareLineno(const void* v1, const void* v2) {
-  FnSymbol* fn1 = *(FnSymbol**)v1;
-  FnSymbol* fn2 = *(FnSymbol**)v2;
+  FnSymbol* fn1 = *(FnSymbol* const *)v1;
+  FnSymbol* fn2 = *(FnSymbol* const *)v2;
    if (fn1->linenum() > fn2->linenum())
      return 1;
    else if (fn1->linenum() < fn2->linenum())
Index: compiler/AST/type.cpp
===================================================================
--- compiler/AST/type.cpp       (revision 22775)
+++ compiler/AST/type.cpp       (working copy)
@@ -1615,8 +1615,8 @@
  // Compare the cnames of different types alphabetically
  static int compareCnames(const void* v1, const void* v2) {
    int retval;
-  TypeSymbol* t1 = *(TypeSymbol**)v1;
-  TypeSymbol* t2 = *(TypeSymbol**)v2;
+  TypeSymbol* t1 = *(TypeSymbol* const *)v1;
+  TypeSymbol* t2 = *(TypeSymbol* const *)v2;
    retval = strcmp(t1->cname, t2->cname);
    if (retval > 0)
      return 1;
Index: compiler/passes/codegen.cpp
===================================================================
--- compiler/passes/codegen.cpp (revision 22775)
+++ compiler/passes/codegen.cpp (working copy)
@@ -316,8 +316,8 @@

  static int
  compareSymbol(const void* v1, const void* v2) {
-  Symbol* s1 = *(Symbol**)v1;
-  Symbol* s2 = *(Symbol**)v2;
+  Symbol* s1 = *(Symbol* const *)v1;
+  Symbol* s2 = *(Symbol* const *)v2;
    ModuleSymbol* m1 = s1->getModule();
    ModuleSymbol* m2 = s2->getModule();
    if (m1 != m2) {
Index: compiler/passes/docs.cpp
===================================================================
--- compiler/passes/docs.cpp    (revision 22775)
+++ compiler/passes/docs.cpp    (working copy)
@@ -16,14 +16,14 @@
  int NUMTABS = 0;

  static int compareNames(const void* v1, const void* v2) {
-  Symbol* s1 = *(Symbol**)v1;
-  Symbol* s2 = *(Symbol**)v2;
+  Symbol* s1 = *(Symbol* const *)v1;
+  Symbol* s2 = *(Symbol* const *)v2;
    return strcmp(s1->name, s2->name);
  }

  static int compareClasses(const void *v1, const void* v2) {
-  Type *t1 = *(Type**)v1;
-  Type *t2 = *(Type**)v2;
+  Type *t1 = *(Type* const *)v1;
+  Type *t2 = *(Type* const *)v2;
    return strcmp(t1->symbol->name, t2->symbol->name);
  }

Index: compiler/optimizations/scalarReplace.cpp
===================================================================
--- compiler/optimizations/scalarReplace.cpp    (revision 22775)
+++ compiler/optimizations/scalarReplace.cpp    (working copy)
@@ -68,8 +68,8 @@
  //
  static int
  compareTypesByOrder(const void* v1, const void* v2) {
-  ClassType* ct1 = *(ClassType**)v1;
-  ClassType* ct2 = *(ClassType**)v2;
+  ClassType* ct1 = *(ClassType* const *)v1;
+  ClassType* ct2 = *(ClassType* const *)v2;
    int order1 = typeOrder.get(ct1);
    int order2 = typeOrder.get(ct2);
    if (order1 < order2)
Index: compiler/util/stringutil.cpp
===================================================================
--- compiler/util/stringutil.cpp        (revision 22775)
+++ compiler/util/stringutil.cpp        (working copy)
@@ -92,7 +92,7 @@
    Vec<const char*> keys;
    chapelStringsTable.get_keys(keys);
    forv_Vec(const char, key, keys) {
-    free((void*)key);
+    free(const_cast<char*>(key));
    }
  }

Index: test/compflags/bradc/printstuff/versionhelp.csh
===================================================================
--- test/compflags/bradc/printstuff/versionhelp.csh     (revision 22775)
+++ test/compflags/bradc/printstuff/versionhelp.csh     (working copy)
@@ -1,6 +0,0 @@
-#!/bin/csh -f
-set compiler = $3
-echo -n `basename $compiler`
-cat version.goodstart
-diff ../../../../compiler/main/BUILD_VERSION ./zero.txt >& /dev/null && echo 
"" || (echo -n "." && cat ../../../../compiler/main/BUILD_VERSION)
-
Index: test/compflags/bradc/printstuff/zcopylice.prediff
===================================================================
--- test/compflags/bradc/printstuff/zcopylice.prediff   (revision 22775)
+++ test/compflags/bradc/printstuff/zcopylice.prediff   (working copy)
@@ -1,2 +1,2 @@
-#!/bin/csh -f
-./licensehelp.csh $1 $2 $3 > zcopylice.good
+#!/bin/sh
+./licensehelp.sh $1 $2 $3 > zcopylice.good
Index: test/compflags/bradc/printstuff/zall.prediff
===================================================================
--- test/compflags/bradc/printstuff/zall.prediff        (revision 22775)
+++ test/compflags/bradc/printstuff/zall.prediff        (working copy)
@@ -1,5 +1,6 @@
-#!/bin/csh -f
-./versionhelp.csh $1 $2 $3 > zall.good
-./licensehelp.csh $1 $2 $3 >> zall.good
+#!/bin/sh
+./versionhelp.sh $1 $2 $3 > zall.good
+./licensehelp.sh $1 $2 $3 >> zall.good
+#echo >> zall.good This version does not result in a newline on Debian 7.4's 
csh
  echo >> zall.good
-./helphelp.csh $1 $2 $3 >> zall.good
+./helphelp.sh $1 $2 $3 >> zall.good
Index: test/compflags/bradc/printstuff/zcopyvers.prediff
===================================================================
--- test/compflags/bradc/printstuff/zcopyvers.prediff   (revision 22775)
+++ test/compflags/bradc/printstuff/zcopyvers.prediff   (working copy)
@@ -1,3 +1,3 @@
-#!/bin/csh -f
-./versionhelp.csh $1 $2 $3 > zcopyvers.good
-./copyrighthelp.csh $1 $2 $3 >> zcopyvers.good
+#!/bin/sh
+./versionhelp.sh $1 $2 $3 > zcopyvers.good
+./copyrighthelp.sh $1 $2 $3 >> zcopyvers.good
Index: test/compflags/bradc/printstuff/copyrighthelp.sh
===================================================================
--- test/compflags/bradc/printstuff/copyrighthelp.sh    (revision 22775)
+++ test/compflags/bradc/printstuff/copyrighthelp.sh    (working copy)
@@ -1,2 +1,2 @@
-#!/bin/csh -f
+#!/bin/sh
  cat ../../../../COPYRIGHT
Index: test/compflags/bradc/printstuff/zhelplice.prediff
===================================================================
--- test/compflags/bradc/printstuff/zhelplice.prediff   (revision 22775)
+++ test/compflags/bradc/printstuff/zhelplice.prediff   (working copy)
@@ -1,4 +1,4 @@
-#!/bin/csh -f
-./licensehelp.csh $1 $2 $3 > zhelplice.good
+#!/bin/sh
+./licensehelp.sh $1 $2 $3 > zhelplice.good
  echo >> zhelplice.good
-./helphelp.csh $1 $2 $3 >> zhelplice.good
+./helphelp.sh $1 $2 $3 >> zhelplice.good
Index: test/compflags/bradc/printstuff/copyrighthelp.csh
===================================================================
--- test/compflags/bradc/printstuff/copyrighthelp.csh   (revision 22775)
+++ test/compflags/bradc/printstuff/copyrighthelp.csh   (working copy)
@@ -1,2 +0,0 @@
-#!/bin/csh -f
-cat ../../../../COPYRIGHT
Index: test/compflags/bradc/printstuff/zhelpvers.prediff
===================================================================
--- test/compflags/bradc/printstuff/zhelpvers.prediff   (revision 22775)
+++ test/compflags/bradc/printstuff/zhelpvers.prediff   (working copy)
@@ -1,5 +1,5 @@
-#!/bin/csh -f
-./versionhelp.csh $1 $2 $3 > zhelpvers.good
-./copyrighthelp.csh $1 $2 $3 >> zhelpvers.good
+#!/bin/sh
+./versionhelp.sh $1 $2 $3 > zhelpvers.good
+./copyrighthelp.sh $1 $2 $3 >> zhelpvers.good
  echo >> zhelpvers.good
-./helphelp.csh $1 $2 $3 >> zhelpvers.good
+./helphelp.sh $1 $2 $3 >> zhelpvers.good
Index: test/compflags/bradc/printstuff/version.prediff
===================================================================
--- test/compflags/bradc/printstuff/version.prediff     (revision 22775)
+++ test/compflags/bradc/printstuff/version.prediff     (working copy)
@@ -1,4 +1,4 @@
-#!/bin/csh -f
-./versionhelp.csh $1 $2 $3 > version.good
-./copyrighthelp.csh $1 $2 $3 >> version.good
+#!/bin/sh
+./versionhelp.sh $1 $2 $3 > version.good
+./copyrighthelp.sh $1 $2 $3 >> version.good

Index: test/compflags/bradc/printstuff/licensehelp.sh
===================================================================
--- test/compflags/bradc/printstuff/licensehelp.sh      (revision 22775)
+++ test/compflags/bradc/printstuff/licensehelp.sh      (working copy)
@@ -1,2 +1,2 @@
-#!/bin/csh -f
+#!/bin/sh
  cat ../../../../LICENSE
Index: test/compflags/bradc/printstuff/versionhelp.sh
===================================================================
--- test/compflags/bradc/printstuff/versionhelp.sh      (revision 22775)
+++ test/compflags/bradc/printstuff/versionhelp.sh      (working copy)
@@ -1,6 +1,6 @@
-#!/bin/csh -f
-set compiler = $3
+#!/bin/sh
+compiler=$3
  echo -n `basename $compiler`
  cat version.goodstart
-diff ../../../../compiler/main/BUILD_VERSION ./zero.txt >& /dev/null && echo 
"" || (echo -n "." && cat ../../../../compiler/main/BUILD_VERSION)
+diff ../../../../compiler/main/BUILD_VERSION ./zero.txt > /dev/null 2>&1 && 
echo "" || (echo -n "." && cat ../../../../compiler/main/BUILD_VERSION)

Index: test/compflags/bradc/printstuff/licensehelp.csh
===================================================================
--- test/compflags/bradc/printstuff/licensehelp.csh     (revision 22775)
+++ test/compflags/bradc/printstuff/licensehelp.csh     (working copy)
@@ -1,2 +0,0 @@
-#!/bin/csh -f
-cat ../../../../LICENSE
Index: test/compflags/bradc/printstuff/helphelp.sh
===================================================================
--- test/compflags/bradc/printstuff/helphelp.sh (revision 22775)
+++ test/compflags/bradc/printstuff/helphelp.sh (working copy)
@@ -1,2 +1,2 @@
-#!/bin/csh -f
+#!/bin/sh
  cat ../help/userhelp.good
Index: test/compflags/bradc/printstuff/helphelp.csh
===================================================================
--- test/compflags/bradc/printstuff/helphelp.csh        (revision 22775)
+++ test/compflags/bradc/printstuff/helphelp.csh        (working copy)
@@ -1,2 +0,0 @@
-#!/bin/csh -f
-cat ../help/userhelp.good
Index: test/compflags/bradc/printstuff/zlicevers.prediff
===================================================================
--- test/compflags/bradc/printstuff/zlicevers.prediff   (revision 22775)
+++ test/compflags/bradc/printstuff/zlicevers.prediff   (working copy)
@@ -1,3 +1,3 @@
-#!/bin/csh -f
-./versionhelp.csh $1 $2 $3 > zlicevers.good
-./licensehelp.csh $1 $2 $3 >> zlicevers.good
+#!/bin/sh
+./versionhelp.sh $1 $2 $3 > zlicevers.good
+./licensehelp.sh $1 $2 $3 >> zlicevers.good
Index: test/compflags/bradc/printstuff/copyright.prediff
===================================================================
--- test/compflags/bradc/printstuff/copyright.prediff   (revision 22775)
+++ test/compflags/bradc/printstuff/copyright.prediff   (working copy)
@@ -1,3 +1,3 @@
-#!/bin/csh -f
-./copyrighthelp.csh $1 $2 $3 > copyright.good
-echo "Hello, Merl\!" >> copyright.good
+#!/bin/sh
+./copyrighthelp.sh $1 $2 $3 > copyright.good
+echo "Hello, Merl!" >> copyright.good
Index: test/compflags/bradc/printstuff/zcopyhelp.prediff
===================================================================
--- test/compflags/bradc/printstuff/zcopyhelp.prediff   (revision 22775)
+++ test/compflags/bradc/printstuff/zcopyhelp.prediff   (working copy)
@@ -1,4 +1,4 @@
-#!/bin/csh -f
-./copyrighthelp.csh $1 $2 $3 > zcopyhelp.good
+#!/bin/sh
+./copyrighthelp.sh $1 $2 $3 > zcopyhelp.good
  echo >> zcopyhelp.good
-./helphelp.csh $1 $2 $3 >> zcopyhelp.good
+./helphelp.sh $1 $2 $3 >> zcopyhelp.good
Index: test/compflags/bradc/printstuff/license.prediff
===================================================================
--- test/compflags/bradc/printstuff/license.prediff     (revision 22775)
+++ test/compflags/bradc/printstuff/license.prediff     (working copy)
@@ -1,2 +1,2 @@
-#!/bin/csh -f
-./licensehelp.csh $1 $2 $3 > license.good
+#!/bin/sh
+./licensehelp.sh $1 $2 $3 > license.good
Index: test/io/ferguson/readThis/readclass4.prediff
===================================================================
--- test/io/ferguson/readThis/readclass4.prediff        (revision 22775)
+++ test/io/ferguson/readThis/readclass4.prediff        (working copy)
@@ -4,7 +4,7 @@
  outfile=$2

  grep -i error $outfile > $outfile.2
-if [ $? == 0 ]
+if [ $? -eq 0 ]
  then
    echo CompileError > $outfile.2
    mv $outfile.2 $outfile
Index: test/chpldoc/module/PREDIFF
===================================================================
--- test/chpldoc/module/PREDIFF (revision 22775)
+++ test/chpldoc/module/PREDIFF (working copy)
@@ -2,7 +2,7 @@

  chplCompiler=`basename $3`

-if [ "$chplCompiler" == "chpldoc" ];
+if [ "$chplCompiler" = "chpldoc" ];
  then
     cat $1.doc.out > $1.good
  else
Index: test/chpldoc/PREDIFF
===================================================================
--- test/chpldoc/PREDIFF        (revision 22775)
+++ test/chpldoc/PREDIFF        (working copy)
@@ -2,7 +2,7 @@

  chplCompiler=`basename $3`

-if [ "$chplCompiler" == "chpldoc" ];
+if [ "$chplCompiler" = "chpldoc" ];
  then
     cat $1.doc.out > $1.good
  else
Index: test/memory/shannon/outofmemory/sub_test
===================================================================
--- test/memory/shannon/outofmemory/sub_test    (revision 22775)
+++ test/memory/shannon/outofmemory/sub_test    (working copy)
@@ -1,6 +1,6 @@
-#!/bin/csh -f
+#!/bin/bash

-limit vmemoryuse 256M
+# Set virtual memory limit
+ulimit -v 262144

  ../../../../util/test/sub_test $1
-

------------------------------------------------------------------------------
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis & security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________
Chapel-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-developers

Reply via email to