provide upstream source
This commit is contained in:
153
debian/bin/new-release
vendored
Executable file
153
debian/bin/new-release
vendored
Executable file
@@ -0,0 +1,153 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -ef
|
||||
|
||||
prj_dir=$(readlink -f "$(dirname "$0")/../..")
|
||||
cd "${prj_dir}"
|
||||
|
||||
[ -s debian/changelog ]
|
||||
dpkg-parsechangelog --show-field Source | grep -Eq '^linux'
|
||||
|
||||
ch_ver=$(dpkg-parsechangelog --show-field Version)
|
||||
ch_dist=$(dpkg-parsechangelog --show-field Distribution)
|
||||
|
||||
do_idle() {
|
||||
nice -n +40 chrt -i 0 ionice -c 3 "$@"
|
||||
}
|
||||
|
||||
v=$1
|
||||
if [ -z "$v" ] ; then
|
||||
v=$(echo "${ch_ver}" | sed -E 's/^\d+://;s/-[^-]+$//')
|
||||
fi
|
||||
|
||||
IFS=. read -r major minor __patch <<-EOF
|
||||
$v
|
||||
EOF
|
||||
[ -n "${minor}" ]
|
||||
ver_path="v${major}.${minor}"
|
||||
[ "${minor}" = 0 ] || ver_path="v${major}.x"
|
||||
|
||||
tarball_new="linux_${v}.orig.tar"
|
||||
tarball_new_comp="${tarball_new}.xz"
|
||||
do_compress() { do_idle xz -1vv "$1" ; }
|
||||
|
||||
while ! [ -s "../${tarball_new_comp}" ] ; do
|
||||
|
||||
tarball_path_web="pub/linux/kernel/${ver_path}"
|
||||
tarball_path_git="pub/scm/linux/kernel/git/stable/linux.git/snapshot"
|
||||
tarball_orig="linux-${v}.tar.xz"
|
||||
tarball_fallback="linux-${v}.tar.gz"
|
||||
src_dir="linux-${v}"
|
||||
|
||||
d=$(mktemp -d)
|
||||
cd "$d/"
|
||||
|
||||
tarball_ok=0
|
||||
|
||||
while [ ${tarball_ok} = 0 ] ; do
|
||||
[ -s "${prj_dir}/../${tarball_orig}" ] || break
|
||||
tar xf "${prj_dir}/../${tarball_orig}" || break
|
||||
tarball_ok=1 ; break
|
||||
done
|
||||
|
||||
if [ "${tarball_ok}" = 0 ] ; then
|
||||
rm -rf "${src_dir}"
|
||||
|
||||
do_download() { do_idle aria2c -c -V -j 8 -x 4 -s 16 "$@" ; }
|
||||
# aria_opts_pxy='--connect-timeout=5 --retry-wait=5 --timeout=30'
|
||||
aria_opts_web='--connect-timeout=15 --retry-wait=15 --timeout=240'
|
||||
|
||||
set +e
|
||||
while : ; do
|
||||
do_download ${aria_opts_web} \
|
||||
"https://cdn.kernel.org/${tarball_path_web}/${tarball_orig}" \
|
||||
"https://kernel.org/${tarball_path_web}/${tarball_orig}" \
|
||||
&& break
|
||||
|
||||
do_download ${aria_opts_web} \
|
||||
"https://cdn.kernel.org/${tarball_path_web}/${tarball_fallback}" \
|
||||
"https://kernel.org/${tarball_path_web}/${tarball_fallback}" \
|
||||
"https://git.kernel.org/${tarball_path_git}/${tarball_fallback}" \
|
||||
&& break
|
||||
|
||||
true ; break
|
||||
done
|
||||
set -e
|
||||
|
||||
while [ "${tarball_ok}" = 0 ] ; do
|
||||
rm -rf "${src_dir}"
|
||||
|
||||
[ -s "${tarball_orig}" ] || break
|
||||
tar xf "${tarball_orig}" || break
|
||||
cp -nv "${tarball_orig}" "${prj_dir}/../${tarball_orig}"
|
||||
tarball_ok=1 ; break
|
||||
done
|
||||
|
||||
while [ "${tarball_ok}" = 0 ] ; do
|
||||
rm -rf "${src_dir}"
|
||||
|
||||
[ -s "${tarball_fallback}" ] || break
|
||||
tar xf "${tarball_fallback}" || break
|
||||
tarball_ok=1 ; break
|
||||
done
|
||||
|
||||
rm -f "${tarball_orig}" "${tarball_fallback}"
|
||||
fi
|
||||
|
||||
[ "${tarball_ok}" = 1 ] || {
|
||||
cd "/"
|
||||
rm -rfv "$d"
|
||||
exit 1
|
||||
}
|
||||
|
||||
list_excluded() {
|
||||
local file field
|
||||
file="${prj_dir}/debian/copyright"
|
||||
field='Files-Excluded'
|
||||
|
||||
[ -s "${file}" ]
|
||||
|
||||
sed -E -n \
|
||||
-e "/^${field}:/,/^\S/{s/^${field}://;p;}" \
|
||||
< "${file}" \
|
||||
| sed -E \
|
||||
-e '$!{/^.+$/H;d;};x;s/(\s|\n)+/ /g;s/^ //;'
|
||||
}
|
||||
|
||||
files_exclude=$(list_excluded)
|
||||
|
||||
for i in ${files_exclude} ; do
|
||||
case "$i" in
|
||||
*\** | *\?* )
|
||||
find "${src_dir}/" -path "${src_dir}/$i" -exec rm -rfv {} +
|
||||
;;
|
||||
* )
|
||||
rm -rfv "${src_dir}/$i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
tar_opts='--blocking-factor=1 --numeric-owner --owner=0 --group=0 --no-xattrs --no-selinux --no-acls'
|
||||
find "${src_dir}/" ! -type d -printf '%p\0' | sort -zuV \
|
||||
| tar ${tar_opts} --null -T - -cf "${tarball_new}"
|
||||
|
||||
do_compress "${tarball_new}"
|
||||
cp -v "${tarball_new_comp}" "${prj_dir}/../"
|
||||
|
||||
cd "${prj_dir}/"
|
||||
|
||||
rm -rf "$d/"
|
||||
done
|
||||
|
||||
if [ -z "$2" ] ; then
|
||||
pkg_ver="${v}-1"
|
||||
if [ "${pkg_ver}" != "${ch_ver}" ] ; then
|
||||
dch -D "${ch_dist}" -v "${pkg_ver}" \
|
||||
'New upstream stable update:' \
|
||||
"https://www.kernel.org/pub/linux/kernel/${ver_path}/ChangeLog-${v}"
|
||||
fi
|
||||
else
|
||||
pkg_ver="${v}-$2"
|
||||
shift 2
|
||||
dch -D "${ch_dist}" -v "${pkg_ver}" "${@:-write reason here}"
|
||||
fi
|
Reference in New Issue
Block a user