Projet

Général

Profil

build-smb.sh

Philippe Caseiro, 03/11/2016 11:22

Télécharger (3,52 ko)

 
1
#!/bin/bash
2

    
3
#
4
# Build Samba
5
#
6

    
7
BUILDDEPDS="acl attr autoconf bison build-essential \
8
debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \
9
libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \
10
libcap-dev libcups2-dev libgnutls-dev libjson-perl \
11
libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
12
libpopt-dev libreadline-dev perl perl-modules-5.22 pkg-config \
13
python-all-dev python-dev python-dnspython python-crypto \
14
xsltproc zlib1g-dev libgpgme11-dev python-gpgme python-m2crypto"
15

    
16
SMBPKG="samba samba-common samba-common-bin libwbclient0 samba-dsbd-modules samba-libs samba-vfs-modules python-samba"
17

    
18
VERSION="4.5.1"
19
SOURCENAME="samba-${VERSION}"
20
SOURCEFILE="${SOURCENAME}.tar.gz"
21
SOURCEURL="https://download.samba.org/pub/samba/stable/${SOURCEFILE}"
22
CHECKSUM="9f77c562e9578ef68ea9b1f80bd2adebd93dc013"
23
WORKDIR="/tmp/samba-build"
24
ARCH=$(uname -i)
25

    
26
BUILDOPT="${BUILDOPT} --prefix=/usr"
27
BUILDOPT="${BUILDOPT} --mandir=/usr/share/man"
28
BUILDOPT="${BUILDOPT} --sysconfdir=/etc"
29
BUILDOPT="${BUILDOPT} --localstatedir=/var"
30
BUILDOPT="${BUILDOPT} --with-piddir=/var/run"
31
BUILDOPT="${BUILDOPT} --disable-rpath"
32
BUILDOPT="${BUILDOPT} --disable-rpath-install"
33
#BUILDOPT="${BUILDOPT} --with-modulesdir=/usr/lib/${ARCH}-linux-gnu/samba/"
34
#BUILDOPT="${BUILDOPT} --libdir=/usr/lib/${ARCH}-linux-gnu/"
35
#BUILDOPT="${BUILDOPT} --bundled-libraries=NONE,pytevent,iniparser"
36
#BUILDOPT="${BUILDOPT} --builtin-libraries=ctdb,replace,ccan"
37
BUILDOPT="${BUILDOPT} --enable-fhs"
38
BUILDOPT="${BUILDOPT} --with-gpgme"
39

    
40
# Unsupported options
41
#BUILDOPT="${BUILDOPT} --disable-ntdb"
42

    
43
LOGFILE="${WORKDIR}/build-smb-$(date +'%d%m%Y-%H%M%S').log"
44

    
45
function buildDepends()
46
{
47
    run "apt-eole install ${BUILDDEPDS}"
48
    return ${?}
49
}
50

    
51
function validateSum()
52
{
53
    local cfile=${1}
54
    local vsum=${2}
55
    local sum=$(sha1sum ${cfile} -b | cut -d ' ' -f 1)
56

    
57
    if [[ "${sum}" == "${vsum}" ]]
58
    then
59
        return 0
60
    else
61
        return 27
62
    fi
63
}
64

    
65
function getSources()
66
{
67
    if [[ -f "${WORKDIR}/${SOURCEFILE}" ]]
68
    then
69
        validateSum ${WORKDIR}/${SOURCEFILE} ${CHECKSUM}
70
        return ${?}
71
    else
72
        run "wget --directory-prefix ${WORKDIR} ${SOURCEURL}"
73
        if [[ ${?} -eq 0 ]]
74
        then
75
            validateSum ${WORKDIR}/${SOURCEFILE} ${CHECKSUM}
76
            return ${?}
77
        else
78
            return 1
79
        fi
80
    fi
81
}
82

    
83
function unpackSources()
84
{
85
    [[ ! -d ${WORKDIR}/sources ]] && mkdir -p ${WORKDIR}/sources/
86
	if [[ ! -d ${WORKDIR}/sources/${SOURCENAME} ]]
87
	then
88
		run "tar xzvf ${WORKDIR}/${SOURCEFILE} -C ${WORKDIR}/sources/"
89
		return ${?}
90
	fi
91
}
92

    
93
function removeSamba()
94
{
95
	for pkg in ${SMBPKG}
96
	do
97
		run "dpkg -r --force-all ${pkg}"
98
	done
99
}
100

    
101
function build()
102
{
103
    local cpu=$(nproc)
104
    local opts=""
105

    
106
    [[ ${cpu} -ge 2 ]] && opts="-j ${cpu}"
107

    
108
    cd ${WORKDIR}/sources/${SOURCENAME}
109
    run "make clean"
110
    run "./configure ${BUILDOPT}"
111
    run "make ${opts}"
112
	removeSamba
113
    run "make install"
114
}
115

    
116
function run()
117
{
118
    echo "Running : $@"
119
    $@ >> ${LOGFILE} 2>&1
120
    return ${?}
121
}
122

    
123
function error()
124
{
125
    echo "[ERROR][${1}"
126
    exit ${2}
127
}
128

    
129
#
130
# MAIN
131
#
132

    
133
[[ ! -d ${WORKDIR} ]] && mkdir -p ${WORKDIR}
134
cd ${WORKDIR}
135

    
136
# Install build depends
137
buildDepends
138
[[ ${?} -ne 0 ]] && error "Problem during deps installation" 1
139

    
140
# Download sources and validate
141
getSources
142
if [[ ${?} -eq 1 ]]
143
then
144
    error "Problem downloading the file from ${SOURCEURL}" 2
145
elif [[ ${?} -eq 27 ]]
146
then
147
    error "Downloaded file sum is not ${CHECKSUM}" 3
148
else
149
    unpackSources
150
    [[ ${?} -ne 0 ]] && error "Unpacking problem for file ${WORKDIR}/${SOURCEFILE}" 4
151
fi
152

    
153
build
154
exit ${?}
155