[med-svn] [Git][med-team/libarb][upstream] 2 commits: New upstream version 6.0.6

Andreas Tille gitlab at salsa.debian.org
Thu Jun 6 13:13:48 BST 2019



Andreas Tille pushed to branch upstream at Debian Med / libarb


Commits:
0535f5d6 by Andreas Tille at 2019-06-06T10:27:44Z
New upstream version 6.0.6
- - - - -
5637dc90 by Andreas Tille at 2019-06-06T12:12:58Z
New upstream version 6.0.6
- - - - -


5 changed files:

- + BUGEX/bugex.h
- + SOURCE_TOOLS/build_info.pl
- + SOURCE_TOOLS/generate_all_links.sh
- + TEMPLATES/Makefile
- + TEMPLATES/bytestring.h


Changes:

=====================================
BUGEX/bugex.h
=====================================
@@ -0,0 +1,208 @@
+//  ==================================================================== //
+//                                                                       //
+//    File      : bugex.h                                                //
+//    Purpose   : Debugging code                                         //
+//                                                                       //
+//                                                                       //
+//  Coded by Ralf Westram (coder at reallysoft.de) in April 2003            //
+//  Copyright Department of Microbiology (Technical University Munich)   //
+//                                                                       //
+//  Visit our web site at: http://www.arb-home.de/                       //
+//                                                                       //
+//                                                                       //
+//  ==================================================================== //
+
+// Description :
+//
+// when using the macros XXX_DUMP_VAL and XXX_DUMP_STR the program prints
+// out information about the specified variables.
+//
+// This information is prefixed by 'FILE:LINENO: '
+//
+// The intention is to use the program as compile-command in emacs and follow
+// the program flow with next-error / previous-error
+//
+// Note : When finished with debugging you should remove the #include "bugex.h"
+// because it adds unneeded code to EVERY object file!
+
+// --------------------------------------------------------------------------------
+// This section is used by Ralf
+// If you want to use the DUMP-Macros copy this section and personalize it!
+
+#if defined(DEVEL_RALF)
+
+#define BUGEX_DUMPS
+#define BUGEX_MAX_STRING_PRINT 40
+
+#define RALF_DUMP_EXPR(type,var) ALL_DUMP_EXPR(type,var)
+#define RALF_DUMP_VAL(var)       ALL_DUMP_VAL(var)
+#define RALF_DUMP_STR(var)       ALL_DUMP_STR(var)
+#define RALF_DUMP_PTR(var)       ALL_DUMP_PTR(var)
+#define RALF_DUMP_MARK()         ALL_DUMP_MARK()
+
+#else
+
+#define RALF_DUMP_VAL(var)
+#define RALF_DUMP_STR(var)
+#define RALF_DUMP_MARK()
+
+#endif
+
+// --------------------------------------------------------------------------------
+// This section is used by Yadhu
+
+#if defined(DEVEL_YADHU)
+
+#define BUGEX_DUMPS
+#define BUGEX_MAX_STRING_PRINT 40
+#define YADHU_DUMP_VAL(var)  ALL_DUMP_VAL(var)
+#define YADHU_DUMP_STR(var)  ALL_DUMP_STR(var)
+#define YADHU_DUMP_PTR(var)  ALL_DUMP_PTR(var)
+#define YADHU_DUMP_MARK()    ALL_DUMP_MARK()
+
+#else
+
+#define YADHU_DUMP_VAL(var)
+#define YADHU_DUMP_STR(var)
+#define YADHU_DUMP_MARK()
+
+#endif
+
+// --------------------------------------------------------------------------------
+// Definition of needed macros/functions :
+
+#if defined(BUGEX_DUMPS)
+
+#ifndef _GLIBCXX_CCTYPE
+#include <cctype>
+#endif
+
+// Do NOT use the following macros!!!
+
+#define ALL_DUMP_EXPR(type,expr)                                        \
+    do {                                                                \
+        type tmp_var = (expr);                                          \
+        bugex_dump_value(&tmp_var, "[" #expr "]", sizeof(tmp_var), __FILE__, __LINE__); \
+    } while (0)
+
+#define ALL_DUMP_VAL(var) bugex_dump_value(&var, #var, sizeof(var), __FILE__, __LINE__)
+#define ALL_DUMP_STR(var) bugex_dump_string(&var, #var, __FILE__, __LINE__)
+#define ALL_DUMP_PTR(var) bugex_dump_pointer(&var, #var, __FILE__, __LINE__)
+#define ALL_DUMP_MARK()   bugex_dump_mark(__FILE__, __LINE__)
+
+static void bugex_dump_mark(const char *file, size_t lineno) {
+    fprintf(stderr, "%s:%zu: ------------------------------ MARK\n", file, lineno);
+    fflush(stderr);
+}
+
+static void bugex_printString(const char *str, size_t len) {
+    while (len--) {
+        unsigned char c = (unsigned char)*str++;
+        if (isprint(c)) {
+            fputc(c, stderr);
+        }
+        else {
+            switch (c) {
+                case '\n': fputs("\\n", stderr); break;
+                case '\t': fputs("\\t", stderr); break;
+                default: fprintf(stderr, "\\%i", (int)c); break;
+            }
+        }
+    }
+}
+
+static void bugex_dump_pointer(void *somePtr, const char *someName, const char *file, size_t lineno) {
+    fprintf(stderr, "%s:%zu: %s: %p -> %p\n", file, lineno, someName, somePtr, *(void**)somePtr);
+    fflush(stderr);
+}
+
+static void bugex_dump_string(void *strPtr, const char *strName, const char *file, size_t lineno) {
+    const char *s = *((const char **)strPtr);
+
+    fprintf(stderr, "%s:%zu: ", file, lineno);
+
+    if (s == 0) {               // NULL pointer
+        fprintf(stderr, "%s is NULL (&=%p)\n", strName, strPtr);
+    }
+    else {
+        size_t len = strlen(s);
+
+        fprintf(stderr, "%s = \"", strName);
+        if (len <= BUGEX_MAX_STRING_PRINT) { // short strings
+            bugex_printString(s, len);
+        }
+        else {
+            bugex_printString(s, BUGEX_MAX_STRING_PRINT/2);
+            fprintf(stderr, "\" .. \"");
+            bugex_printString(s+len-BUGEX_MAX_STRING_PRINT/2, BUGEX_MAX_STRING_PRINT/2);
+        }
+        fprintf(stderr, "\" (len=%zu, &=%p -> %p)\n", len, strPtr, s);
+    }
+    fflush(stderr);
+}
+
+
+#define BUGEX_VALSIZES 4
+static unsigned short bugex_valsize[] = { sizeof(char), sizeof(short), sizeof(int), sizeof(long), 0 };
+enum bugex_valtype { BUGEX_CHAR, BUGEX_SHORT, BUGEX_INT, BUGEX_LONG, BUGEX_UNKNOWN };
+
+static void bugex_dump_value(void *valuePtr, const char *valueName, size_t size, const char *file, size_t lineno) {
+    int                vs;
+    enum bugex_valtype type = BUGEX_UNKNOWN;
+
+    if (size == bugex_valsize[BUGEX_INT]) {
+        type = BUGEX_INT; // prefer int
+    }
+    else {
+        for (vs = 0; vs < BUGEX_VALSIZES; ++vs) {
+            if (size == bugex_valsize[vs]) {
+                type = (enum bugex_valtype)vs;
+            }
+        }
+    }
+
+    fprintf(stderr, "%s:%zu: ", file, lineno);
+
+    switch (type) {
+        case BUGEX_CHAR: {
+            unsigned char c = *(unsigned char*)valuePtr;
+            int           i = (int)(signed char)c;
+
+            fprintf(stderr, "(char)  %s = '%c' = %i", valueName, c, i);
+            if (i<0) fprintf(stderr, " = %u", (unsigned int)c);
+            fprintf(stderr, " (&=%p)", valuePtr);
+            break;
+        }
+        case BUGEX_SHORT: {
+            unsigned short s  = *(unsigned short *)valuePtr;
+            signed short   ss = (signed short)s;
+            
+            fprintf(stderr, "(short) %s = %hi", valueName, (int)ss);
+            if (ss<0) fprintf(stderr, " = %hu", s);
+            fprintf(stderr, " = 0x%hx (&=%p)", s, valuePtr);
+            break;
+        }
+        case BUGEX_INT: {
+            unsigned int u = *(unsigned int *)valuePtr;
+            int          i = (int)u;
+
+            fprintf(stderr, "(int) %s = %i", valueName, i);
+            if (i<0) fprintf(stderr, " = %u", u);
+            fprintf(stderr, " = 0x%x (&=%p)", u, valuePtr);
+            break;
+        }
+        case BUGEX_LONG: {
+            unsigned long l = *(unsigned long *)valuePtr;
+            fprintf(stderr, "(long)  %s = %li = %lu = 0x%lx (&=%p)", valueName, (signed long)l, (unsigned long)l, (unsigned long)l, valuePtr);
+            break;
+        }
+        default: {
+            fprintf(stderr, "value '%s' has unknown size (use cast operator!)", valueName);
+            break;
+        }
+    }
+    fprintf(stderr, "\n");
+    fflush(stderr);
+}
+
+#endif // BUGEX_DUMPS


=====================================
SOURCE_TOOLS/build_info.pl
=====================================
@@ -0,0 +1,481 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+# create/update build info into
+#     ../TEMPLATES/arb_build.h
+# and
+#     ../TEMPLATES/svn_revision.h
+
+# --------------------------------------------------------------------------------
+
+my $dumpFiles = 1;
+
+my $RC_BRANCH     = 'rc';
+my $STABLE_BRANCH = 'stable';
+
+# --------------------------------------------------------------------------------
+
+my $ARBHOME = $ENV{ARBHOME};
+if (not defined $ARBHOME) { die "ARBHOME undefined"; }
+if ((not -d $ARBHOME) or (not -f $ARBHOME.'/arb_LICENSE.txt')) {
+  die "ARBHOME ('$ARBHOME') must point to ARB build directory";
+}
+
+my $TEMPLATES    = $ARBHOME.'/TEMPLATES';       if (not -d $TEMPLATES)    { die "no such directory '$TEMPLATES'"; }
+my $SOURCE_TOOLS = $ARBHOME.'/SOURCE_TOOLS';    if (not -d $SOURCE_TOOLS) { die "no such directory '$SOURCE_TOOLS'"; }
+my $mv_if_diff   = $SOURCE_TOOLS.'/mv_if_diff'; if (not -x $mv_if_diff)   { die "no such script '$mv_if_diff'"; }
+
+# upgrade version?
+my $inc_major = $SOURCE_TOOLS.'/inc_major.stamp';
+my $inc_minor = $SOURCE_TOOLS.'/inc_minor.stamp';
+my $inc_candi = $SOURCE_TOOLS.'/inc_candi.stamp';
+my $inc_patch = $SOURCE_TOOLS.'/inc_patch.stamp';
+
+# --------------------------------------------------------------------------------
+
+sub execAndGetFirstNonemptyLine($) {
+  my ($infocmd) = @_;
+  # returns first nonempty line from infocmd-output
+  # or undef (if output is empty)
+  # or dies (if command fails)
+
+  my $content = undef;
+  print "[executing '$infocmd']\n";
+  open(INFO,$infocmd.'|') || die "failed to fork '$infocmd' (Reason: $!)";
+ LINE: foreach (<INFO>) {
+    if ($_ ne '') {
+      chomp;
+      $content = $_;
+      last LINE;
+    }
+  }
+  close(INFO) || die "failed to execute '$infocmd' (Reason: $!)";;
+  if (defined $content) { print "output='$content'\n"; }
+  else { print "no output :-(\n"; }
+  return $content;
+}
+
+sub getHost() {
+  my $arbbuildhost = $ENV{ARBBUILDHOST};
+  my @hosts = ();
+  if (defined $arbbuildhost) { push @hosts, $arbbuildhost; }
+  else {
+    my $host = $ENV{HOST};
+    my $hostname = $ENV{HOSTNAME};
+
+    if (defined $host) { push @hosts, $host; }
+    if (defined $hostname) { push @hosts, $hostname; }
+  }
+  if (scalar(@hosts)==0) {
+    my $hostnameout = undef;
+    eval { $hostnameout = execAndGetFirstNonemptyLine('hostname'); };
+    if ($@) { print "Warning: buildhost is unknown ($@)\n"; }
+    if (not defined $hostnameout) { $hostnameout = 'unknown'; }
+
+    my $domainname = undef;
+    eval { $domainname = execAndGetFirstNonemptyLine('domainname'); };
+    if ($@) { print "Warning: domain is unknown ($@)\n"; $domainname = undef; }
+    if ((not defined $domainname) or ($domainname eq '(none)')) { $domainname = 'somewhere'; }
+
+    push @hosts, $hostnameout.'.'.$domainname;
+  }
+
+  @hosts = sort { length($b) <=> length($a); } @hosts; # sort longest first
+  return $hosts[0];
+}
+
+sub getUser() {
+  my $user = $ENV{ARBBUILDUSER};
+  if (not defined $user) { $user = $ENV{USER}; }
+  if (not defined $user) {
+    eval { $user = execAndGetFirstNonemptyLine('whoami'); };
+    if ($@) { print "Warning: user is unknown ($@)\n"; $user = undef; }
+  }
+  if (not defined $user) { $user = 'unknownUser'; }
+  return $user;
+}
+
+sub guessSvnBranchInsideJenkins() {
+  my $root = undef;
+  my $url = $ENV{SVN_URL}; # is set inside jenkins
+
+  if (defined $url) {
+    if ($url eq '') { $url = undef; }
+    else {
+      my $suffix = undef;
+      if ($url =~ /^(http:\/\/vc\.arb-home\.de\/(svn|readonly))\//o) {
+        $suffix = $';
+        $root = $1;
+      }
+      elsif ($url =~ /^(svn\+ssh:\/\/.*vc\.arb-home\.de\/home\/vc\/repos\/ARB)\//o) {
+        $suffix = $';
+        $root = $1;
+      }
+      if (not defined $suffix) { die "Unexpected value in SVN_URL ('$url')"; }
+      die "root unset (url='$url')" if not defined $root;
+    }
+  }
+  return ($root,$url);
+}
+
+sub getRevision() {
+  my $jrevision = $ENV{SVN_REVISION}; # is set inside jenkins
+  if (defined $jrevision and $jrevision eq '') { $jrevision = undef; }
+
+  my $revision = undef;
+  eval {
+    $revision = execAndGetFirstNonemptyLine("svnversion -c -n '$ARBHOME'");
+    if (defined $revision and $revision =~ /^2:/) { $revision = $'; }
+  };
+  if ($@) {
+    if (defined $jrevision) {
+      print "Accepting svn failure (apparently running inside jenkins)\n";
+      $revision = $jrevision;
+    }
+    else { die $@."\n"; }
+  }
+
+  if (not defined $revision) { die "Failed to detect revision number"; }
+  if (defined $jrevision) {
+    if ($jrevision ne $revision) {
+      if ($revision =~ /M/) {
+        print "------------------------------------------------------------ [svn diff]\n";
+        system('cd $ARBHOME;svn diff');
+        print "------------------------------------------------------------\n";
+      }
+      die "Conflicting revision numbers (jrevision='$jrevision', revision='$revision')";
+    }
+  }
+  return $revision;
+}
+
+sub getBranchOrTag() {
+  # returns any of
+  #   (0,trunk)
+  #   (0,branchname)
+  #   (1,tagname)
+  # or dies
+
+  my ($jroot,$jurl) = guessSvnBranchInsideJenkins();
+  my ($root,$url)   = (undef,undef);
+  eval {
+    my $infocmd = "svn info '$ARBHOME'";
+    print "[executing '$infocmd']\n";
+    open(INFO,$infocmd.'|') || die "failed to fork '$infocmd' (Reason: $!)";
+    foreach (<INFO>) {
+      chomp;
+      print "info[b]='$_'\n";
+      if (/^Repository\sRoot:\s+/o) { $root = $'; }
+      elsif (/^URL:\s+/o) { $url = $'; }
+    }
+    close(INFO) || die "failed to execute '$infocmd' (Reason: $!)";;
+  };
+  if ($@) {
+    if (defined $jroot and defined $jurl) {
+      print "Accepting svn failure (apparently running inside jenkins)\n";
+      ($root,$url) = ($jroot,$jurl);
+    }
+    else { die $@."\n"; }
+  }
+
+  if (not defined $root) { die "Failed to detect repository root"; }
+  if (not defined $url)  { die "Failed to detect repository URL"; }
+
+  if (defined $jroot) {
+    if (not defined $jurl)  { die "\$jroot defined, \$jurl undefined (bug in guessSvnBranchInsideJenkins?)"; }
+    if ($jroot ne $root) { die "Conflicting SVN root detection:\n1='$root'\n2='$jroot'"; }
+    if ($jurl  ne $url)  { die "Conflicting SVN url detection:\n1='$url'\n2='$jurl'"; }
+  }
+  elsif (defined $jurl) { die "\$jurl defined, \$jroot undefined (bug in guessSvnBranchInsideJenkins?)"; }
+
+  my $rootlen = length($root);
+  my $url_prefix = substr($url,0,$rootlen);
+  if ($url_prefix ne $root) { die "Expected '$url_prefix' to match '$root'"; }
+
+  my $rest = substr($url,$rootlen+1);
+  my $is_tag = 0;
+  if ($rest =~ /^branches\//) {
+    $rest = $';
+  }
+  elsif ($rest =~ /^tags\//) {
+    $rest = $';
+    $is_tag = 1;
+  }
+  return ($is_tag,$rest);
+}
+
+sub getBranchOrTagFromHeader($) {
+  my ($header) = @_;
+  open(HEADER,'<'.$header) || die "Failed to read '$header' (Reason: $!)";
+  my ($revision,$is_tag,$branch) = (undef,undef);
+  foreach (<HEADER>) {
+    chomp;
+    if (/^\#define\s+ARB_SVN_BRANCH\s+\"([^\"]+)\"/o) { $branch = $1; }
+    elsif (/^\#define\s+ARB_SVN_BRANCH_IS_TAG\s+([01])/o) { $is_tag = $1; }
+    elsif (/^\#define\s+ARB_SVN_REVISION\s+\"([^\"]+)\"/o) { $revision = $1; }
+  }
+  close(HEADER);
+
+  if (not defined $branch) { die "Failed to parse branch from $header"; }
+  if (not defined $is_tag) { die "Failed to parse is_tag from $header"; }
+  if (not defined $revision) { die "Failed to parse revision from $header"; }
+  if ($is_tag != 0 and $is_tag != 1) { die "Invalid value is_tag='$is_tag'"; }
+  return ($revision,$is_tag,$branch);
+}
+
+sub dumpFile($) {
+  my ($file) = @_;
+  print "---------------------------------------- [start $file]\n";
+  system("cat $file");
+  print "---------------------------------------- [end $file]\n";
+}
+
+sub update($\@) {
+  my ($file,$content_r) = @_;
+  my $tmp = $file.'.tmp';
+
+  open(TMP,'>'.$tmp) || die "can't write to '$tmp' (Reason: $!)";
+  foreach (@$content_r) { print TMP $_."\n"; }
+  close(TMP);
+  `$mv_if_diff '$tmp' '$file'`;
+  if ($dumpFiles) { dumpFile($file); }
+}
+
+sub file2hash($\%$) {
+  my ($file,$hash_r,$expectFile) = @_;
+  if (open(FILE,'<'.$file)) {
+    foreach (<FILE>) {
+      chomp;
+      if (/^([^=]+)=(.*)$/o) { $$hash_r{$1}=$2; }
+    }
+    close(FILE);
+  }
+  elsif ($expectFile==1) {
+    die "can't read '$file' (Reason: $!)";
+  }
+}
+
+sub hash2file(\%$) {
+  my ($hash_r,$file) = @_;
+  open(FILE,'>'.$file) or die "can't write '$file' (Reason: $!)";
+  foreach (sort keys %$hash_r) {
+    print FILE "$_=".$$hash_r{$_}."\n";
+  }
+  close(FILE);
+}
+
+# --------------------------------------------------------------------------------
+
+my $arb_build_h    = $TEMPLATES.'/arb_build.h';
+my $svn_revision_h = $TEMPLATES.'/svn_revision.h';
+
+my $in_SVN = (-d $ARBHOME.'/.svn');
+
+# update revision info?
+my ($revision,$is_tag,$branch) = (undef,undef,undef);
+if ($in_SVN) {
+  # in SVN checkout -> update revision info
+  $revision = getRevision();
+  ($is_tag,$branch) = getBranchOrTag();
+
+  # $branch = $RC_BRANCH; # @@@ fake
+  # $branch = $STABLE_BRANCH; # @@@ fake
+  # $branch = 'gtk_only'; # @@@ fake
+  # ($is_tag,$branch) = (1, 'arb-5.20.1'); # @@@ fake
+  # ($is_tag,$branch) = (1, 'arb-5.19'); # @@@ fake
+  # ($is_tag,$branch) = (1, 'evalSomething'); # @@@ fake
+  # ($is_tag,$branch) = (1, 'arb-5.20'); # @@@ fake
+  # ($is_tag,$branch) = (1, 'arb-5.20-rc1'); # @@@ fake
+  # ($is_tag,$branch) = (1, 'arb-5.20-rc2'); # @@@ fake
+
+  my @svn_revision = (
+                      '#define ARB_SVN_REVISION      "'.$revision.'"',
+                      '#define ARB_SVN_BRANCH        "'.$branch.'"',
+                      '#define ARB_SVN_BRANCH_IS_TAG '.$is_tag,
+                     );
+
+  update($svn_revision_h, at svn_revision);
+}
+else {
+  if (not -f $svn_revision_h) {
+    die "Missing file '$svn_revision_h'";
+  }
+  # use revision info as in source tarball
+  ($revision,$is_tag,$branch) = getBranchOrTagFromHeader($svn_revision_h);
+}
+
+my $date = `date '+%d.%b.%Y'`;
+chomp($date);
+my $year = undef;
+if ($date =~ /\.([^\.]+)$/o) {
+  $year = $1;
+}
+else {
+  die "error parsing year from '$date'";
+}
+
+# read version info
+my $version_info = $SOURCE_TOOLS.'/version_info';
+my %version_info = ();
+file2hash($version_info,%version_info,1);
+
+if (not defined $version_info{CANDIDATE}) { $version_info{CANDIDATE} = 1; }
+if (not defined $version_info{PATCHLEVEL}) { $version_info{PATCHLEVEL} = 0; }
+
+if (-f $inc_major or -f $inc_minor or -f $inc_candi or -f $inc_patch) { # version/rc-candidate/patchlevel upgrade requested?
+  eval {
+    print "\n";
+    if ($in_SVN) {
+      if ($is_tag==1) {
+        die "Upgrading version information not possible in tag-checkout! (tag of this WC = '$branch')";
+      }
+      if (-f $inc_candi) {
+        if ($branch ne $RC_BRANCH) {
+          die "Upgrading RC-candidate number only possible in branch '$RC_BRANCH' (you are in '$branch')";
+        }
+        my $oldRC = $version_info{CANDIDATE};
+        if (not defined $oldRC) { die "No CANDIDATE defined"; }
+        $version_info{CANDIDATE}++;
+        my $newRC = $version_info{CANDIDATE};
+        print "RC-candidate number upgraded from $oldRC to $newRC\n";
+      }
+      elsif (-f $inc_patch) {
+        if ($branch ne $STABLE_BRANCH) {
+          die "Upgrading patchlevel only possible in branch '$STABLE_BRANCH' (you are in '$branch')";
+        }
+        my $oldPL = $version_info{PATCHLEVEL};
+        if (not defined $oldPL) { die "No PATCHLEVEL defined"; }
+        $version_info{PATCHLEVEL}++;
+        my $newPL = $version_info{PATCHLEVEL};
+        print "patchlevel upgraded from $oldPL to $newPL\n";
+      }
+      else {
+        if ($is_tag==1 or $branch ne 'trunk') {
+          die "Upgrading version only possible in 'trunk' (you are in '$branch')";
+        }
+        my $oldVersion = $version_info{MAJOR}.'.'.$version_info{MINOR};
+        if (-f $inc_major) {
+          $version_info{MAJOR}++;
+          $version_info{MINOR} = 0;
+        }
+        else {
+          $version_info{MINOR}++;
+        }
+        $version_info{CANDIDATE} = 1; # first release candidate will be rc1
+        $version_info{PATCHLEVEL} = 0; # no patchlevel (yet)
+        my $newVersion = $version_info{MAJOR}.'.'.$version_info{MINOR};
+        print "Version upgraded from $oldVersion to $newVersion\n";
+      }
+
+      $version_info{last_upgrade}=time; # upgrade timestamp
+      hash2file(%version_info,$version_info);
+    }
+    else {
+      die "Upgrading version only possible in SVN WC";
+    }
+    print "\n";
+  };
+  my $failed = $@;
+
+  # always remove requests
+  -f $inc_major && unlink($inc_major);
+  -f $inc_minor && unlink($inc_minor);
+  -f $inc_candi && unlink($inc_candi);
+  -f $inc_patch && unlink($inc_patch);
+
+  if ($failed) { die "$failed\n"; }
+}
+
+# create valid svn-tag for this version
+
+my $svn_tag              = undef;
+my $short_version        = undef;
+my $always_show_revision = 1;
+
+my $orgbranch = $branch; # real branch or branch estimated from tag
+if ($is_tag==1) {
+  if ($branch =~ /^arb-[0-9]+\.[0-9]+/o) {
+    if ($branch =~ /-rc[0-9]+$/o) { $orgbranch = $RC_BRANCH; }
+    else                          { $orgbranch = $STABLE_BRANCH; }
+  }
+  else {
+    $orgbranch = 'unknown';
+  }
+}
+
+if ($orgbranch eq $STABLE_BRANCH or $orgbranch eq $RC_BRANCH) {
+  $always_show_revision = 0;
+  $svn_tag = 'arb-'.$version_info{MAJOR}.'.'.$version_info{MINOR};
+  if ($orgbranch eq $RC_BRANCH) {
+    $svn_tag .= '-rc'.$version_info{CANDIDATE};
+  }
+  else {
+    if ($version_info{PATCHLEVEL} > 0) { $svn_tag .= '.'.$version_info{PATCHLEVEL}; }
+  }
+  $short_version = $svn_tag;
+
+  if ($is_tag==1) {
+    # check real SVN-tag vs generated SVN-tag
+    if ($branch ne $svn_tag) {
+      die "Version info and SVN-branch-tag mismatch:\n".
+        "(version suggests svn-tag = '$svn_tag'\n".
+        " real             svn-tag = '$branch')";
+    }
+  }
+  print "SVN_URL='$ENV{SVN_URL}'\n";
+  print "SVN_REVISION='$ENV{SVN_REVISION}'\n";
+}
+elsif ($is_tag==1) {
+  $short_version = 'arb-special-'.$branch; # use custom tag
+}
+else {
+  $short_version = 'arb-devel';
+  if ($branch ne 'trunk') { $short_version .= '-'.$branch; }
+  $short_version .= '-'.$version_info{MAJOR}.'.'.$version_info{MINOR};
+}
+
+defined $short_version || die "expected known short_version!";
+defined $revision || die "expected known revision!";
+my $long_version  = $short_version.'.rev'.$revision;
+
+if ($always_show_revision==1) {
+  $short_version = $long_version;
+}
+
+my $ARB_64 = $ENV{ARB_64};
+if (not defined $ARB_64) {
+  my $config_makefile = $ARBHOME.'/config.makefile';
+  if (open(CONFIG, '<'.$config_makefile)) {
+    $ARB_64 = 1; # default to 64 bit -- see ../Makefile at 64bit
+    foreach (<CONFIG>) {
+      if (/^\s*ARB_64\s*:=\s*([01]).*/) {
+        $ARB_64 = $1;
+      }
+    }
+    close(CONFIG);
+  }
+  else {
+    die "Either environment variable ARB_64 has to be defined or $config_makefile has to exist!";
+  }
+}
+
+if (not $ARB_64) {
+  $short_version .= '-32bit';
+  $long_version  .= '-32bit';
+}
+
+my @arb_build = (
+                 '#define ARB_VERSION            "'.$short_version.'"',
+                 '#define ARB_VERSION_DETAILED   "'.$long_version.'"',
+
+                 '#define ARB_BUILD_DATE         "'.$date.'"',
+                 '#define ARB_BUILD_YEAR         "'.$year.'"',
+
+                 '#define ARB_BUILD_HOST         "'.getHost().'"',
+                 '#define ARB_BUILD_USER         "'.getUser().'"',
+                );
+
+update($arb_build_h, at arb_build);
+


=====================================
SOURCE_TOOLS/generate_all_links.sh
=====================================
@@ -0,0 +1,362 @@
+#!/bin/bash
+
+SELF=$ARBHOME/SOURCE_TOOLS/generate_all_links.sh
+READLINK=${ARBHOME}/SH/arb_readlink
+
+
+finderr() {
+    FOUND=`grep -Hn "$1" $SELF | perl -ne '/^[^:]+:[^:]+:/; print $&."[here]\n";'`
+    if [ -z "$FOUND" ]; then
+        echo "$SELF:8: $2 ($1 not located -- search manually)"
+    else
+        echo "$FOUND $2"
+    fi
+    false
+}
+
+may_create_link() {
+    # $1 is the link to create
+    # $2 ==1 -> warn about links to nowhere
+    if [ -h $1 ]; then
+        if [ -e $1 ]; then
+            # points to sth existing, assume link already present and valid
+            true
+        else
+            # points to nothing
+            if [ $2 = 1 ]; then
+                finderr $1 "Note: Symlink '$1' pointed to nowhere -- removing wrong link"
+                ls -al $1
+            fi
+            rm $1 # remove wrong link
+            true # allow regeneration
+        fi
+    else
+        if [ -e $1 ]; then
+            finderr $1 "$1 is in the way (and is not a link)"
+        else
+            true # link simply missing, allow creation
+        fi
+    fi
+}
+
+assert_links_to_target() {
+    # $1 target
+    # $2 link
+    local LINKTARGET=`$READLINK -f $2`
+    local LINKDIR=`dirname $2`
+    local TARGET=`$READLINK -f $LINKDIR/$1`
+
+    [ "$LINKTARGET" = "$TARGET" ] || (finderr $2 "$2 links not to $TARGET")
+}
+
+create_symlink_unverified() {
+    # $1 target
+    # $2 link
+    test -h $2 || ln -sf $1 $2 || finderr $2 "Failed to link '$1->$2'"
+}
+
+create_symlink() {
+    # $1 target
+    # $2 link
+    create_symlink_unverified $1 $2 && assert_links_to_target $1 $2
+}
+
+symlink_maybe_no_target() {
+    may_create_link $2 0 && create_symlink_unverified $1 $2
+}
+
+symlink_typed() {
+    # $1 is target
+    # $2 is the created link
+    # $3 is the expected target type (e.g. -d or -f)
+    if [ -z $2 ]; then
+        if [ -z $1 ]; then
+            echo "$SELF:25: Missing arguments in call to symlink_typed()"
+            exit 1
+        else
+            finderr $1 "Second argument missing in call to symlink_typed()"
+            exit 1
+        fi
+    fi
+
+    DIR=`dirname $2`
+    if [ -z $DIR ]; then
+        DIR=.
+    fi
+
+    (test -e $DIR/$1 || finderr $2 "Target '$DIR/$1 does not exists (anymore)" ) &&
+    (test $3 $DIR/$1 || finderr $2 "Target '$DIR/$1 has wrong type (expected $3)" ) &&
+    
+    may_create_link $2 1 && create_symlink $1 $2
+}
+
+symlink_dir() {
+    # $1 is target (a directory)
+    # $2 is the created link
+    symlink_typed $1 $2 -d
+}
+
+symlink_file() {
+    # $1 is target (a file)
+    # $2 is the created link
+    symlink_typed $1 $2 -f
+}
+
+makedir() {
+    mkdir -p $1 || finderr $1 "Failed to create directory '$1'"
+}
+
+# Generates some directories as well:
+makedir INCLUDE &&
+makedir INCLUDE/GL &&
+
+makedir NAMES_COM/GENC &&
+makedir NAMES_COM/GENH &&
+makedir NAMES_COM/O &&
+
+makedir PROBE_COM/GENC &&
+makedir PROBE_COM/GENH &&
+makedir PROBE_COM/O &&
+
+makedir lib/help &&
+
+(test -d lib/pts || makedir lib/pts) &&
+
+# Motif stuff
+(test -z $MOTIF_LIBPATH || symlink_file $MOTIF_LIBPATH lib/libXm.so.3) &&
+
+# Links in bin directory
+( cd bin ; make all; cd .. ) &&
+
+# ...COMS
+
+symlink_dir ../AISC_COM/AISC NAMES_COM/AISC &&
+symlink_dir ../AISC_COM/C    NAMES_COM/C &&
+
+symlink_maybe_no_target GENH/aisc_com.h           NAMES_COM/names_client.h &&
+symlink_maybe_no_target GENH/aisc_server_proto.h  NAMES_COM/names_prototypes.h &&
+symlink_maybe_no_target GENH/aisc.h               NAMES_COM/names_server.h &&
+
+symlink_dir ../AISC_COM/AISC PROBE_COM/AISC &&
+symlink_dir ../AISC_COM/C    PROBE_COM/C &&
+
+symlink_maybe_no_target GENH/aisc_com.h           PROBE_COM/PT_com.h &&
+symlink_maybe_no_target GENH/aisc_server_proto.h  PROBE_COM/PT_server_prototypes.h &&
+symlink_maybe_no_target GENH/aisc.h               PROBE_COM/PT_server.h &&
+
+# TEMPLATES directory
+
+symlink_file ../TEMPLATES/arb_algo.h INCLUDE/arb_algo.h &&
+symlink_file ../TEMPLATES/arb_backtrace.h INCLUDE/arb_backtrace.h &&
+symlink_file ../TEMPLATES/arb_debug.h INCLUDE/arb_debug.h &&
+symlink_file ../TEMPLATES/arb_defs.h INCLUDE/arb_defs.h &&
+symlink_file ../TEMPLATES/arb_early_check.h INCLUDE/arb_early_check.h &&
+symlink_file ../TEMPLATES/arb_error.h INCLUDE/arb_error.h &&
+symlink_file ../TEMPLATES/arb_forward_list.h INCLUDE/arb_forward_list.h &&
+symlink_file ../TEMPLATES/arb_global_defs.h INCLUDE/arb_global_defs.h &&
+symlink_file ../TEMPLATES/arb_simple_assert.h INCLUDE/arb_simple_assert.h &&
+symlink_file ../TEMPLATES/arb_sleep.h INCLUDE/arb_sleep.h &&
+symlink_file ../TEMPLATES/arb_stdstr.h INCLUDE/arb_stdstr.h &&
+symlink_file ../TEMPLATES/arb_str.h INCLUDE/arb_str.h &&
+symlink_file ../TEMPLATES/arb_unit_test.h INCLUDE/arb_unit_test.h &&
+symlink_file ../TEMPLATES/arb_unordered_map.h INCLUDE/arb_unordered_map.h &&
+symlink_file ../TEMPLATES/arb_version.h INCLUDE/arb_version.h &&
+symlink_file ../TEMPLATES/arbtools.h INCLUDE/arbtools.h &&
+symlink_file ../TEMPLATES/attributes.h INCLUDE/attributes.h &&
+symlink_file ../TEMPLATES/bytestring.h INCLUDE/bytestring.h &&
+symlink_file ../TEMPLATES/cache.h INCLUDE/cache.h &&
+symlink_file ../TEMPLATES/ChecksumCollector.h INCLUDE/ChecksumCollector.h &&
+symlink_file ../TEMPLATES/command_output.h INCLUDE/command_output.h &&
+symlink_file ../TEMPLATES/config_parser.h INCLUDE/config_parser.h &&
+symlink_file ../TEMPLATES/cxxforward.h INCLUDE/cxxforward.h &&
+symlink_file ../TEMPLATES/downcast.h INCLUDE/downcast.h &&
+symlink_file ../TEMPLATES/dupstr.h INCLUDE/dupstr.h &&
+symlink_file ../TEMPLATES/gccver.h INCLUDE/gccver.h &&
+symlink_file ../TEMPLATES/malloc.h INCLUDE/malloc.h &&
+symlink_file ../TEMPLATES/mode_text.h INCLUDE/mode_text.h &&
+symlink_file ../TEMPLATES/output.h INCLUDE/output.h &&
+symlink_file ../TEMPLATES/perf_timer.h INCLUDE/perf_timer.h &&
+symlink_file ../TEMPLATES/SigHandler.h INCLUDE/SigHandler.h &&
+symlink_file ../TEMPLATES/smartptr.h INCLUDE/smartptr.h &&
+symlink_file ../TEMPLATES/static_assert.h INCLUDE/static_assert.h &&
+symlink_file ../TEMPLATES/SuppressOutput.h INCLUDE/SuppressOutput.h &&
+symlink_file ../TEMPLATES/ttypes.h INCLUDE/ttypes.h &&
+symlink_file ../TEMPLATES/ut_valgrinded.h INCLUDE/ut_valgrinded.h &&
+symlink_file ../TEMPLATES/valgrind.h INCLUDE/valgrind.h &&
+
+symlink_maybe_no_target ../TEMPLATES/arb_build.h INCLUDE/arb_build.h &&
+symlink_maybe_no_target ../TEMPLATES/svn_revision.h INCLUDE/svn_revision.h &&
+
+# INCLUDE directory
+
+symlink_maybe_no_target ../NAMES_COM/names_client.h         INCLUDE/names_client.h &&
+symlink_maybe_no_target ../NAMES_COM/names_prototypes.h     INCLUDE/names_prototypes.h &&
+symlink_maybe_no_target ../NAMES_COM/names_server.h         INCLUDE/names_server.h &&
+
+symlink_maybe_no_target ../PROBE_COM/PT_com.h               INCLUDE/PT_com.h &&
+symlink_maybe_no_target ../PROBE_COM/PT_server.h            INCLUDE/PT_server.h &&
+symlink_maybe_no_target ../PROBE_COM/PT_server_prototypes.h INCLUDE/PT_server_prototypes.h &&
+
+symlink_file ../AISC_COM/C/aisc_func_types.h INCLUDE/aisc_func_types.h &&
+symlink_file ../AISC_COM/C/aisc_global.h INCLUDE/aisc_global.h &&
+symlink_file ../AISC_COM/C/client.h INCLUDE/client.h &&
+symlink_file ../AISC_COM/C/client_types.h INCLUDE/client_types.h &&
+symlink_file ../AISC_COM/C/client_privat.h INCLUDE/client_privat.h &&
+symlink_file ../AISC_COM/C/server.h INCLUDE/server.h &&
+symlink_file ../AISC_COM/C/struct_man.h INCLUDE/struct_man.h &&
+symlink_file ../ARBDB/ad_cb.h INCLUDE/ad_cb.h &&
+symlink_file ../ARBDB/ad_cb_prot.h INCLUDE/ad_cb_prot.h &&
+symlink_file ../ARBDB/ad_config.h INCLUDE/ad_config.h &&
+symlink_file ../ARBDB/ad_p_prot.h INCLUDE/ad_p_prot.h &&
+symlink_file ../ARBDB/ad_prot.h INCLUDE/ad_prot.h &&
+symlink_file ../ARBDB/ad_remote.h INCLUDE/ad_remote.h &&
+symlink_file ../ARBDB/ad_t_prot.h INCLUDE/ad_t_prot.h &&
+symlink_file ../ARBDB/adGene.h INCLUDE/adGene.h &&
+symlink_file ../ARBDB/adperl.h INCLUDE/adperl.h &&
+symlink_file ../ARBDB/arbdb.h INCLUDE/arbdb.h &&
+symlink_file ../ARBDB/arbdb_base.h INCLUDE/arbdb_base.h &&
+symlink_file ../ARBDB/arbdbt.h INCLUDE/arbdbt.h &&
+symlink_file ../ARBDB/dbitem_set.h INCLUDE/dbitem_set.h &&
+symlink_file ../ARB_GDE/gde.hxx INCLUDE/gde.hxx &&
+symlink_file ../AWT/awt.hxx INCLUDE/awt.hxx &&
+symlink_file ../AWT/awt_asciiprint.hxx INCLUDE/awt_asciiprint.hxx &&
+symlink_file ../AWT/awt_attributes.hxx INCLUDE/awt_attributes.hxx &&
+symlink_file ../AWT/awt_canvas.hxx INCLUDE/awt_canvas.hxx &&
+symlink_file ../AWT/awt_config_manager.hxx INCLUDE/awt_config_manager.hxx &&
+symlink_file ../AWT/awt_hotkeys.hxx INCLUDE/awt_hotkeys.hxx &&
+symlink_file ../AWT/awt_input_mask.hxx INCLUDE/awt_input_mask.hxx &&
+symlink_file ../AWT/awt_map_key.hxx INCLUDE/awt_map_key.hxx &&
+symlink_file ../AWT/awt_modules.hxx INCLUDE/awt_modules.hxx &&
+symlink_file ../AWT/awt_sel_boxes.hxx INCLUDE/awt_sel_boxes.hxx &&
+symlink_file ../AWT/awt_seq_colors.hxx INCLUDE/awt_seq_colors.hxx &&
+symlink_file ../AWT/awt_TreeAwars.hxx INCLUDE/awt_TreeAwars.hxx &&
+symlink_file ../AWT/awt_www.hxx INCLUDE/awt_www.hxx &&
+symlink_file ../AWT/awtlocal.hxx INCLUDE/awtlocal.hxx &&
+symlink_file ../AWTC/awtc_next_neighbours.hxx INCLUDE/awtc_next_neighbours.hxx &&
+symlink_file ../AWTC/awtc_submission.hxx INCLUDE/awtc_submission.hxx &&
+symlink_file ../AWTI/awti_export.hxx INCLUDE/awti_export.hxx &&
+symlink_file ../AWTI/awti_import.hxx INCLUDE/awti_import.hxx &&
+symlink_file ../BUGEX/bugex.h INCLUDE/bugex.h &&
+symlink_file ../CONSENSUS_TREE/CT_ctree.hxx INCLUDE/CT_ctree.hxx &&
+symlink_file ../CORE/arb_assert.h INCLUDE/arb_assert.h &&
+symlink_file ../CORE/arb_core.h INCLUDE/arb_core.h &&
+symlink_file ../CORE/arb_cs.h INCLUDE/arb_cs.h &&
+symlink_file ../CORE/arb_diff.h INCLUDE/arb_diff.h &&
+symlink_file ../CORE/arb_file.h INCLUDE/arb_file.h &&
+symlink_file ../CORE/arb_handlers.h INCLUDE/arb_handlers.h &&
+symlink_file ../CORE/arb_match.h INCLUDE/arb_match.h &&
+symlink_file ../CORE/arb_misc.h INCLUDE/arb_misc.h &&
+symlink_file ../CORE/arb_msg.h INCLUDE/arb_msg.h &&
+symlink_file ../CORE/arb_msg_fwd.h INCLUDE/arb_msg_fwd.h &&
+symlink_file ../CORE/arb_pathlen.h INCLUDE/arb_pathlen.h &&
+symlink_file ../CORE/arb_progress.h INCLUDE/arb_progress.h &&
+symlink_file ../CORE/arb_signal.h INCLUDE/arb_signal.h &&
+symlink_file ../CORE/arb_sort.h INCLUDE/arb_sort.h &&
+symlink_file ../CORE/arb_strarray.h INCLUDE/arb_strarray.h &&
+symlink_file ../CORE/arb_strbuf.h INCLUDE/arb_strbuf.h &&
+symlink_file ../CORE/arb_string.h INCLUDE/arb_string.h &&
+symlink_file ../CORE/BufferedFileReader.h INCLUDE/BufferedFileReader.h &&
+symlink_file ../CORE/MultiFileReader.h INCLUDE/MultiFileReader.h &&
+symlink_file ../CORE/FileContent.h INCLUDE/FileContent.h &&
+symlink_file ../CORE/pos_range.h INCLUDE/pos_range.h &&
+symlink_file ../DIST/dist.hxx INCLUDE/dist.hxx &&
+symlink_file ../EDIT4/ed4_extern.hxx INCLUDE/ed4_extern.hxx &&
+symlink_file ../EDIT4/ed4_plugins.hxx INCLUDE/ed4_plugins.hxx &&
+symlink_file ../GENOM/EXP.hxx INCLUDE/EXP.hxx &&
+symlink_file ../GENOM/GEN.hxx INCLUDE/GEN.hxx &&
+symlink_file ../GENOM_IMPORT/GenomeImport.h INCLUDE/GenomeImport.h &&
+symlink_file ../ISLAND_HOPPING/island_hopping.h INCLUDE/island_hopping.h &&
+symlink_file ../MERGE/mg_merge.hxx INCLUDE/mg_merge.hxx &&
+symlink_file ../MULTI_PROBE/multi_probe.hxx INCLUDE/multi_probe.hxx &&
+symlink_file ../PRIMER_DESIGN/primer_design.hxx INCLUDE/primer_design.hxx &&
+symlink_file ../PROBE_DESIGN/probe_design.hxx INCLUDE/probe_design.hxx &&
+symlink_file ../PROBE/PT_global_defs.h INCLUDE/PT_global_defs.h &&
+symlink_file ../SECEDIT/secedit_extern.hxx INCLUDE/secedit_extern.hxx &&
+symlink_file ../RNA3D/rna3d_extern.hxx INCLUDE/rna3d_extern.hxx &&
+symlink_file ../SEQ_QUALITY/seq_quality.h INCLUDE/seq_quality.h &&
+symlink_file ../SERVERCNTRL/servercntrl.h INCLUDE/servercntrl.h &&
+symlink_file ../SL/ALIVIEW/AliView.hxx INCLUDE/AliView.hxx &&
+symlink_file ../SL/AP_TREE/AP_Tree.hxx INCLUDE/AP_Tree.hxx &&
+symlink_file ../SL/ARB_TREE/ARB_Tree.hxx INCLUDE/ARB_Tree.hxx &&
+symlink_file ../SL/AW_HELIX/AW_helix.hxx INCLUDE/AW_helix.hxx &&
+symlink_file ../SL/AW_NAME/AW_rename.hxx INCLUDE/AW_rename.hxx &&
+symlink_file ../SL/CB/cb.h INCLUDE/cb.h &&
+symlink_file ../SL/CB/cb_base.h INCLUDE/cb_base.h &&
+symlink_file ../SL/CB/cb_base.h INCLUDE/cb_base.h &&
+symlink_file ../SL/CB/cbtypes.h INCLUDE/cbtypes.h &&
+symlink_file ../SL/CB/rootAsWin.h INCLUDE/rootAsWin.h &&
+symlink_file ../SL/DB_QUERY/db_query.h INCLUDE/db_query.h &&
+symlink_file ../SL/DB_SCANNER/db_scanner.hxx INCLUDE/db_scanner.hxx &&
+symlink_file ../SL/DB_UI/dbui.h INCLUDE/dbui.h &&
+symlink_file ../SL/DB_UI/info_window.h INCLUDE/info_window.h &&
+symlink_file ../SL/FAST_ALIGNER/fast_aligner.hxx INCLUDE/fast_aligner.hxx &&
+symlink_file ../SL/FILTER/AP_filter.hxx INCLUDE/AP_filter.hxx &&
+symlink_file ../SL/FILTER/RangeList.h INCLUDE/RangeList.h &&
+symlink_file ../SL/GUI_ALIVIEW/awt_filter.hxx INCLUDE/awt_filter.hxx &&
+symlink_file ../SL/GUI_ALIVIEW/ColumnStat.hxx INCLUDE/ColumnStat.hxx &&
+symlink_file ../SL/GUI_ALIVIEW/gui_aliview.hxx INCLUDE/gui_aliview.hxx &&
+symlink_file ../SL/HELIX/BI_basepos.hxx INCLUDE/BI_basepos.hxx &&
+symlink_file ../SL/HELIX/BI_helix.hxx INCLUDE/BI_helix.hxx &&
+symlink_file ../SL/INSDEL/insdel.h INCLUDE/insdel.h &&
+symlink_file ../SL/ITEMS/item_sel_list.h INCLUDE/item_sel_list.h &&
+symlink_file ../SL/ITEMS/items.h INCLUDE/items.h &&
+symlink_file ../SL/LOCATION/Location.h INCLUDE/Location.h &&
+symlink_file ../SL/MACROS/macros.hxx INCLUDE/macros.hxx &&
+symlink_file ../SL/MATRIX/AP_matrix.hxx INCLUDE/AP_matrix.hxx &&
+symlink_file ../SL/NDS/nds.h INCLUDE/nds.h &&
+symlink_file ../SL/NEIGHBOURJOIN/neighbourjoin.hxx INCLUDE/neighbourjoin.hxx &&
+symlink_file ../SL/PRONUC/AP_codon_table.hxx INCLUDE/AP_codon_table.hxx &&
+symlink_file ../SL/PRONUC/AP_pro_a_nucs.hxx INCLUDE/AP_pro_a_nucs.hxx &&
+symlink_file ../SL/PRONUC/iupac.h INCLUDE/iupac.h &&
+symlink_file ../SL/PTCLEAN/ptclean.h INCLUDE/ptclean.h &&
+symlink_file ../SL/REFENTRIES/refentries.h INCLUDE/refentries.h &&
+symlink_file ../SL/REGEXPR/RegExpr.hxx INCLUDE/RegExpr.hxx &&
+symlink_file ../SL/ROOTED_TREE/RootedTree.h INCLUDE/RootedTree.h &&
+symlink_file ../SL/SEQIO/seqio.hxx INCLUDE/seqio.hxx &&
+symlink_file ../SL/SEQUENCE/AP_seq_dna.hxx INCLUDE/AP_seq_dna.hxx &&
+symlink_file ../SL/SEQUENCE/AP_seq_protein.hxx INCLUDE/AP_seq_protein.hxx &&
+symlink_file ../SL/SEQUENCE/AP_seq_simple_pro.hxx INCLUDE/AP_seq_simple_pro.hxx &&
+symlink_file ../SL/SEQUENCE/AP_sequence.hxx INCLUDE/AP_sequence.hxx &&
+symlink_file ../SL/TRANSLATE/Translate.hxx INCLUDE/Translate.hxx &&
+symlink_file ../SL/TREE_ADMIN/TreeAdmin.h INCLUDE/TreeAdmin.h &&
+symlink_file ../SL/TREE_READ/TreeRead.h INCLUDE/TreeRead.h &&
+symlink_file ../SL/TREE_WRITE/TreeWrite.h INCLUDE/TreeWrite.h &&
+symlink_file ../SL/TREEDISP/TreeCallbacks.hxx INCLUDE/TreeCallbacks.hxx &&
+symlink_file ../SL/TREEDISP/TreeDisplay.hxx INCLUDE/TreeDisplay.hxx &&
+symlink_file ../STAT/st_window.hxx INCLUDE/st_window.hxx &&
+symlink_file ../UNIT_TESTER/test_unit.h INCLUDE/test_unit.h &&
+symlink_file ../UNIT_TESTER/test_global.h INCLUDE/test_global.h &&
+symlink_file ../UNIT_TESTER/test_helpers.h INCLUDE/test_helpers.h &&
+symlink_file ../WINDOW/aw_advice.hxx INCLUDE/aw_advice.hxx &&
+symlink_file ../WINDOW/aw_awar.hxx INCLUDE/aw_awar.hxx &&
+symlink_file ../WINDOW/aw_awar_defs.hxx INCLUDE/aw_awar_defs.hxx &&
+symlink_file ../WINDOW/aw_awars.hxx INCLUDE/aw_awars.hxx &&
+symlink_file ../WINDOW/aw_base.hxx INCLUDE/aw_base.hxx &&
+symlink_file ../WINDOW/aw_color_groups.hxx INCLUDE/aw_color_groups.hxx &&
+symlink_file ../WINDOW/aw_device.hxx INCLUDE/aw_device.hxx &&
+symlink_file ../WINDOW/aw_device_click.hxx INCLUDE/aw_device_click.hxx &&
+symlink_file ../WINDOW/aw_edit.hxx INCLUDE/aw_edit.hxx &&
+symlink_file ../WINDOW/aw_file.hxx INCLUDE/aw_file.hxx &&
+symlink_file ../WINDOW/aw_font_group.hxx INCLUDE/aw_font_group.hxx &&
+symlink_file ../WINDOW/aw_global.hxx INCLUDE/aw_global.hxx &&
+symlink_file ../WINDOW/aw_global_awars.hxx INCLUDE/aw_global_awars.hxx &&
+symlink_file ../WINDOW/aw_keysym.hxx INCLUDE/aw_keysym.hxx &&
+symlink_file ../WINDOW/aw_msg.hxx INCLUDE/aw_msg.hxx &&
+symlink_file ../WINDOW/aw_position.hxx INCLUDE/aw_position.hxx &&
+symlink_file ../WINDOW/aw_preset.hxx INCLUDE/aw_preset.hxx &&
+symlink_file ../WINDOW/aw_question.hxx INCLUDE/aw_question.hxx &&
+symlink_file ../WINDOW/aw_root.hxx INCLUDE/aw_root.hxx &&
+symlink_file ../WINDOW/aw_scalar.hxx INCLUDE/aw_scalar.hxx &&
+symlink_file ../WINDOW/aw_select.hxx INCLUDE/aw_select.hxx &&
+symlink_file ../WINDOW/aw_window.hxx INCLUDE/aw_window.hxx &&
+symlink_file ../WINDOW/aw_window_Xm_interface.hxx INCLUDE/aw_window_Xm_interface.hxx &&
+symlink_file ../XML/xml.hxx INCLUDE/xml.hxx &&
+
+# gl stuff
+symlink_file ../../GL/glpng/glpng.h INCLUDE/GL/glpng.h &&
+symlink_file ../../GL/glAW/aw_window_ogl.hxx INCLUDE/GL/aw_window_ogl.hxx &&
+
+# help files (make sure the file is present in user distribution!)
+symlink_maybe_no_target ../help/input_mask_format.hlp     lib/inputMasks/format.readme &&
+
+echo "generate_all_links.sh done."


=====================================
TEMPLATES/Makefile
=====================================
@@ -0,0 +1,7 @@
+
+# generate svn_revision.h and arb_build.h
+$(MAIN): 
+	../SOURCE_TOOLS/build_info.pl
+
+clean:
+ # rm -f svn_revision.h arb_build.h # do not remove these - will let tarball-build fail after 'make clean'


=====================================
TEMPLATES/bytestring.h
=====================================
@@ -0,0 +1,22 @@
+// ============================================================== //
+//                                                                //
+//   File      : bytestring.h                                     //
+//   Purpose   :                                                  //
+//                                                                //
+//   Coded by Ralf Westram (coder at reallysoft.de) in August 2010   //
+//   Institute of Microbiology (Technical University Munich)      //
+//   http://www.arb-home.de/                                      //
+//                                                                //
+// ============================================================== //
+
+#ifndef BYTESTRING_H
+#define BYTESTRING_H
+
+struct bytestring {
+    char *data;
+    int   size;
+};
+
+#else
+#error bytestring.h included twice
+#endif // BYTESTRING_H



View it on GitLab: https://salsa.debian.org/med-team/libarb/compare/a057cc90737b710e5ed00fabe7ca0359ce9676ae...5637dc90205a07e3347133595fe050009b14ee0f

-- 
View it on GitLab: https://salsa.debian.org/med-team/libarb/compare/a057cc90737b710e5ed00fabe7ca0359ce9676ae...5637dc90205a07e3347133595fe050009b14ee0f
You're receiving this email because of your account on salsa.debian.org.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20190606/c597261f/attachment-0001.html>


More information about the debian-med-commit mailing list