I added download from Mercurial Repos in mgar.<br />Please review and merge if you found this usefull<br /><br />Carsten<br /><br />-------- Original Message --------<br />From: <span class="sender">cgrzemba@users.sourceforge.net<br />Date: Aug 29, 2016 3:54:36 PM<br />Subject: SF.net SVN: gar:[25913] csw/mgar/gar<br />To: devel@lists.opencsw.org<br /><br /><div class="mimetype-text-plain">Revision: 25913<br />          <a href="http://sourceforge.net/p/gar/code/25913" target="l">http://sourceforge.net/p/gar/code/25913</a><br />Author:   cgrzemba<br />Date:     2016-08-29 13:53:58 +0000 (Mon, 29 Aug 2016)<br />Log Message:<br />-----------<br />add download from Mercurial repository<br />- use variable HG_REPOS for the mercurial download URL<br />- use HG_TREEISH_repo-name for repo tag to extract (default 'tip')<br /><br />Modified Paths:<br />--------------<br />    csw/mgar/gar/v2-hg/gar.lib.mk<br />    csw/mgar/gar/v2-hg/gar.mk<br /><br />Added Paths:<br />-----------<br />    csw/mgar/gar/v2-hg/<br /><br />Modified: csw/mgar/gar/v2-hg/gar.lib.mk<br />===================================================================<br />--- csw/mgar/gar/v2/gar.lib.mk  2016-08-29 13:38:26 UTC (rev 25911)<br />+++ csw/mgar/gar/v2-hg/gar.lib.mk        2016-08-29 13:53:58 UTC (rev 25913)<br />@@ -10,6 +10,8 @@<br /> # software causes damage.<br /> #<br /> <br />+# md5sum ?= md5sum<br />+md5sum ?= $(if $(filter no%,$(shell which md5sum)),gmd5sum,md5sum)<br /> # cookies go here, so we have to be able to find them for<br /> # dependency checking.<br /> VPATH += $(COOKIEDIR)<br />@@ -24,6 +26,7 @@<br /> # override GIT_PROXY_SCRIPT to something else if you need to.<br /> GIT_MAYBEPROXY = $(if $(GIT_USE_PROXY),GIT_PROXY_COMMAND=$(GIT_PROXY_SCRIPT))<br /> GIT_TREEISH = $(if $(GIT_TREEISH_$(1)),$(GIT_TREEISH_$(1)),HEAD)<br />+HG_TREEISH = $(if $(HG_TREEISH_$(1)),$(HG_TREEISH_$(1)),tip)<br /> <br /> #################### FETCH RULES ####################<br /> <br />@@ -43,6 +46,14 @@<br /> URLS += $(foreach R,$(GIT_REPOS),gitrepo://$(call GITPROJ,$(R)) $(foreach gitproto,git http file ssh,$(call gitsubst,$(gitproto),$(R))))<br /> endif<br /> <br />+define hgsubst<br />+$(subst hg-hg,hg,$(if $(findstring $(1)://,$(2)),$(patsubst $(1)%,hg-$(1)%,$(call URLSTRIP,$(2)) )))<br />+endef<br />+<br />+ifdef HG_REPOS<br />+URLS += $(foreach R,$(HG_REPOS),$(foreach hgproto,hg http file ssh,$(call hgsubst,$(hgproto),$(R))))<br />+endif<br />+<br /> # Download the file if and only if it doesn't have a preexisting<br /> # checksum file.  Loop through available URLs and stop when you<br /> # get one that doesn't return an error code.<br />@@ -55,18 +66,18 @@<br />      $(if $(_FLIST),,$(error INTERNAL ERROR: The file $* is requested but not in the list of generated URLs))<br />    @if test -f $(COOKIEDIR)/checksum-$*; then : ; else \<br />               echo " ==> Grabbing $@"; \<br />-            ( for i in $(filter %/$*,$(URLS)) $(foreach URL,$(URLS),$(if $(findstring $(GITHUB_HOST),$(URL)),$(URL),)); do  \<br />+          ( for i in $(filter %/$(*:%.hg=%),$(URLS)) $(foreach URL,$(URLS),$(if $(findstring $(GITHUB_HOST),$(URL)),$(URL),)); do  \<br />                  echo "     ==> Trying $$i"; \<br />                  $(MAKE) -s `echo $$i | tr -d :` || continue; \<br />                      case $$i in \<br />                               *$(GITHUB_HOST)*) \<br />                                         mv $(PARTIALDIR)/$(GITHUB_REFERENCE) $@ ;; \<br />                                *) \<br />-                                       mv $(PARTIALDIR)/$* $@ ;; \<br />+                                        mv $(PARTIALDIR)/$(*:%.hg=%) $(@:%.hg=%) ;; \<br />                       esac; \<br />                     break; \<br />            done; ) 2>&1 | grep -v '^$(MAKE)'; \<br />-                if test -r $@ ; then : ; else \<br />+            if test -r $(@:%.hg=%) ; then : ; else \<br />                    echo '(!!!) Failed to download $@!' 1>&2; \<br />                  false; \<br />            fi; \<br />@@ -104,6 +115,14 @@<br />       @( cd $(PARTIALDIR)/$(call GITPROJ,$*); \<br />           git config remote.origin.fetch $(if $(GIT_REFS_$(call GITPROJ,$*)),$(GIT_REFS_$(call GITPROJ,$*)),$(GIT_DEFAULT_TRACK)); )<br /> <br />+hg-http//%:<br />+    hg clone <a href="http://$*" target="l">http://$*</a> $(PARTIALDIR)/$(call GITPROJ,$*)<br />+hg-hg//%:<br />+       hg clone hg://$* $(PARTIALDIR)/$(call GITPROJ,$*)<br />+hg-ssh//%:<br />+   hg clone ssh://$* $(PARTIALDIR)/$(call GITPROJ,$*)<br />+hg-file//%:<br />+ hg clone file://$* $(PARTIALDIR)/$(call GITPROJ,$*)<br /> <br /> # create ADMSCRIPTS 'on the fly' from variables defined by the caller<br /> # This version is private and should only be called from the non-private<br />@@ -182,7 +201,7 @@<br /> checksum-%: $(CHECKSUM_FILE) <br />    @echo " ==> Running checksum on $*"<br />    @if ggrep -- '[ /]$*$$' $(CHECKSUM_FILE); then \<br />-           if cat $(CHECKSUM_FILE) | sed -e 's!download/!!' | (cd $(DOWNLOADDIR); LC_ALL="C" LANG="C" gmd5sum -c 2>&1) | \<br />+         if cat $(CHECKSUM_FILE) | sed -e 's!download/!!' | (cd $(DOWNLOADDIR); LC_ALL="C" LANG="C" $(md5sum) -c 2>&1) | \<br />                        ggrep -- '$*' | ggrep -v ':[ ]\+OK'; then \<br />                         echo '(!!!) $* failed checksum test!' 1>&2; \<br />                        false; \<br />@@ -632,6 +651,10 @@<br />    @echo " ===> Extracting Git Repo $(DOWNLOADDIR)/$* (Treeish: $(call GIT_TREEISH,$*))"<br />  ( cd $(abspath $(DOWNLOADDIR))/$*/; git --bare archive --prefix=$(NAME)-$(VERSION)/ $(call GIT_TREEISH,$*)) | gtar -xf - -C $(EXTRACTDIR)<br />   @$(MAKECOOKIE)<br />+hg-extract-%:<br />+   @echo " ===> Extracting Mercurial Repo $(DOWNLOADDIR)/$* (Tag: $(call HG_TREEISH,$*))"<br />+        ( cd $(abspath $(DOWNLOADDIR))/$*/; hg archive --prefix=$(NAME)-$(VERSION)/ --rev=$(call HG_TREEISH,$*) --type tar -)| gtar -xf - -C $(EXTRACTDIR)<br />+ @$(MAKECOOKIE)<br /> <br /> # rule to extract files with unzip<br /> zip-extract-%:<br />@@ -723,6 +746,9 @@<br /> extract-archive-%.git: git-extract-%.git<br />   @$(MAKECOOKIE)<br /> <br />+extract-archive-%.hg: hg-extract-%<br />+ @$(MAKECOOKIE)<br />+<br /> extract-copy-%: cp-extract-%<br />        @$(MAKECOOKIE)<br /> <br /><br />Modified: csw/mgar/gar/v2-hg/gar.mk<br />===================================================================<br />--- csw/mgar/gar/v2/gar.mk     2016-08-29 13:38:26 UTC (rev 25911)<br />+++ csw/mgar/gar/v2-hg/gar.mk    2016-08-29 13:53:58 UTC (rev 25913)<br />@@ -11,6 +11,8 @@<br /> # Comment this out to make much verbosity<br /> #.SILENT:<br /> <br />+md5sum ?= $(if $(filter no%,$(shell which md5sum)),gmd5sum,md5sum)<br />+<br /> ifneq ($(abspath /),/)<br /> $(error Your version of 'make' is too old: $(MAKE_VERSION). Please make sure you are using at least 3.81)<br /> endif<br />@@ -45,7 +47,7 @@<br /> <br /> DYNSCRIPTS := $(foreach PKG,$(SPKG_SPECS),$(foreach SCR,$(ADMSCRIPTS),$(if $(value $(PKG)_$(SCR)), $(PKG).$(SCR))))<br /> _LOCALFILES = $(notdir $(wildcard files/*))<br />-_NOCHECKSUM += $(DYNSCRIPTS) $(_LOCALFILES) $(foreach R,$(GIT_REPOS),$(call GITPROJ,$(R))) $(_EXTRA_GAR_NOCHECKSUM)<br />+_NOCHECKSUM += $(DYNSCRIPTS) $(_LOCALFILES) $(foreach R,$(GIT_REPOS),$(call GITPROJ,$(R))) $(foreach R,$(HG_REPOS),$(call GITPROJ,$(R).hg)) $(_EXTRA_GAR_NOCHECKSUM)<br /> <br /> DISTFILES += $(_EXTRA_GAR_DISTFILES)<br /> <br />@@ -54,7 +56,8 @@<br /> ALLFILES_PATCHFILES ?= $(PATCHFILES) $(foreach M,$(MODULATIONS),$(PATCHFILES_$M))<br /> ALLFILES_DYNSCRIPTS ?= $(DYNSCRIPTS)<br /> ALLFILES_GIT_REPOS ?= $(foreach R,$(GIT_REPOS),$(call GITPROJ,$(R)))<br />-ALLFILES ?= $(sort $(ALLFILES_DISTFILES) $(ALLFILES_PATCHFILES) $(ALLFILES_DYNSCRIPTS) $(ALLFILES_GIT_REPOS) $(EXTRA_ALLFILES) $(_EXTRA_GAR_ALLFILES))<br />+ALLFILES_HG_REPOS ?= $(foreach R,$(HG_REPOS),$(call GITPROJ,$(R).hg))<br />+ALLFILES ?= $(sort $(ALLFILES_DISTFILES) $(ALLFILES_PATCHFILES) $(ALLFILES_DYNSCRIPTS) $(ALLFILES_GIT_REPOS) $(ALLFILES_HG_REPOS) $(EXTRA_ALLFILES) $(_EXTRA_GAR_ALLFILES))<br /> <br /> ifeq ($(MAKE_INSTALL_DIRS),1)<br /> INSTALL_DIRS = $(addprefix $(DESTDIR),$(prefix) $(exec_prefix) $(bindir) $(sbindir) $(libexecdir) $(datadir) $(sysconfdir) $(sharedstatedir) $(localstatedir) $(libdir) $(infodir) $(lispdir) $(includedir) $(mandir) $(foreach NUM,1 2 3 4 5 6 7 8, $(mandir)/man$(NUM)) $(sourcedir))<br />@@ -337,6 +340,8 @@<br />  @$(foreach D,$(DYNSCRIPTS),echo "  $D";)<br />  @echo "Git Repos tracked: "<br />       @$(foreach R,$(GIT_REPOS),echo "       $R";)<br />+     @echo "Mercurial Repos tracked: "<br />+        @$(foreach R,$(HG_REPOS),echo "       $R";)<br />       @echo "All potential URLS: "<br />      @$(foreach U,$(URLS),echo "       $U";)<br /> <br />@@ -382,7 +387,7 @@<br /> <br /> makesum: fetch $(addprefix $(DOWNLOADDIR)/,$(MAKESUM_TARGETS)) $(GARCHIVE_TARGETS)<br />   @if test "x$(MAKESUM_TARGETS)" != "x"; then \<br />-          (cd $(DOWNLOADDIR) && gmd5sum $(MAKESUM_TARGETS)) > $(CHECKSUM_FILE) ; \<br />+                (cd $(DOWNLOADDIR) && $(md5sum) $(MAKESUM_TARGETS)) > $(CHECKSUM_FILE) ; \<br />               echo "Checksums made for $(MAKESUM_TARGETS)" ; \<br />          cat $(CHECKSUM_FILE) ; \<br />    else \<br />@@ -395,8 +400,8 @@<br /> garchive: checksum $(GARCHIVE_TARGETS) ;<br /> <br /> # extract           - Unpacks $(DISTFILES) into $(EXTRACTDIR) (patches are "zcatted" into the patch program)<br />-EXTRACT_TARGETS-global ?= $(addprefix extract-copy-,$(filter-out $(NOEXTRACT),$(DISTFILES) $(DYNSCRIPTS) $(foreach R,$(GIT_REPOS),$(call GITPROJ,$(R)))))<br />-EXTRACT_TARGETS-default = $(addprefix extract-archive-,$(filter-out $(NOEXTRACT),$(DISTFILES) $(DYNSCRIPTS) $(foreach R,$(GIT_REPOS),$(call GITPROJ,$(R)))))<br />+EXTRACT_TARGETS-global ?= $(addprefix extract-copy-,$(filter-out $(NOEXTRACT),$(DISTFILES) $(DYNSCRIPTS) $(foreach R,$(GIT_REPOS),$(call GITPROJ,$(R))) $(foreach R,$(HG_REPOS),$(call GITPROJ,$(R).hg))))<br />+EXTRACT_TARGETS-default = $(addprefix extract-archive-,$(filter-out $(NOEXTRACT),$(DISTFILES) $(DYNSCRIPTS) $(foreach R,$(GIT_REPOS),$(call GITPROJ,$(R))) $(foreach R,$(HG_REPOS),$(call GITPROJ,$(R).hg))))<br /> EXTRACT_TARGETS = $(or $(EXTRACT_TARGETS-$(MODULATION)),$(EXTRACT_TARGETS-default))<br /> <br /> ifdef REINPLACE_FILES<br /><br />This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.<br /><br /></div><br /><br /></span>