I think the method using git clone is fine. 

But I suggest we'd better keep the makefile readable. I mean we should not add 
too trivial shell logic inside makefile itself. For example, write a shell or 
Python script for users. Users should run the script before building HAWQ if 
they need to install this libraries.

I also wonder what's the typical solution for similar problems of other Apache 
projects. Do they use git sub module? How do they solve this in their release?

xunzhang

Send from my iPhone

> 在 2016年6月29日,18:18,Guo Gang <[email protected]> 写道:
> 
> I'm proposing this change because:
> 
> 1) We are ready to release the first apache release with "source tarball",
> but
>   submodule is not friendly to source tarball since git submodule
>  require a git parent.
> 
> 2) With more and more development, I found that submodule mechanism
>   is not that friendly for development, e.g.
> 
>   If the commit number of one submodule is modified, it is hard to detect
>   this for Makefile. We need to manually update it in an old repo. If
>   using "git clone", we could easily detect update by set a commit number
> file
>   as dependency and thus easily update the code.
> 
>  Some developers have complained the annoying output in "git status"
>  after building submodules. With "git clone" we can easily mask those
>  directories via .gitignore.
> 
>  It is hard for developers who is not familiar with submodule (Frankly
> speaking
>  I really do not think submodule is friendly) to manipulate related
> directories
>  when necessary.
> 
> While with the "git clone" solution, we save the commit of previous
> submodule in a file,
> and the related Makefile code change is rather simple, e.g. for gp-xerces.
> 
> $(ORCA_BLD_PATH)/gp-xerces_prepare_timestamp:
> $(ORCA_SRC_PATH)/gp-xerces.commit
>   rm -f $(ORCA_BLD_PATH)/gp-xerces_prepare_timestamp
> 
> gp-xerces_prepare: $(ORCA_BLD_PATH)/gp-xerces_prepare_timestamp
>   if [ ! -f $(ORCA_BLD_PATH)/gp-xerces_prepare_timestamp ]; then \
>       [ "x$(gp_xerces_commit)" != "x" ] || exit 1; \
>       cd $(abs_top_srcdir)/$(subdir); mkdir -p gp-xerces; cd gp-xerces; \
>       [ ! -d .git ] && git clone
> https://github.com/greenplum-db/gp-xerces.git .; \
>       git reset --hard $(gp_xerces_commit) || exit 2; \
>       touch $(ORCA_BLD_PATH)/gp_xerces_prepare_timestamp; \
>   fi
> 
> With above code change, if I update gp-xerces commit number in the commit
> file
> gp-xerces.commit make will trigger an auto-build, If I messed up the
> gp-xerces directory
> I can easily remove the whole gp-xerces, or just remove the timestamp file
> gp-xerces_prepare_timestamp to trigger an auto build.
> 
> Any suggestion? Thanks.

Reply via email to