You are not logged in.

#1 2015-07-12 02:33:46

pypi
Wiki Maintainer
Registered: 2014-04-22
Posts: 250

[SOLVED] Pulling only a specific git revision in a PKGBUILD

I'm trying to convert my existing chromium-wayland PKGBUILD to build directly from git HEAD.
Since I've been building directly from releases, I could just pull down the appropriate ozone-wayland and chromium tarballs, and build from there.

However, ozone-wayland HEAD builds against a specific git commit of the Chromium source - not a tarball that I can easily download.
I don't want to clone the chromium repo because it's 22GB. Even without history (--depth=0, I believe), it's 6.5GB, which is still huge, and I'd need some history (to checkout the commit I want, which I should be able to extract from .DEPS.git in the ozone-wayland repo).
An individual release tarball is a ~220MB download, which is much more manageable.

I went looking for ways to only download a specific git commit, but most of the suggestions online appear to involve either cloning the full repo, or downloading with git's --depth option.

Is there an obvious method that I've missed?
If not, how else could I avoid the large download, perhaps not using git?

Last edited by pypi (2015-07-15 07:18:17)

Offline

#2 2015-07-12 09:09:14

ooo
Member
Registered: 2013-04-10
Posts: 1,638

Re: [SOLVED] Pulling only a specific git revision in a PKGBUILD

adding the #commit fragment to the end of the source's git url should do it: https://www.archlinux.org/pacman/PKGBUI … a_id_vcs_a

something like

source=('project_name::git+http://project_url#commit=a1s2d3f4as1s4123dfsa134')

I don't understand git well enough to be sure if this avoids the huge download though.

Last edited by ooo (2015-07-12 09:09:34)

Offline

#3 2015-07-12 10:21:10

mauritiusdadd
Member
From: Benevento, Italy
Registered: 2013-10-27
Posts: 776

Re: [SOLVED] Pulling only a specific git revision in a PKGBUILD

ooo wrote:

adding the #commit fragment to the end of the source's git url should do it

No, that fragment just checkout the requested commit but git still needs to download the whole git repository.

pypi wrote:

Is there an obvious method that I've missed?
If not, how else could I avoid the large download, perhaps not using git?

From what I know, what you are asking seems not possible using git: http://stackoverflow.com/questions/3697 … repository. However the Chromium git repo allows to download snapshots for each commit using the url

https://chromium.googlesource.com/chromium/src.git/+archive/${commit-id}.tar.gz

For example if you need the commit 05d8130f8cd86220f505bcd3fbfec4648719a642 you could  use something like

commit-id=05d8130f8cd86220f505bcd3fbfec4648719a642
source=("https://chromium.googlesource.com/chromium/src.git/+archive/${commit-id}.tar.gz")

About me - github

-- When you have eliminated the impossible, whatever remains, however improbable, must be the truth -- Spock | Sherlock Holmes

Offline

#4 2015-07-12 19:40:06

pypi
Wiki Maintainer
Registered: 2014-04-22
Posts: 250

Re: [SOLVED] Pulling only a specific git revision in a PKGBUILD

ooo wrote:

adding the #commit fragment to the end of the source's git url should do it: https://www.archlinux.org/pacman/PKGBUI … a_id_vcs_a

something like

source=('project_name::git+http://project_url#commit=a1s2d3f4as1s4123dfsa134')

I don't understand git well enough to be sure if this avoids the huge download though.

Unfortunately, I believe that makepkg implements the commit functionality by cloning the whole upstream repo, and then copying a specific commit into the srcdir.
That would still download the whole 22GB repo...

I could be wrong on that, though - I'm not sure where I got that information.

Offline

#5 2015-07-12 19:41:53

pypi
Wiki Maintainer
Registered: 2014-04-22
Posts: 250

Re: [SOLVED] Pulling only a specific git revision in a PKGBUILD

mauritiusdadd wrote:
pypi wrote:

Is there an obvious method that I've missed?
If not, how else could I avoid the large download, perhaps not using git?

From what I know, what you are asking seems not possible using git: http://stackoverflow.com/questions/3697 … repository. However the Chromium git repo allows to download snapshots for each commit using the url

https://chromium.googlesource.com/chromium/src.git/+archive/${commit-id}.tar.gz

For example if you need the commit 05d8130f8cd86220f505bcd3fbfec4648719a642 you could  use something like

commit-id=05d8130f8cd86220f505bcd3fbfec4648719a642
source=("https://chromium.googlesource.com/chromium/src.git/+archive/${commit-id}.tar.gz")

Thanks!

That should work; I'll mark this as solved if it does.

EDIT: Done!

Last edited by pypi (2015-07-15 07:18:39)

Offline

Board footer

Powered by FluxBB