source: MondoRescue/branches/stable/tools/distro-env@ 918

Last change on this file since 918 was 918, checked in by Bruno Cornec, 17 years ago

New improvement for build system. By default now try to build in the rpm _topdir and check if it fails, rather than creating a different directory.

  • Property svn:executable set to *
File size: 4.1 KB
Line 
1#!/bin/bash
2#
3# Create env depending on the distro on which we are
4#
5# $Id$
6#
7# Input parameters : $ddir (distro name) and $dver (distro version)
8# If they do not exist then deduce from current distro
9# Exports : $dfam (distro family) $suf (pkg suffix) $dtype (distro type) TOPBUILDDIR (dir to build packages)
10
11#
12# Guess ddir and dver from the underlying distro
13#
14if [ _"$ddir" = _"" ]; then
15 if [ -e /etc/mandriva-release ]; then
16 export ddir="mandriva"
17 export dver=`awk '{print $4}' /etc/mandriva-release`
18 elif [ -e /etc/mandrake-release ]; then
19 export ddir="mandrake"
20 export dver=`awk '{print $3}' /etc/mandrake-release`
21 elif [ -e /etc/redhat-release ]; then
22 grep -q Enterprise /etc/redhat-release
23 if [ $? -eq 0 ]; then
24 export ddir="rhel"
25 export dver=`awk '{print $7}' /etc/redhat-release`
26 elif grep -q Fedora /etc/redhat-release ; then
27 export ddir="fedora"
28 export dver=`awk '{print $4}' /etc/redhat-release`
29 elif grep -q CentOS /etc/redhat-release ; then
30 export ddir="centos"
31 export dver=`awk '{print $3}' /etc/redhat-release`
32 else
33 export ddir="redhat"
34 export dver=`awk '{print $5}' /etc/redhat-release`
35 fi
36 elif [ -e /etc/SuSE-release ]; then
37 grep -q Enterprise /etc/SuSE-release
38 if [ $? -eq 0 ]; then
39 export ddir="sles"
40 export dver=`head -1 /etc/SuSE-release | awk '{print $5}'`
41 else
42 export ddir="suse"
43 export dver=`head -1 /etc/SuSE-release | awk '{print $3}'`
44 fi
45 elif [ -e /etc/gentoo-release ]; then
46 export ddir="gentoo"
47 export dver=`awk '{print $5}' /etc/gentoo-release | cut -d. -f1-2`
48 elif [ -e /etc/debian_version ]; then
49 export ddir="debian"
50 export dver=`cat /etc/debian_version`
51 # Debian assigns release names only once a release actually happens.
52 # Debian does not distinguish between testing and unstable because
53 # unstable today is what testing will be in about ten days time. So,
54 # in case we encounter "tesing/unstable", we assume unstable, i.e. sid.
55 # Note that for released versions, the numeric version will be contained
56 # in debian_version, e.g. on a sarge system, the value will be '3.1'.
57 if [ $dver = "testing/unstable" ]; then
58 export dver = "sid"
59 fi
60 else
61 export ddir="unknown"
62 export dver=""
63 fi
64fi
65
66#
67# Generate all other parameters
68#
69if [ $ddir = "debian" ]; then
70 dfam="debian"
71 dtype="deb"
72 suf=".${dfam}${dver}"
73elif [ $ddir = "gentoo" ]; then
74 dfam="gentoo"
75 dtype="ebuild"
76 dver1=`echo ${dver} | sed "s/\.//"`
77 suf=".${ddir}${dver1}"
78elif [ $ddir = "slackware" ]; then
79 dfam="slack"
80 dtype="tgz"
81 suf=".${dfam}${dver}"
82elif [ $ddir = "sles" -o $ddir = "suse" ]; then
83 dfam="suse"
84 dtype="rpm"
85 suf=".${ddir}${dver}"
86elif [ $ddir = "fedora" -o $ddir = "redhat" -o $ddir = "rhel" -o $ddir = "centos" ]; then
87 dfam="redhat"
88 dtype="rpm"
89 dver1=`echo ${dver} | sed "s/\.//"`
90 if [ $ddir = "fedora" ]; then
91 suf=".fc${dver1}"
92 elif [ $ddir = "centos" ]; then
93 dver1=`echo ${dver} | sed "s/\.[0-9]//"`
94 suf=".centos${dver1}"
95 elif [ $ddir = "redhat" ]; then
96 suf=".rh${dver1}"
97 else
98 suf=".rhel${dver1}"
99 fi
100elif [ $ddir = "mandrake" ]; then
101 dfam="mandriva"
102 dtype="rpm"
103 suf=".`echo $dver | sed 's/\.//'`mdk"
104elif [ $ddir = "mandriva" ]; then
105 dfam="mandriva"
106 dtype="rpm"
107 suf=".`echo $dver | sed 's/\.//'`mdv"
108else
109 dfam="unknown"
110 dtype="unknown"
111 suf="unknown"
112fi
113
114export dfam
115export dtype
116export suf
117
118#
119# Additional exports and preparation for some distros
120#
121
122# Default
123export TOPBUILDDIR=`rpm --showrc | grep -E '[ ]_topdir[ ]' | awk '{print $3}'`
124
125if [ _"$dtype" = _"rpm" ]; then
126 export ARCH=`rpm --showrc | egrep "^build arch" | awk '{print $4}'`
127 if [ -f ${HOME}/.rpmmacros ]; then
128 _TOPBUILDDIR=`egrep '^%_topdir' ${HOME}/.rpmmacros | awk '{print $2}'`
129 if [ _"$_TOPBUILDDIR" != _"" ]; then
130 export TOPBUILDDIR=$_TOPBUILDDIR
131 fi
132 fi
133 mkdir -p ${TOPBUILDDIR}/{RPMS,SRPMS,SPECS,SOURCES,BUILD}
134 if [ $? -ne 0 ]; then
135 echo "Please ensure that you can write into ${TOPBUILDDIR}"
136 echo "Solution: setup _topdir in your ~/.rpmmacros or"
137 echo "chown the ${TOPBUILDDIR} to your uid"
138 exit -1
139 fi
140elif [ _"$dtype" = _"deb" ]; then
141 mkdir -p ${TOPBUILDDIR}
142elif [ _"$dtype" = _"ebuild" ]; then
143 mkdir -p ${TOPBUILDDIR}/portage
144fi
Note: See TracBrowser for help on using the repository browser.