[pacman-dev] [PATCH] makepkg: Use a recursive git clone.

Allan McRae allan at archlinux.org
Tue Mar 12 00:04:48 EDT 2013


On 12/03/13 00:08, Jan Steffens wrote:
> On Tue, Mar 5, 2013 at 10:58 AM, Allan McRae <allan at archlinux.org> wrote:
>> On 04/03/13 23:06, Allan McRae wrote:
>>> On 04/03/13 22:58, Jan Steffens wrote:
>>>> On Mon, Mar 4, 2013 at 1:20 PM, Allan McRae <allan at archlinux.org> wrote:
>>>>> This would mean --holdver would not work when a project has submodules
>>>>> given these would be updated.  Also, that would require an internet
>>>>> connection during "extracting" the sources, but --holdver is suppose to
>>>>> allow offline VCS builds.   Is there a way we can avoid this?
>>>>>
>>>>> Anyone else got anything to add here?
>>>>>
>>>>> Allan
>>>>
>>>> The state of the submodules is fixed in the commit of the parent repo
>>>> - the submodules are locked to commits as well.
>>>>
>>>> With --recursive, building with an internet connection would work, but
>>>> without would not, as I think it will attempt to get the submodules
>>>> from their sources, not the parent repo.
>>>
>>> Is it possible to improve on that?  Can we checkout the submodules earlier?
>>>
>>>> Without --recursive, building would fail in any case, as the
>>>> submodules aren't initialized at all.
>>>>
>>>> So I think adding --recursive is the right thing to do.
>>>>
>>
>> Pulling patch - if someone cn figure out how to have submodules and have
>> all the source downloaded earlier, that would be good...
> 
> I now think this should be reverted. Initializing and updating the
> submodules every build causes it to download all the submodules every
> build. That's hardly optimal, and sometimes the submodules aren't even
> needed for building.
> 
> Rather, I think we need to have the PKGBUILD handle submodules
> manually. So, revert this patch and write PKGBUILDs like this:
> 
> source=(git://foobar.com/git/foo.git
>   git://foobar.com/git/foo-module-bar.git
>   git://foobar.com/git/foo-module-baz.git)
> md5sums=(SKIP SKIP SKIP)
> 
> build() {
>   cd foo
> 
>   git submodule init
>   git config submodule.qux/bar.url "$srcdir/foo-module-bar"
>   git config submodule.qux/baz.url "$srcdir/foo-module-baz"
>   git submodule update
> 
>   make
> }
> 
> Here, foo is our top-level repo, and foo-module-ba[rz] are the
> submodules used. The names of the submodules in the foo repo are
> "qux/bar" and "qux/baz". The PKGBUILD initializes the submodules
> (copying the config from .gitmodules to the local .git/config), then
> sets the clone URL for the submodules to the clones we already have.
> The update then clones from there.
> 
> Does somepony have an idea how to automate this? In the meantime,
> please revert the patch so submodules can be handled manually, as
> shown.
> 

I am also in favour of reverting this.  I have struck the repeated
downloading of submodules for each build and it annoyed me.

The "workaround" you provided works fine and completely separates the
download and build stages again.  Using submodules is not all that
common, so I'd say just document this in the wiki and be done.

Any other comments?

Allan



More information about the pacman-dev mailing list