aboutsummaryrefslogtreecommitdiff
path: root/scripts/auto-build/auto-build-common
blob: 5a522aff93f898aa8494e08dd91cffcb26fcaea3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/bin/sh
# these are common variables for the auto-build scripts

SYSTEM=$(uname -s | sed 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|')
DATE=$(date +%Y-%m-%d)
TIME=$(date +%H.%M.%S)
HOSTNAME=$(hostname | sed 's|\([a-zA-Z0-9-]\)\..*|\1|' | sed 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|')

# use the hostname from /etc/hostname in case we are a chroot build enviroment
if [ -e /etc/hostname ]; then
	HOSTNAME=`cat /etc/hostname`
else
	HOSTNAME=$(hostname | sed 's|\([a-zA-Z0-9-]\)\..*|\1|' | sed 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|')
fi

## the following creates a spam-bot that sends emails to an address that has not asked for it
## because of the spam-problem, i (jmz) have disabled it
# recipient of any emails set from the scripts
#RECIPIENT=pd-cvs@iem.at


## if you want to send emails about the success of your build,
## please create a file "auto-build-common.local" in this directory
## and set the "RECIPIENT" address to some valid email-address
#
## please do NOT check your auto-build-common.local into the CVS
#
## another possibility is to set the "RECIPIENT" environmental variable before running
## the autobuilder

if [ -e ${HOME}/auto-build-common.local ]; then
  . ${HOME}/auto-build-common.local
else
  echo "Could not find local configuration in \"${HOME}/auto-build-common.local\""
  echo "Skipping... (see ${HOME}/auto-build-common for instructions)"
  echo
fi

# cygwin/Mingw don't have 'mail', but do have 'email' which is close enough.
# To get around the troubles with mail servers, we'll contact the SMTP server
# of the mailing lists directly (mail.iem.at).
if [ -x /usr/bin/mail ]; then
	MAIL_COMMAND=/usr/bin/mail
elif [ -x /bin/mail ]; then
	MAIL_COMMAND=/bin/mail
else
	MAIL_COMMAND="email --smtp-server mail.iem.at"
fi


#------------------------------------------------------------------------------#
# print out ip addresses for debugging
print_ip_address()
{
	echo -n "hostname: "
	hostname
	echo "---------------------------"
	if [ -x /sbin/ifconfig ]; then
		/sbin/ifconfig
	else
		ipconfig
	fi
}


rsync_distro()
{
# let rsync handle the cleanup with --delete
	DISTRO=$(basename $1)
	echo "rsyncing $DISTRO to ${1}:"
	RSYNC_COMMAND="rsync -a --delete-before rsync://128.238.56.50/distros/${DISTRO}/ ${1}/"
	case $SYSTEM in
		mingw*)
			/c/cygwin/bin/sh -c "$RSYNC_COMMAND"
			;;
		*)
			$RSYNC_COMMAND
			;;
	esac
}

# Mac OS X's included git or svn might be really old, so try Fink first
find_git()
{
    if [ -x /sw/bin/git ]; then
        echo /sw/bin/git
    elif [ -x /usr/bin/git ]; then
        echo /usr/bin/git
    else
        echo git
    fi
}

find_svn()
{
    if [ -x /sw/bin/svn ]; then
        echo /sw/bin/svn
    elif [ -x /usr/bin/svn ]; then
        echo /usr/bin/svn
    else
        echo svn
    fi
}

clean_and_update_folder()
{
    folder=$1
    cd $folder
    if [ -d $folder/.git ]; then
        git=$(find_git)
        $git reset --hard
        $git clean -fdx
        $git pull
    elif [ -d $folder/.svn ]; then
        svn=$(find_svn)
        $svn revert -R .
        $svn status --no-ignore | \
            grep -v '^X' | \
            awk '{print $2}' | \
            xargs rm -rf
        $svn update
    else
        echo "no cleaning done, unknown SCM"
    fi
}