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