Skip to content
Commits on Source (8)
// ==================================================================== //
// //
// File : bugex.h //
// Purpose : Debugging code //
// //
// //
// Coded by Ralf Westram (coder@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
#!/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,@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@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,@arb_build);
#!/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."
# 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'
// ============================================================== //
// //
// File : bytestring.h //
// Purpose : //
// //
// Coded by Ralf Westram (coder@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
......@@ -44,12 +44,14 @@ Files-Excluded: arbsrc*/AISC*
arbsrc*/SOURCE_TOOLS/arb_create_patch.sh
arbsrc*/SOURCE_TOOLS/arb_main*
arbsrc*/SOURCE_TOOLS/arb_valgrind*
arbsrc*/SOURCE_TOOLS/binuptodate.pl
arbsrc*/SOURCE_TOOLS/c*
arbsrc*/SOURCE_TOOLS/dep*
arbsrc*/SOURCE_TOOLS/deadcode.pl
arbsrc*/SOURCE_TOOLS/diff2grep.pl
arbsrc*/SOURCE_TOOLS/f*
arbsrc*/SOURCE_TOOLS/g*
arbsrc*/SOURCE_TOOLS/gen_dep.pl
arbsrc*/SOURCE_TOOLS/grepx.pl
arbsrc*/SOURCE_TOOLS/m*
arbsrc*/SOURCE_TOOLS/n*
arbsrc*/SOURCE_TOOLS/p*
......@@ -59,7 +61,6 @@ Files-Excluded: arbsrc*/AISC*
arbsrc*/SOURCE_TOOLS/v*
arbsrc*/ST*
arbsrc*/TEMPLATES/C*
arbsrc*/TEMPLATES/M*
arbsrc*/TEMPLATES/arb_debug.h
arbsrc*/TEMPLATES/arb_early_check.h
arbsrc*/TEMPLATES/arb_forward_list.h
......@@ -90,7 +91,7 @@ Files-Excluded: arbsrc*/AISC*
arbsrc*/UNIT_TESTER/test_helpers.h
arbsrc*/W*
arbsrc*/X*
arbsrc*/b*
arbsrc*/bin
arbsrc*/doc
arbsrc*/demo.arb
arbsrc*/etc
......
--- a/Makefile
+++ b/Makefile
@@ -805,7 +805,7 @@ check_TOOLS:
"$(LINK_SHARED_LIB)" \
-check_ENVIRONMENT : check_PATH check_TOOLS
+check_ENVIRONMENT :
@echo "-------------------- Environment [start]"
@echo "ARBHOME='$(ARBHOME)'"
@echo "PATH='$(PATH)'"
@@ -824,7 +824,7 @@ force_tab_check:
# ---------------------
-check_setup: check_ENVIRONMENT check_DEBUG check_ARB_64 check_DEVELOPER check_GCC_VERSION
+check_setup: check_ENVIRONMENT check_DEBUG check_ARB_64 check_DEVELOPER
@echo Your setup seems to be ok.
checks: check_setup check_tabs
@@ -843,64 +843,16 @@ checks: check_setup check_tabs
# when adding new libs here, also add a dependency vs 'links' or 'links_non_perl' in .@DD_links_non_perl
ARCHS = \
- $(ARCHS_PT_SERVER) \
- AISC/AISC.a \
- AISC_MKPTPS/AISC_MKPTPS.a \
ARBDB/libARBDB.a \
CORE/libCORE.a \
- ARB_GDE/ARB_GDE.a \
- AWT/libAWT.a \
- AWTC/AWTC.a \
- AWTI/AWTI.a \
- CONSENSUS_TREE/CONSENSUS_TREE.a \
- CONVERTALN/CONVERTALN.a \
- DBSERVER/DBSERVER.a \
- DIST/DIST.a \
- EDIT4/EDIT4.a \
- EISPACK/EISPACK.a \
- GDE/GDE.a \
- GENOM/GENOM.a \
- GENOM_IMPORT/GENOM_IMPORT.a \
- GL/GL.a \
- ISLAND_HOPPING/ISLAND_HOPPING.a \
- MERGE/MERGE.a \
- MULTI_PROBE/MULTI_PROBE.a \
- NALIGNER/NALIGNER.a \
- NAMES/NAMES.a \
- NAMES_COM/server.a \
- NTREE/NTREE.a \
- PARSIMONY/PARSIMONY.a \
- PERLTOOLS/PERLTOOLS.a \
- PHYLO/PHYLO.a \
- PRIMER_DESIGN/PRIMER_DESIGN.a \
PROBE_COM/server.a \
- PROBE_DESIGN/PROBE_DESIGN.a \
- PROBE_SET/PROBE_SET.a \
- READSEQ/READSEQ.a \
- RNA3D/RNA3D.a \
- RNACMA/RNACMA.a \
- SECEDIT/SECEDIT.a \
- SEQ_QUALITY/SEQ_QUALITY.a \
- SERVERCNTRL/SERVERCNTRL.a \
- SL/SL.a \
- STAT/STAT.a \
- TOOLS/TOOLS.a \
- TREEGEN/TREEGEN.a \
- UNIT_TESTER/UNIT_TESTER.a \
- WETC/WETC.a \
- WINDOW/libWINDOW.a \
- XML/XML.a \
# -----------------------
# library packets
ARCHS_CLIENT_PROBE = PROBE_COM/client.a PROBE_COM/common.a
-ARCHS_CLIENT_NAMES = NAMES_COM/client.a NAMES_COM/common.a
ARCHS_SERVER_PROBE = PROBE_COM/server.a $(ARCHS_CLIENT_PROBE)
-ARCHS_SERVER_NAMES = NAMES_COM/server.a $(ARCHS_CLIENT_NAMES)
-
-ARCHS_MAKEBIN = AISC_MKPTPS/AISC_MKPTPS.a AISC/AISC.a
# communication libs need aisc and aisc_mkpts:
@@ -1290,10 +1242,9 @@ WINDOW/WINDOW.dummy: target_is_missing_l
# Additional dependencies for subtargets:
-PROBE_COM/PROBE_COM.dummy : comtools
-NAMES_COM/NAMES_COM.dummy : comtools
+PROBE_COM/PROBE_COM.dummy :
-com: PROBE_COM/PROBE_COM.dummy NAMES_COM/NAMES_COM.dummy
+com: PROBE_COM/PROBE_COM.dummy
PROBE_COM/server.dummy:
@echo Unwanted request to make target $<
@@ -1557,8 +1508,8 @@ clrdotdepends:
comdepends: comtools clrdotdepends
@echo "$(SEP) Partially build com interface"
- $(MAKE) PROBE_COM/PROBE_COM.depends NAMES_COM/NAMES_COM.depends
- $(MAKE) PROBE_COM/server.depends NAMES_COM/server.depends
+ $(MAKE) PROBE_COM/PROBE_COM.depends # NAMES_COM/NAMES_COM.depends
+ $(MAKE) PROBE_COM/server.depends # NAMES_COM/server.depends
depends: genheaders comdepends
@echo "$(SEP) Updating other dependencies"
@@ -1652,7 +1603,7 @@ tags: $(TAG_SOURCE_LISTS)
LINKSTAMP=SOURCE_TOOLS/stamp.generate_all_links
-links: checks $(LINKSTAMP) arbmainwrapper
+links: checks # $(LINKSTAMP) arbmainwrapper
links_no_checks: $(LINKSTAMP) arbmainwrapper
forcelinks:
@@ -1847,7 +1798,7 @@ clean2: $(ARCHS:.a=.clean) \
rm -f *.last_gcc *.last_compiler config.makefile.bak
# links are needed for cleanup
-clean: redo_links motif_xpm_hack_clean
+clean: redo_links
$(MAKE) clean2
$(MAKE) clean_cov_all clean_links
@@ -1981,7 +1932,7 @@ arb_external: convert tools gde readseq
arb_no_perl: arbapplications help arb_external
-arb: motif_xpm_hack
+arb:
$(MAKE) "WITHPERL=1" perl arb_no_perl
motif_xpm_hack:
fix_makefiles.patch
# fix_makefiles.patch
fix_main_makefile.patch
......@@ -39,8 +39,9 @@ override_dh_auto_build:
ln -s TEMPLATES INCLUDE
for header in UNIT_TESTER/*.h ; do ln -s ../$${header} INCLUDE/`basename $${header}` ; done
ln -s /usr/include/valgrind/valgrind.h INCLUDE/valgrind.h
mkdir bin
mkdir lib
dh_auto_build --sourcedirectory=CORE
dh_auto_build -- all # --sourcedirectory=CORE
override_dh_auto_configure: config.makefile
......@@ -48,6 +49,8 @@ override_dh_auto_clean: config.makefile
# config.makefile is required to run make clean, hence the dependency
# on ..._auto_configure.
$(MAKE) clean || true
rm -rf bin
rm -rf lib
rm config.makefile
# ARB does not have "distclean" or "realclean". Remove some leftovers:
rm -f UNIT_TESTER/Makefile.setup.local
......