Removed inlines
[liblqr.git] / autodeb
blobad19d59ee2a0ff9a97f5acd9e813a70d5248e536
1 #!/bin/bash
3 function err_mess ()
5 echo "$(basename $0): error: $1" > /dev/stderr;
8 [ -f "Makefile" ] || { err_mess "makefile not found"; exit 1; }
9 [ -f "configure.ac" ] || { err_mess "configure.ac not found"; exit 1; }
11 FAKE=0
12 if [ "$1" == "--fake" ]
13 then
14 FAKE=1
15 DEBFULLNAME="Me Myself"
16 DEBEMAIL="me@myself.org"
17 shift;
20 DISTRO="hardy"
21 if [ -n "$1" ]
22 then
23 DISTRO="$1";
24 shift;
26 case $DISTRO in
27 gutsy|hardy);;
28 default) err_mess "unknown distro: $DISTRO";
29 exit 1;
31 esac
33 PBUILDER_RC_FILE="${HOME}/.pbuilderrc_${DISTRO}"
35 [ -f "${PBUILDER_RC_FILE}" ] || { err_mess "pbuilder config file not found"; exit 1; }
37 BASE_NAME=$(head -n 50 configure.ac | grep "m4_define(\[library_base_name\], \[.*\])" | sed "s/m4_define(\[library_base_name\], \[\(.*\)\])/\1/")
38 API_VERSION=$(head -n 50 configure.ac | grep "m4_define(\[api_version\], \[.*\])" | sed "s/m4_define(\[api_version\], \[\(.*\)\])/\1/")
40 MAJOR_VER=$(head -n 50 configure.ac | grep "m4_define(\[package_major_version\], \[.*\])" | sed "s/m4_define(\[package_major_version\], \[\(.*\)\])/\1/")
41 MINOR_VER=$(head -n 50 configure.ac | grep "m4_define(\[package_minor_version\], \[.*\])" | sed "s/m4_define(\[package_minor_version\], \[\(.*\)\])/\1/")
42 MICRO_VER=$(head -n 50 configure.ac | grep "m4_define(\[package_micro_version\], \[.*\])" | sed "s/m4_define(\[package_micro_version\], \[\(.*\)\])/\1/")
44 NAME="lib${BASE_NAME}"
45 NAME1="lib${BASE_NAME}-${API_VERSION}-${MAJOR_VER}"
46 NAMEDEV1="${NAME1}-dev"
47 NAMEDBG1="${NAME1}-dbg"
49 VER="${MAJOR_VER}.${MINOR_VER}.${MICRO_VER}"
51 DEBIAN_IN_DIR="debian.in"
52 REL_SUB_VER_FILE="${DEBIAN_IN_DIR}/${DISTRO}/release_subv"
54 [ -f "$REL_SUB_VER_FILE" ] || { err_mess "release_subv not found"; exit 1; }
56 REL_SUB_VER="$(cat "${REL_SUB_VER_FILE}")";
57 echo "$REL_SUB_VER" | grep -q "[[:digit:]]\+" || { err_mess "invalid release subversion: $REL_SUB_VER"; exit 1;}
59 NAME_HYPHEN="${NAME}-${API_VERSION}-${VER}"
60 NAME_UNDERSC="${NAME}_${VER}"
61 NAME_UNDERSC1="${NAME1}_${VER}"
62 NAMEDEV_UNDERSC1="${NAMEDEV1}_${VER}"
63 NAMEDBG_UNDERSC1="${NAMEDBG1}_${VER}"
64 TGZ_NAME="${NAME_HYPHEN}.tar.gz"
65 ORIG_NAME="${NAME_UNDERSC}.orig.tar.gz"
67 function ubunames ()
69 DEB_NAME="${NAME_UNDERSC}-0ubuntu$1"
70 DEB_NAME1="${NAME_UNDERSC1}-0ubuntu$1"
71 DEB_NAMEDEV1="${NAMEDEV_UNDERSC1}-0ubuntu$1"
72 DEB_NAMEDBG1="${NAMEDBG_UNDERSC1}-0ubuntu$1"
73 DSC_NAME="${DEB_NAME}.dsc"
74 DIFF_NAME="${DEB_NAME}.diff.gz"
75 CHANGES_NAME="${DEB_NAME}_i386.changes"
76 PKG_NAME="${DEB_NAME1}_i386.deb"
77 PKG_NAMEDEV="${DEB_NAMEDEV1}_i386.deb"
78 PKG_NAMEDBG="${DEB_NAMEDBG1}_i386.deb"
81 RESULTS_DIR="/var/cache/pbuilder_${DISTRO}/result"
82 BUILD_DIR="${HOME}/deb_builds/${DISTRO}/${NAME_HYPHEN}"
83 DEB_DIR_TEMPL="${DEBIAN_IN_DIR}/${DISTRO}/debian.template"
84 TMP_DIR="${NAME_HYPHEN}-tmp-$$"
85 TMP_FILE_1="changelog1.$$.tmp"
86 TMP_FILE_2="changelog2.$$.tmp"
88 if [ $REL_SUB_VER -gt 0 ]
89 then
90 [ -d "${BUILD_DIR}" ] || { err_mess "directory not found: ${BUILD_DIR}"; exit 1; }
91 pushd "${BUILD_DIR}" > /dev/null || exit 1
92 BUILD_DIR="$(pwd -P)" || exit 1
93 [ -f "${ORIG_NAME}" ] || { err_mess "file not found: ${ORIG_NAME}"; exit 1; }
94 for ver in $(seq $REL_SUB_VER)
96 ubunames $ver
97 [ -f "${DIFF_NAME}" ] || { err_mess "file not found: ${DIFF_NAME}"; exit 1; }
98 done
99 popd > /dev/null || exit 1
100 else
101 mkdir -p "${BUILD_DIR}" || exit 1
102 pushd "${BUILD_DIR}" > /dev/null || exit 1
103 BUILD_DIR="$(pwd -P)" || exit 1
104 popd > /dev/null || exit 1
108 mkdir "${TMP_DIR}" || exit 1
110 ## intltool-update-all || exit 1
112 make dist || exit 1
114 mv "${TGZ_NAME}" "${TMP_DIR}" || exit 1
116 cd "${TMP_DIR}" || exit 1
118 if [ $REL_SUB_VER -eq 0 ]
119 then
120 cp "${TGZ_NAME}" "${ORIG_NAME}" || exit 1;
123 tar -vxzf "${TGZ_NAME}" || exit 1
125 if [ $REL_SUB_VER -gt 0 ]
126 then
127 cp "${BUILD_DIR}/${ORIG_NAME}" . || exit 1
128 for ver in $(seq $REL_SUB_VER)
130 ubunames $ver
131 cp "${BUILD_DIR}/${DIFF_NAME}" . || exit 1;
132 done
136 cd "${NAME_HYPHEN}" || exit 1
138 cp -r "../../${DEB_DIR_TEMPL}" "debian" || exit 1
140 if [ $REL_SUB_VER -gt 0 ]
141 then
142 [ -f "debian/changelog" ] || { err_mess "changelog not found"; exit 1; }
143 head -n 1 "debian/changelog" | grep -q "^${NAME} ($(echo ${VER} | sed "s/\./\\\./g")-0ubuntu${REL_SUB_VER}) ${DISTRO}; urgency=.\+$"
144 [ $? -eq 0 ] || { err_mess "wrong changelog"; exit 1; }
145 else
146 [ -f "debian/changelog" ] && { err_mess "changelog found before first release, aborting"; exit 1; }
147 touch "debian/changelog" || exit 1;
150 REL_SUB_VER=$[ $REL_SUB_VER + 1 ] || { err_mess "strange error"; exit 1; }
152 cat > ${TMP_FILE_1} << EOF
153 ${NAME} (${VER}-0ubuntu${REL_SUB_VER}) ${DISTRO}; urgency=low
155 * < description here >
157 -- ${DEBFULLNAME} <${DEBEMAIL}> $(date -R)
161 [ $? -eq 0 ] || { err_mess "what?"; exit 1; }
163 cat "debian/changelog" >> "${TMP_FILE_1}" || exit 1
165 cp "${TMP_FILE_1}" "${TMP_FILE_2}" || exit 1
167 vim +/"< description here >" "${TMP_FILE_1}" || exit 1
169 if [ ${FAKE} -eq 0 ]
170 then
171 diff -q "${TMP_FILE_1}" "${TMP_FILE_2}" > /dev/null
172 case $? in
173 0) echo "no changelog description, aborting";
174 cd ../.. || exit 1
175 rm -fr "${TMP_DIR}" || exit 1;
176 exit 2;
178 2) exit 1;
180 esac
183 cp "${TMP_FILE_1}" "debian/changelog"
185 rm -f "${TMP_FILE_1}" "${TMP_FILE_2}" || exit 1
187 debuild -S -k"${DEBFULLNAME}" || exit 1
189 cd .. || exit 1
191 ubunames ${REL_SUB_VER}
193 sudo apt-get update --simulate || exit 1
195 sudo pbuilder --build \
196 --distribution "${DISTRO}" \
197 --configfile "${PBUILDER_RC_FILE}" \
198 "${DSC_NAME}" || exit 1
200 cd .. || exit 1
202 pushd "${RESULTS_DIR}" > /dev/null || exit 1
204 if [ $FAKE -eq 0 ]
205 then
206 [ ${REL_SUB_VER} -eq 1 ] && { cp "${ORIG_NAME}" "${BUILD_DIR}" || exit 1; }
207 cp "${DIFF_NAME}" "${CHANGES_NAME}" "${DSC_NAME}" "${PKG_NAME}" "${PKG_NAMEDEV}" "${PKG_NAMEDBG}" "${BUILD_DIR}" || exit 1
208 else
209 [ ${REL_SUB_VER} -eq 1 ] && { [ -f "${ORIG_NAME}" ] || { err_mess "orginal tar.gz not found"; exit 1; } }
210 [ -f "${CHANGES_NAME}" -a -f "${DSC_NAME}" -a -f "${PKG_NAME}" -a -f "${PKG_NAMEDEV}" -a -f "${PKG_NAMEDBG}" ] || { err_mess "built files not found"; exit 1; }
213 popd > /dev/null || exit 1
215 if [ $FAKE -eq 0 ]
216 then
217 cp -f "${TMP_DIR}/${NAME_HYPHEN}/debian/changelog" "${DEB_DIR_TEMPL}" || exit 1
219 echo "${REL_SUB_VER}" > "${REL_SUB_VER_FILE}" || exit 1
222 rm -fr "${TMP_DIR}" || exit 1
224 echo "Everything OK"