File: prepare_missing_cran_package

package info (click to toggle)
dh-r 20190121
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 200 kB
  • sloc: perl: 1,739; sh: 283; makefile: 21
file content (131 lines) | stat: -rwxr-xr-x 3,883 bytes parent folder | download
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`"