Update script solaris/build_solaris_package to take into account
SVN version control software used by Valgrind.
n-i-bz


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15554 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/solaris/build_solaris_package b/solaris/build_solaris_package
index 52508d7..78396c4 100755
--- a/solaris/build_solaris_package
+++ b/solaris/build_solaris_package
@@ -1,8 +1,8 @@
 #!/usr/bin/ksh
 #
-# Builds a Solaris IPS package called "valgrind" from the project sources.
-# Sources are cloned and updated to the tag found in solaris/valgrind.p5m
-# IPS manifest.
+# Builds a Solaris IPS package called "valgrind" from the source
+# directory. The Valgrind and VEX revisions are taken from that
+# source directory and written to solaris/valgrind.p5m IPS manifest.
 #
 # Requires the following packages to be installed on Solaris 11:
 # - data/xml-common		(install first before any docbook ones!)
@@ -22,15 +22,15 @@
 # - pkgrepo set -s $repo_uri publisher/prefix=valgrind
 #
 
-TMPDIR=/var/tmp/valgrind-solaris-build
+TMPDIR=/var/tmp/valgrind-build
 SRCDIR=$TMPDIR/sources
 INSTALLDIR=$TMPDIR/install
-PROJECT_URL=https://bitbucket.org/iraisr/valgrind-solaris
 IPS_MANIFEST=solaris/valgrind.p5m
 
 usage() {
     echo "Usage:"
-    echo "build_solaris_package -s repo_uri [-r lint_repo_uri]"
+    echo "build_solaris_package -p source_dir -s repo_uri [-r lint_repo_uri]"
+    echo "\t-p source_dir contains working copy of the Valgrind sources"
     echo "\t-s repo_uri publishes to the repository located at the given URI"
     echo "\t            or file system path"
     echo "\t-r lint_repo_uri location of lint reference repository"
@@ -40,7 +40,7 @@
     msg=$1
 
     echo "\n$msg"
-    echo "Additional information could be found in directory $TMPDIR"
+    echo "Additional information could be found in directory $TMPDIR."
     exit 1
 }
 
@@ -50,73 +50,77 @@
 
 create_dirs() {
     mkdir -p $TMPDIR
-    (( $? != 0 )) && fail "Failed to create directory $TMPDIR"
+    (( $? != 0 )) && fail "Failed to create directory $TMPDIR."
 
     mkdir -p $INSTALLDIR
-    (( $? != 0 )) && fail "Failed to create directory $INSTALLDIR"
+    (( $? != 0 )) && fail "Failed to create directory $INSTALLDIR."
 }
 
-clone_sources() {
-    printf "Cloning valgrind-solaris sources... "
-    hg --quiet clone --insecure $PROJECT_URL $SRCDIR 2> $TMPDIR/hg-clone.log.stderr
-    (( $? != 0 )) && fail "Failed to clone repo from $PROJECT_URL"
+export_sources() {
+    printf "Exporting sources... "
+    svn export --quiet --ignore-externals $source_directory $SRCDIR \
+        2> $TMPDIR/svn-export-valgrind.log.stderr
+    (( $? != 0 )) && fail "Failed to export working copy from $source_directory."
+    svn export --quiet --ignore-externals $source_directory/VEX $SRCDIR/VEX \
+        2> $TMPDIR/svn-export-vex.log.stderr
+    (( $? != 0 )) && fail "Failed to export working copy from $source_directory/VEX."
     printf "done.\n"
 }
 
-update_sources_to_revision() {
-    cd $SRCDIR
-    tag=$( grep "pkg.fmri" $IPS_MANIFEST | tr -s ' ' | \
-           sed -e 's/^.*developer\/debug\/valgrind@.*,//' )
-    [[ -z $tag ]] && fail "Failed to find revision tag in $IPS_MANIFEST"
+modify_ips_manifest() {
+    valgrind_rev=$( svn info $source_directory | grep Revision | sed -e 's/Revision: //' )
+    vex_rev=$( svn info $source_directory/VEX | grep Revision | sed -e 's/Revision: //' )
 
-    printf "Updating cloned sources to revision tag $tag... "
-    hg --quiet update -r $tag
-    (( $? != 0 )) && fail "Failed to update cloned sources to tag $tag"
-    printf "done.\n"
+    [[ -z $valgrind_rev ]] && fail "Failed to find Valgrind revision."
+    [[ -z $vex_rev ]] && fail "Failed to find VEX revision."
+
+    echo "Valgrind revision: $valgrind_rev, VEX revision $vex_rev."
+
+    sed -i -e "s/VVVVV-XXXX/${valgrind_rev}-${vex_rev}/" $SRCDIR/$IPS_MANIFEST
 }
 
 run_autogen() {
     printf "Creating autotools support files... "
     ./autogen.sh > $TMPDIR/autogen.log.stdout 2> $TMPDIR/autogen.log.stderr
-    (( $? != 0 )) && fail "Failed to generate autotools support files"
+    (( $? != 0 )) && fail "Failed to generate autotools support files."
     printf "done.\n"
 }
 
 run_configure() {
     printf "Running configure... "
     ./configure CC='gcc -m64' CXX='g++ -m64' --prefix=/usr > $TMPDIR/configure.log
-    (( $? != 0 )) && fail "Failed to run configure"
+    (( $? != 0 )) && fail "Failed to run configure."
     printf "done.\n"
 }
 
 run_make_docs() {
    printf "Making docs... "
    make --directory=docs html-docs > $TMPDIR/make-docs.log.stdout 2> $TMPDIR/make-docs.log.stderr
-   (( $? != 0 )) && fail "Failed to make html-docs"
+   (( $? != 0 )) && fail "Failed to make html-docs."
    printf "done.\n"
 }
 
 run_make_man_pages() {
    printf "Making man pages... "
    make --directory=docs man-pages > $TMPDIR/make-man-pages.log.stdout 2> $TMPDIR/make-man-pages.log.stderr
-   (( $? != 0 )) && fail "Failed to make man-pages"
+   (( $? != 0 )) && fail "Failed to make man-pages."
    printf "done.\n"
 }
 
 run_make() {
     printf "Running make... "
     make --quiet > $TMPDIR/make.log
-    (( $? != 0 )) && fail "Failed to run make"
+    (( $? != 0 )) && fail "Failed to run make."
     printf "done.\n"
 }
 
 run_make_install() {
     printf "Running 'make install'... "
     make --quiet install DESTDIR=$INSTALLDIR > $TMPDIR/make-install.log
-    (( $? != 0 )) && fail "Failed to run 'make install'"
+    (( $? != 0 )) && fail "Failed to run 'make install'."
 
     cp AUTHORS COPYING* NEWS NEWS.old README* $INSTALLDIR/usr/share/doc/valgrind
-    (( $? != 0 )) && fail "Failed to copy additional files to $INSTALLDIR"
+    (( $? != 0 )) && fail "Failed to copy additional files to $INSTALLDIR."
 
     printf "done.\n"
 }
@@ -124,25 +128,28 @@
 run_pkglint() {
     printf "Running pkglint... "
     pkglint -c $TMPDIR/lint-cache -r $lint_repo_uri $SRCDIR/$IPS_MANIFEST > $TMPDIR/pkglint.log
-    (( $? != 0 )) && fail "pkglint failed"
+    (( $? != 0 )) && fail "pkglint failed."
     printf "done.\n"
 }
 
 publish_package() {
     printf "Publishing package... "
     pkgsend publish -s $repo_uri -d $INSTALLDIR $SRCDIR/solaris/valgrind.p5m > $TMPDIR/pkgsend.log
-    (( $? != 0 )) && fail "Failed to publish the package"
+    (( $? != 0 )) && fail "Failed to publish the package."
     printf "done.\n"
 }
 
-while getopts "r:s:" args; do
+while getopts "p:r:s:" args; do
     case $args in
-    s)
-        repo_uri=$OPTARG
+    p)
+        source_directory=$OPTARG
         ;;
     r)
         lint_repo_uri=$OPTARG
         ;;
+    s)
+        repo_uri=$OPTARG
+        ;;
     *)
         usage
         exit 1
@@ -150,6 +157,12 @@
     esac
 done
 
+if [[ -z $source_directory ]]; then
+    echo "No source directory specified.\n"
+    usage
+    exit 1
+fi
+
 if [[ -z $repo_uri ]]; then
     echo "No repo_uri specified.\n"
     usage
@@ -165,7 +178,7 @@
     else
         lint_repo_uri=$( echo "$publisher" | cut -d ' ' -f 5 )
     fi
-    [[ -z $lint_repo_uri ]] && fail "Failed to determine solaris IPS publisher"
+    [[ -z $lint_repo_uri ]] && fail "Failed to determine solaris IPS publisher."
     echo "lint_repo_uri determined as $lint_repo_uri"
 fi
 
@@ -174,8 +187,8 @@
 create_dirs
 cd $TMPDIR
 
-clone_sources
-update_sources_to_revision 
+export_sources
+modify_ips_manifest
 cd $SRCDIR
 run_autogen
 run_configure
diff --git a/solaris/valgrind.p5m b/solaris/valgrind.p5m
index 599806c..e55aef5 100644
--- a/solaris/valgrind.p5m
+++ b/solaris/valgrind.p5m
@@ -1,10 +1,10 @@
-set name=pkg.fmri value=developer/debug/valgrind@3.11.0,1508
+set name=pkg.fmri value=developer/debug/valgrind@3.11.0,VVVVV-XXXX
 set name=pkg.description value="valgrind: instrumentation framework and tools to detect memory and threading problems"
 set name=pkg.summary value="Valgrind is an award-winning instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools. Currently x86 (32-bit) and amd64 (64-bit) platforms are supported."
 set name=variant.arch value=i386
 set name=info.classification value="org.opensolaris.category.2008:Development/System"
 set name=info.upstream-url value=https://bitbucket.org/iraisr/valgrind-solaris
-set name=info.source-url value=https://bitbucket.org/iraisr/valgrind-solaris/get/r1508.tar.bz2
+set name=info.source-url value=http://valgrind.org/
 
 # Contents:
 dir  path=usr/bin                       owner=root group=bin mode=0755