1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
#!/bin/sh -e
if [ $# -ne 1 ] ; then
echo "Usage: `basename $0` CRAN_package_name"
exit 1
fi
if [ "$1" = "stats4" ] ; then
echo "Package $1 not available on CRAN and BioConductor. Needs investigation."
exit 0
fi
do_wnpp_check () {
retval=""
wnpp=`wnpp-check $wnppname | sed 's/^(.* - #\([0-9]\+\)) http.*/\1/'`
if [ "$wnpp" != "" ] ; then
newversion=`PGPASSWORD="public-udd-mirror" psql --host=public-udd-mirror.xvm.mit.edu --username=public-udd-mirror -t udd -c "select version from new_packages where package = '$wnppname' ;"`
if [ "$newversion" != "" ] ; then
retval="Package $wnppname is just in Debian new queue waiting for processing"
else
retval="Package $wnppname was ITPed in bug #$wnpp. Please check http://bugs.debian.org/$wnpp"
fi
fi
echo $retval
}
workdir=`pwd`
cranname=$1
pkgname=r-cran-`echo $cranname | tr '[A-Z]' '[a-z]'`
wnppname=$pkgname
wnppcheck=$( do_wnpp_check )
if [ "$wnppcheck" != "" ] ; then
echo $wnppcheck
exit 0
else
wnppname="r-bioc-`echo $cranname | tr '[A-Z]' '[a-z]'`"
wnppcheck=$( do_wnpp_check )
if [ "$wnppcheck" != "" ] ; then
echo $wnppcheck
exit 0
fi
fi
if echo $workdir | grep -q CRAN_prospective ; then
basedir=`echo $workdir | sed 's#\(CRAN_prospective\).*#\1#'`
else
basedir=`dirname $workdir`/CRAN_prospective
fi
targetdir="$basedir/$pkgname"
if [ -d `dirname ${targetdir}`/${cranname}/debian -o -d $targetdir ] ; then
echo "Previous packaging attempt for $cranname exists in `dirname ${targetdir}`/${cranname}"
exit 0
fi
mkdir -p $targetdir/debian
cd $targetdir
if [ "$DEBFULLNAME" != "" -a "$DEBEMAIL" != "" ] ; then
AUTHOR="$DEBFULLNAME <${DEBEMAIL}>"
else
AUTHOR="FIXME: DEBFULLNAME <DEBEMAIL> (you should set these variables in your environment)"
fi
cat > debian/changelog <<EOT
$pkgname (0.0-1) UNRELEASED; urgency=medium
* Initial release
-- $AUTHOR `date -R`
EOT
cat > debian/watch <<EOT
version=4
https://cloud.r-project.org/src/contrib/${cranname}@ANY_VERSION@@ARCHIVE_EXT@
EOT
tarball=`uscan --verbose 2>/dev/null | grep ".orig.tar.[gx]z" | sed 's#^.* \(\.\./.*\.orig\.tar\.[gx]z\).*#\1#'`
if [ "$tarball" = "" ] ; then
# if nothing was found on CRAN try BioConductor
sed -i 's/^r-cran-/r-bioc-/' debian/changelog
cat > debian/watch <<EOT
version=4
opts=downloadurlmangle=s?^(.*)\.\.?http:\$1packages/release/bioc? \
https://www.bioconductor.org/packages/release/bioc/html/${cranname}.html .*/${cranname}@ANY_VERSION@@ARCHIVE_EXT@
EOT
tarball=`uscan --verbose 2>/dev/null | grep ".orig.tar.[gx]z" | sed 's#^.* \(\.\./.*\.orig\.tar\.[gx]z\).*#\1#'`
if [ "$tarball" = "" ] ; then
echo "$cranname was neither found on CRAN nor BioConductor"
exit 1
fi
pkgname=r-bioc-`echo $cranname | tr '[A-Z]' '[a-z]'`
fi
cd ..
rm -rf r-cran-`echo $cranname | tr '[A-Z]' '[a-z]'`
tarball=`echo $tarball | sed 's#^\.\./##'`
tar xaf $tarball
cd $cranname
if [ `find . -iname "test*" | wc -l` -gt 0 ] ; then
dh-make-R --test run-unit-test 2>/dev/null >/dev/null
else
dh-make-R 2>/dev/null >/dev/null
fi
# Hack to get cme formatted d/control
sed -i 's/^Standards-Version: .*/Standards-Version: 4.0.0/' debian/control
cme fix dpkg-control 2>/dev/null >/dev/null || true
if [ `find . -iname "*.rda" -o -iname "*.rdata" | wc -l` -gt 0 ] ; then
cd debian
/usr/share/dh-r/create_README.source > README.source
cd ..
fi
cd ..
gitdir="$basedir/$pkgname"
mkdir $gitdir
cd $gitdir
git init
#newversion=`echo ../$tarball | sed 's/^.*_\([0-9].*\)\.orig\.tar\..*/\1/'`
#gbp import-orig --pristine-tar --upstream-version=$newversion ../$tarball
gbp import-orig --pristine-tar --no-interactive ../$tarball
mv ../$cranname/debian .
git add debian
git commit -a -m"Initial packaging by `basename $0`"
rm ../`readlink ../$tarball`
rm ../$tarball
rm -rf ../$cranname
echo "You can find a packaging repository for $cranname in `pwd`"
|