pkgsrc-WIP-discuss archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

mk/svn-package.mk (Re: mk/git-package.mk (eliminates caching if no updates)



Now I am testing mk/svn-package.mk
 http://www.ki.nu/~makoto/pkgsrc/wip/mk/svn-package.mk

This version is:
 (1) Fix the problem that cached files were ignored unless 
     it was created on the same day.
 (2) Avoid creating cache file if no updates since last cache file
     created.
 (3) Add some sequence number to follow the behavior.

 (4) Make it resembles to mk/cvs-package.mk

There may be some redundent code there, I am checking now.
Thank you,
---
Makoto Fujiwara, 
Chiba, Japan, Narita Airport and Disneyland prefecture.

Index: svn-package.mk
===================================================================
RCS file: /cvsroot/pkgsrc-wip/wip/mk/svn-package.mk,v
retrieving revision 1.14
diff -u -r1.14 svn-package.mk
--- svn-package.mk      27 Mar 2010 13:10:37 -0000      1.14
+++ svn-package.mk      28 Sep 2011 05:21:34 -0000
@@ -1,7 +1,9 @@
 # $Id: svn-package.mk,v 1.14 2010/03/27 13:10:37 obache Exp $
 
 # This file provides simple access to Subversion repositories, so that packages
-# can be created from Subversion instead of from released tarballs.
+# can be created from Subversion instead of from released tarballs. Whenever a
+# package is fetched from Subversion, an archive is created from it and saved
+# in ${DISTDIR}/svn-packages, to save bandwidth.
 #
 # === User-settable variables ===
 #
@@ -130,7 +132,7 @@
 _SVN_CMD=              svn
 _SVN_ENV=              # empty
 _SVN_ENV+=             SVN_RSH=${_SVN_RSH:Q}
-_SVN_FLAGS=            -q
+_SVN_FLAGS=            
 _SVN_CHECKOUT_FLAGS=   --config-dir=${_SVN_CONFIG_DIR} --non-interactive
 _SVN_CONFIG_DIR=       ${WRKDIR}/.subversion
 _SVN_TODAY_CMD=                ${DATE} -u +'%Y-%m-%d'
@@ -139,7 +141,8 @@
 _SVN_PKGVERSION=       ${_SVN_PKGVERSION_CMD:sh}
 _SVN_DISTDIR=          ${DISTDIR}/svn-packages
 
-#
+_SVN_TMP_RESULT=        '/tmp/svn-package.$$'
+
 # Generation of repository-specific variables
 #
 
@@ -171,15 +174,20 @@
 
 #   command to extract cache file
 _SVN_EXTRACT_CACHED.${repo}=   \
-       if [ -f ${_SVN_DISTDIR}/${_SVN_DISTFILE.${repo}:Q} ]; then              
\
-         ${STEP_MSG} "Extracting cached Subversion archive 
"${_SVN_DISTFILE.${repo}:Q}"."; \
-         pax -r -z -f ${_SVN_DISTDIR}/${_SVN_DISTFILE.${repo}:Q};      \
-         exit 0;                                                       \
+       p="$$(cd ${_SVN_DISTDIR} && ls -t ${PKGBASE}-${SVN_MODULE.${repo}}-* | 
head -n 1)";     \
+       if [ -n "$$p" ]; then                                           \
+         ${STEP_MSG} "(1) Extracting cached SVN archive \"""$$p\".";   \
+         pax -r -z -f ${_SVN_DISTDIR:Q}/"$$p";                         \
+       else                                                            \
+         ${STEP_MSG} "(1a) No cache file found.";                      \
        fi
 
+_SVN_CHECK_UPDATE.${repo}=     \
+       "$$(grep ^[AMU] ${_SVN_TMP_RESULT} | head -n 1)"
+
 #   create cache archive
 _SVN_CREATE_CACHE.${repo}=     \
-       ${STEP_MSG} "Creating cached Subversion archive 
"${_SVN_DISTFILE.${repo}:Q}"."; \
+       ${STEP_MSG} "(5) Creating cached Subversion archive 
"${_SVN_DISTFILE.${repo}:Q}"."; \
        ${MKDIR} ${_SVN_DISTDIR:Q};                                             
        \
        pax -w -z -f ${_SVN_DISTDIR}/${_SVN_DISTFILE.${repo}:Q} 
${SVN_MODULE.${repo}:Q}
 .  else
@@ -201,14 +209,32 @@
        ${RUN} cd ${WRKDIR};                                            \
        if [ ! -d ${_SVN_DISTDIR} ]; then mkdir -p ${_SVN_DISTDIR:Q}; fi;       
\
        ${_SVN_EXTRACT_CACHED.${repo}};                                 \
-       ${STEP_MSG} "Downloading "${SVN_MODULE.${repo}:Q}" from 
"${SVN_ROOT.${repo}:Q}"."; \
+       ${STEP_MSG} "(2) Downloading "${SVN_MODULE.${repo}:Q}" from 
"${SVN_ROOT.${repo}:Q}"."; \
        ${SETENV} ${_SVN_ENV}                                           \
-               ${_SVN_CMD} checkout ${_SVN_CHECKOUT_FLAGS}             \
+               ${_SVN_CMD}                                             \
+                       checkout ${_SVN_CHECKOUT_FLAGS}                 \
                        ${_SVN_TAG_FLAG.${repo}:Q}                      \
-                       ${_SVN_FLAGS}                                   \
+                       ${_SVN_FLAGS}                                   \
                        ${SVN_ROOT.${repo}:Q}                           \
-                       ${SVN_MODULE.${repo}:Q};                        \
-       ${_SVN_CREATE_CACHE.${repo}}
+                       ${SVN_MODULE.${repo}:Q} > ${_SVN_TMP_RESULT};   \
+       if [    !  "$$p" = 0    ];then                                  \
+        if [    ! -z ${_SVN_TMP_RESULT} ];then                                 
\
+       if [    -n ${_SVN_CHECK_UPDATE.${repo}} ]; then                 \
+       ${_SVN_CREATE_CACHE.${repo}};                                   \
+       else                                                            \
+       ${STEP_MSG} "(6a) Skip creating cache file for no update.";     \
+       fi;                                                             \
+       else                                                            \
+       ${STEP_MSG} "(6b) Skip creating cache file.";   \
+       fi;                                                             \
+       else                                                            \
+       ${STEP_MSG} "(6c) Skip creating cache file for no update.";     \
+       fi;
 .endfor
 
 .endif
+
+# test is four way
+#   no any cache file yet              ->     write cache
+#   cache file exist and no update     -> no  write cache
+#   cache file exist and update there  ->     write cache

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
pkgsrc-wip-discuss mailing list
pkgsrc-wip-discuss%lists.sourceforge.net@localhost
https://lists.sourceforge.net/lists/listinfo/pkgsrc-wip-discuss


Home | Main Index | Thread Index | Old Index