Windows installer files new version (with PortableApps)
[gimp-lqr-plugin.git] / autodeb
blobc4219ec575f9d5e291cc6573d7193cf297d17cca
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 NAME=$(head -n 50 configure.ac | grep "m4_define(\[plugin_name\], \[.*\])" | sed "s/m4_define(\[plugin_name\], \[\(.*\)\])/\1/")
38 MAJOR_VER=$(head -n 50 configure.ac | grep "m4_define(\[plugin_major_version\], \[.*\])" | sed "s/m4_define(\[plugin_major_version\], \[\(.*\)\])/\1/")
39 MINOR_VER=$(head -n 50 configure.ac | grep "m4_define(\[plugin_minor_version\], \[.*\])" | sed "s/m4_define(\[plugin_minor_version\], \[\(.*\)\])/\1/")
40 MICRO_VER=$(head -n 50 configure.ac | grep "m4_define(\[plugin_micro_version\], \[.*\])" | sed "s/m4_define(\[plugin_micro_version\], \[\(.*\)\])/\1/")
42 VER="${MAJOR_VER}.${MINOR_VER}.${MICRO_VER}"
44 DEBIAN_IN_DIR="debian.in"
45 REL_SUB_VER_FILE="${DEBIAN_IN_DIR}/${DISTRO}/release_subv"
47 [ -f "$REL_SUB_VER_FILE" ] || { err_mess "release_subv not found"; exit 1; }
49 REL_SUB_VER="$(cat "${REL_SUB_VER_FILE}")";
50 echo "$REL_SUB_VER" | grep -q "[[:digit:]]\+" || { err_mess "invalid release subversion: $REL_SUB_VER"; exit 1;}
52 NAME_HYPHEN="${NAME}-${VER}"
53 NAME_UNDERSC="${NAME}_${VER}"
54 TGZ_NAME="${NAME_HYPHEN}.tar.gz"
55 ORIG_NAME="${NAME_UNDERSC}.orig.tar.gz"
57 function ubunames ()
59 DEB_NAME="${NAME_UNDERSC}-0ubuntu$1"
60 DSC_NAME="${DEB_NAME}.dsc"
61 DIFF_NAME="${DEB_NAME}.diff.gz"
62 PKG_NAME="${DEB_NAME}_i386.deb"
63 CHANGES_NAME="${DEB_NAME}_i386.changes"
66 RESULTS_DIR="/var/cache/pbuilder_${DISTRO}/result"
67 BUILD_DIR="${HOME}/deb_builds/${DISTRO}/${NAME_HYPHEN}"
68 DEB_DIR_TEMPL="${DEBIAN_IN_DIR}/${DISTRO}/debian.template"
69 TMP_DIR="${NAME_HYPHEN}-tmp-$$"
70 TMP_FILE_1="changelog1.$$.tmp"
71 TMP_FILE_2="changelog2.$$.tmp"
73 if [ $REL_SUB_VER -gt 0 ]
74 then
75 [ -d "${BUILD_DIR}" ] || { err_mess "directory not found: ${BUILD_DIR}"; exit 1; }
76 pushd "${BUILD_DIR}" > /dev/null || exit 1
77 BUILD_DIR="$(pwd -P)" || exit 1
78 [ -f "${ORIG_NAME}" ] || { err_mess "file not found: ${ORIG_NAME}"; exit 1; }
79 for ver in $(seq $REL_SUB_VER)
81 ubunames $ver
82 [ -f "${DIFF_NAME}" ] || { err_mess "file not found: ${DIFF_NAME}"; exit 1; }
83 done
84 popd > /dev/null || exit 1
85 else
86 mkdir -p "${BUILD_DIR}" || exit 1
87 pushd "${BUILD_DIR}" > /dev/null || exit 1
88 BUILD_DIR="$(pwd -P)" || exit 1
89 popd > /dev/null || exit 1
93 mkdir "${TMP_DIR}" || exit 1
95 intltool-update-all || exit 1
97 make dist || exit 1
99 mv "${TGZ_NAME}" "${TMP_DIR}" || exit 1
101 cd "${TMP_DIR}" || exit 1
103 if [ $REL_SUB_VER -eq 0 ]
104 then
105 cp "${TGZ_NAME}" "${ORIG_NAME}" || exit 1;
108 tar -vxzf "${TGZ_NAME}" || exit 1
110 if [ $REL_SUB_VER -gt 0 ]
111 then
112 cp "${BUILD_DIR}/${ORIG_NAME}" . || exit 1
113 for ver in $(seq $REL_SUB_VER)
115 ubunames $ver
116 cp "${BUILD_DIR}/${DIFF_NAME}" . || exit 1;
117 done
121 cd "${NAME_HYPHEN}" || exit 1
123 cp -r "../../${DEB_DIR_TEMPL}" "debian" || exit 1
125 if [ $REL_SUB_VER -gt 0 ]
126 then
127 [ -f "debian/changelog" ] || { err_mess "changelog not found"; exit 1; }
128 head -n 1 "debian/changelog" | grep -q "^${NAME} ($(echo ${VER} | sed "s/\./\\\./g")-0ubuntu${REL_SUB_VER}) ${DISTRO}; urgency=.\+$"
129 [ $? -eq 0 ] || { err_mess "wrong changelog"; exit 1; }
130 else
131 [ -f "debian/changelog" ] && { err_mess "changelog found before first release, aborting"; exit 1; }
132 touch "debian/changelog" || exit 1;
135 REL_SUB_VER=$[ $REL_SUB_VER + 1 ] || { err_mess "strange error"; exit 1; }
137 cat > ${TMP_FILE_1} << EOF
138 ${NAME} (${VER}-0ubuntu${REL_SUB_VER}) ${DISTRO}; urgency=low
140 * < description here >
142 -- ${DEBFULLNAME} <${DEBEMAIL}> $(date -R)
146 [ $? -eq 0 ] || { err_mess "what?"; exit 1; }
148 cat "debian/changelog" >> "${TMP_FILE_1}" || exit 1
150 cp "${TMP_FILE_1}" "${TMP_FILE_2}" || exit 1
152 vim +/"< description here >" "${TMP_FILE_1}" || exit 1
154 if [ ${FAKE} -eq 0 ]
155 then
156 diff -q "${TMP_FILE_1}" "${TMP_FILE_2}" > /dev/null
157 case $? in
158 0) echo "no changelog description, aborting";
159 cd ../.. || exit 1
160 rm -fr "${TMP_DIR}" || exit 1;
161 exit 2;
163 2) exit 1;
165 esac
168 cp "${TMP_FILE_1}" "debian/changelog"
170 rm -f "${TMP_FILE_1}" "${TMP_FILE_2}" || exit 1
172 debuild -S -k"${DEBFULLNAME}" || exit 1
174 cd .. || exit 1
176 ubunames ${REL_SUB_VER}
178 sudo apt-get update || exit 1
180 sudo pbuilder --build \
181 --override-config \
182 --distribution "${DISTRO}" \
183 --configfile "${PBUILDER_RC_FILE}" \
184 --bindmounts "/var/cache/pbuilder_${DISTRO}/result" \
185 --othermirror "deb file:/var/cache/pbuilder_${DISTRO}/result ./|deb-src file:/var/cache/pbuilder_${DISTRO}/result ./" \
186 --hookdir "/var/cache/pbuilder_${DISTRO}/hooks" \
187 "${DSC_NAME}" || exit 1
189 cd .. || exit 1
191 pushd "${RESULTS_DIR}" > /dev/null || exit 1
193 if [ $FAKE -eq 0 ]
194 then
195 [ ${REL_SUB_VER} -eq 1 ] && { cp "${ORIG_NAME}" "${BUILD_DIR}" || exit 1; }
196 cp "${DIFF_NAME}" "${CHANGES_NAME}" "${DSC_NAME}" "${PKG_NAME}" "${BUILD_DIR}" || exit 1
197 else
198 [ ${REL_SUB_VER} -eq 1 ] && { [ -f "${ORIG_NAME}" ] || { err_mess "orginal tar.gz not found"; exit 1; } }
199 [ -f "${CHANGES_NAME}" -a -f "${DSC_NAME}" -a -f "${PKG_NAME}" ] || { err_mess "built files not found"; exit 1; }
202 popd > /dev/null || exit 1
204 if [ $FAKE -eq 0 ]
205 then
206 cp -f "${TMP_DIR}/${NAME_HYPHEN}/debian/changelog" "${DEB_DIR_TEMPL}" || exit 1
208 echo "${REL_SUB_VER}" > "${REL_SUB_VER_FILE}" || exit 1
211 rm -fr "${TMP_DIR}" || exit 1
213 echo "Everything OK"