]> git.donarmstrong.com Git - cran2deb.git/blobdiff - papers/useR2009/cran2deb.tex
Added code for a nicely working Debian package.
[cran2deb.git] / papers / useR2009 / cran2deb.tex
index 42aa686a97c2de71ff268e113d66597efd3ab78e..96afec3c77ff8add4cf3625b3b3f605642f16b0b 100644 (file)
@@ -192,8 +192,8 @@ IL, USA}
 
   Our cran2deb system is implemented as a collection of small tools:
   \begin{itemize}
-  \item cran2deb itself is a wrapper script calling out to twenty-one other
-    'worker' scripts implementing the twenty-one basic high-level commands
+  \item cran2deb itself is a wrapper script calling out to about twenty other
+    'worker' scripts implementing the principal commands
     \begin{itemize}
     \item 'worker' scripts are written in \R (for littler), Korn/Bash shell,
       and in the Plan9 shell rc
@@ -210,7 +210,7 @@ IL, USA}
 
 \begin{frame}
   \frametitle{Technology Overview} 
-  \framesubtitle{A walk through}
+  \framesubtitle{A walk through: some details}
 
   What does cran2deb do:
   \begin{itemize}
@@ -223,14 +223,41 @@ IL, USA}
       \item Rules for this shared among packages---many packages ``just work''.
       \end{itemize}
     \item add any undeclared dependencies (this applies to just 36 packages
-      and often entail only loading, say, MASS).
+      and often entails only loading, say, MASS).
     \item build each package in its own isolated, clean, fresh, up to date
       build environment via pbuilder: this looks like a fresh install of
       Debian and ensures correctness of dependencies. 
     \end{itemize}
   \item checks package quality via Debian's lintian.
+  \end{itemize}
+\end{frame}  
+
+\begin{frame}
+  \frametitle{Technology Overview} 
+  \framesubtitle{A walk through: some more details}
+
+  What does cran2deb do (cont.):
+  \begin{itemize}
   \item uses RSQLite backend for cran2deb state: everything from package
     meta-information, blacklist of bad packages, to build logs. 
+  \item checks for a free license of a package before its built:
+    \begin{itemize}
+        \item initially: handcrafted regular expressions to match
+                licenses.
+        \item some packages ignore ``Writing R extensions'' guidelines
+          concerning the License: field: how many ways to write GPL? 
+            \begin{itemize}
+                \item initialised vs. its expansion (GPL vs. GNU general public license)
+                \item license vs. licence
+                \item see \texttt{http://www.gnu.org/GPL}
+                \item (v, version) (2.0, 2) or (higher, later, newer, greater, above)
+                \item typos of the above
+                \item file LICENSE: contents reformatted in arbitrary ways
+            \end{itemize}
+        \item now: strip white space and perform other harmless transforms
+                and match SHA1 checksums to determine license;  likewise for contents of LICENSE
+                file.
+    \end{itemize}
   \end{itemize}
 \end{frame}  
 
@@ -241,7 +268,7 @@ IL, USA}
   Re-use, re-duce, re-cycle:
 
   \begin{itemize}
-  \item \R's infrastructure is used for obtaining the \R view of the world:
+  \item \R's infrastructure is used to obtain the \R view of the world:
     what packages and where, first approximation to dependencies.
   \item All this uses the Debian build infrastructure, notably the
     pbuilder chroot environment and the package management system
@@ -321,33 +348,38 @@ exception of ConvCalendar which gives no modification or distribution rights.}
 
   \MedSkip
   So just add one of these URLs:\newline
-  i386 \phantom{xx} : { \SmallSkip \scriptsize
-    \texttt{deb http://xmcorsairs.wu.ac.at/cran2deb/debian-i386 testing/}
-  } \newline
-  amd64 : { \SmallSkip \scriptsize
-    \texttt{deb http://xmcorsairs.wu.ac.at/cran2deb/debian-amd64 testing/}
-  }
+  { \scriptsize
 
+    \texttt{deb http://debian.cran.r-project.org/cran2deb/debian-i386 testing/}
+
+    \texttt{deb http://debian.cran.r-project.org/cran2deb/debian-amd64 testing/}
+  }
 \end{frame}
 
-\section{Open Issues}
+\section[Next]{Next: Open Issues}
 \begin{frame}
   \frametitle{Question to be addressed}
-  \framesubtitle{These may not be showstoppers}
+  \framesubtitle{For cran2deb to migrate out of beta testing}
 
-  Things that still need to be sorted out:
+  %Things that may need to be sorted out:
   \begin{itemize}
-  \item What can or cannot be (re-)distributed by CRAN and its mirrors?
-  \item What can or cannot be used (and/or modified) by all users?
-  \item Remaining external dependencies: 
+  \item \textbf{Licenses:}
+    \begin{itemize}
+    \item  What can or cannot be (re-)distributed by CRAN and its mirrors?
+    \item What can or cannot be used (and/or modified) by all users?
+    \end{itemize}
+  \item \textbf{Externtal dependencies} % Remaining external dependencies: 
+    \begin{itemize}
+    \item BioConductor is the single largest source: BioBase, RGraphviz, etc
+    \item Other external libraries or tools not in Debian 
+    \item Commercial external dependencies: SGE, LSF, Oracle, Vhayu
+    \end{itemize}
+  \item \textbf{Scope} 
     \begin{itemize}
-      \item BioConductor is the single largest source: BioBase, RGraphviz, etc
-      \item Other external libraries or tools not in Debian 
-      \item Commercial external dependencies: SGE, LSF, Oracle, Vhayu
+    \item Builds for other architectures?
+    \item Builds for other Debian flavours such as Ubuntu?
+    \item Builds of other repositories: BioConductor? R-Forge?
     \end{itemize}
-  \item Builds for other architectures?
-  \item Builds for other Debian flavours such as Ubuntu?
-  \item Builds of other repositories: BioConductor? R-Forge?
   \end{itemize}
 \end{frame}