aboutsummaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/fetch2/git.py
AgeCommit message (Collapse)Author
2012-09-25bitbake: fetch2/git: Don't use deprecated API1.3_M5.rc2Richard Purdie
(Bitbake rev: 8e650b3307b60cfe8e7439ea6891c3a85f785af9) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-09-24bitbake: fetch2/git: Add missing mkdirRichard Purdie
bitbake-selftest is failing due to directories not being created. This adds in an appropriate mkdir so the tests can complete. Presumably in general OE use, something else is ensuring the parent directory is created. (Bitbake rev: 1270a07713e2a6c6e6fadcc61b785aebc99ae17b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-08-18bitbake: fetch2/git: Work around git confusion between foo.git and foo ↵Richard Purdie
repositories If you have foo and foo.git in GITDIR, the two can end up being confused by git with some horrible union of the two being cloned. This adds a workaround to avoid this happening until git 1.7.9.2 onwards is common enough for this to be removed. We use a symlink to hide the directories we don't want git to know about. (Bitbake rev: bbf1f6fe594c721a296ca09ee7c583d4a205c591) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-07-04bitbake: git: do not execute 'git remote prune'Enrico Scholz
'git remote prune' at this location does not make much sense because the following 'git remote rm' will prune stale and non-stale branches. The 'prune' can cause trouble because it will access the network bypassing the no-network code in bitbake. When this operation fails and throws an exception, the next command (--> 'git remote rm') will be skipped. This in turn, will make all the following operations fail, because they assume that the remote does not exist yet. (Bitbake rev: 2ba23df5fad4b94d38a6aed97f7822226d72eb89) Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-06-25bitbake: fetch2: Ensure star character doesn't end up in mirror tarball namesRichard Purdie
If '*' does end up in mirror urls accidently, some strange things can break since supports_checksum() looks for this, ud.localpath can then get ignored and this can lead to empty directories being downloaded "successfully". '*' is a special case for file urls only at this point so remove any entries that accidentlly make it in through url mapping. (Bitbake rev: 1369bec2404d942acc3618a8d005ec6868dcfd41) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-06-25bitbake: git.py: Remove -l option, its not necessaryRichard Purdie
If -l is specified and the source and destination are not on a common filesystem an error occurs. The -l option is however the default for git for local paths which the fetcher already now ensures in the file:// case. We can therefore safely drop the -l option. (Bitbake rev: 3aeb268b2aaab4bb8b1cfff1450e0b76aa8ce855) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-06-21bitbake: fetch2/git.py: Optimize clone fall back when it is localJason Wessel
A file:// url should use "clone -l" to greatly speed up the clone in the case of a kernel when it is local. (Bitbake rev: 2bab2cc3ffe67ee2a308074a6e4c2c7be5636d2f) Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-05-20bitbake/fetch: Spell out which fetcher backends support and recommend checksumsRichard Purdie
There were some hardcoded behaviours in the system for which backends support checksums verses which backends recommend them verses which don't recommend them. This moves the functionality into specific fetchers and then makes the general code generic. This cleans up the codebase and fixes some corner cases such as trying to checksum directories returned by the git fetcher. (Bitbake rev: ef6d268f7b8527541a7fb044cf95a973be4097f4) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-05-13bitbake/fetch2/git: Set a default for the GITDIR variableRichard Purdie
(Bitbake rev: 1a0cdc65812f1f12bf4bbea6540a3aaf0f81b4f7) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-05-13bitbake/fetch2/git: Don't set the branch name to None, that makes no senseRichard Purdie
With floating revisions and no specified branch, the fetcher could fail with some obtuse errors. This was due to the branch name being set to None which makes no sense. This patch reworks some conditions to avoid this. (Bitbake rev: 740c58d43cfb1445dd126e4827bb70ce988ca107) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-05-04fetch2/git: Allow file:// URLs without checking for network accessJeff Polk
Don't check for network access before grabbing the the current head, cloning, or updating a clone when the protocol is 'file'. (Bitbake rev: d5847bc5254b9d2f28a6b574f6157d1286add27c) Signed-off-by: Jeff Polk <jeff.polk@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-23bitbake/fetch2: Ensure mirror tarballs have .done stamps so we don't ↵Richard Purdie
redownload and corrupt them [YOCTO #2154] (Bitbake rev: 521d6b14151d3bf934b9597557f7ae46e50a3d7a) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-02-24fetch2/git: create bareclone optionBruce Ashfield
For similar reasons as the nocheckout option, packages that need enhanced control over the checkout and branch creation on a repository may want a complete mirror/bareclone created of the repository when performing the unpack. This is useful/required when a local respository is being used, but local tracking branches have not been created for all branches that a given recipe needs to manipulate. The standard git clone operations will create remote branches for the branches that are local to the source repository, but branches that are remote do not translate to the destination repository. Doing a mirror/bare clone of the source, makes all branches available to the repository. This is a particular use case, but the ability to do a bare clone creates great flexibility in recipe space, with no impact to recipes that don't need this functionality. To implement this, a new option 'bareclone' is craeted which creates a mirror copy of the repository and leaves it bare in the unpacking phase. A recipe that uses this option must both checkout and debare the repository itself. (Bitbake rev: 82482aae6f311c994275fb0b6b32d954bbfc78c3) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-02-01fetch2/git: Add workaround for clone using alternates problemRichard Purdie
To quote my report of this to the git mailing list: """ I have a problem with git clone commands using alternates failing by mixing up different repositories. I have a situation where I could end up with both: /srv/mirrors/repo /srv/mirrors/repo.git as bare clones. I then try cloning "repo" with alternates with the command: $ git clone -s -n /srv/mirrors/repo /tmp/foo Cloning into /tmp/foo... done. $ cat /tmp/foo/.git/objects/info/alternates /srv/mirrors/repo.git/objects Note how I'm now referencing repo.git, not repo. This doesn't work as expected giving some very bizarre results when actually using the repository. I appreciate this is a rather bizarre corner case but its one that is breaking the build system I work with. Ideally people would use a consistent URL for the same repository but we have an example where they haven't and this really shouldn't break like this. Looking at the code, the cause seems to be clone.c:get_repo_path(): static char *suffix[] = { "/.git", ".git", "" }; since its looking in order for: repo/.git (fails) repo.git (suceeds, incorrect) repo (never looked at) I'm not sure what would break if that order were to change, swapping the last two options. I can "force" the issue by running: git clone -s -n /srv/mirrors/repo/ /tmp/foo but this results in the slightly odd looking: $ cat /tmp/foo/.git/objects/info/alternates /srv/mirrors/repo//objects which does at least work. """ This patch adds the trailing slash to ensure the correct repository is referenced at the expense of some ugliness in the alternates file. (Bitbake rev: d978e7b35550e3785c7c567ffe4c40a3c3947450) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-01-04fetch2/git: change colon to dot in ud.hostJuraj Hercek
Local cloning of git repositories from DL_DIR into WORKDIR fails when using ssh URL with port specification e.g. "ssh://user@host:port/path/to/repo.git". Git fetcher clones such remote repository into "${DL_DIR}/git2/host:port.path.to.repo.git". However, when clonging from ${DL_DIR}/git2/host:port.path.to.repo.git into ${WORKDIR}, git fetcher fails with "ssh: Could not resolve hostname ${DLDIR}/git2/host: Name or service not known". A solution is to replace ":" by "." in host component, similarly as it is done when replacing "/" with "." in path component, so that local clone directory in DL_DIR looks like this: "host.port.path.to.repo.git". (Bitbake rev: 1f2867b79f1cd2bfbdc849ba5677a39db6fa3396) Signed-off-by: Juraj Hercek <juraj.hercek@jhksoftware.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-27bitbake: Update users of getVar/setVar to use the data store functions directlyRichard Purdie
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-10-04fetch2/git: Make git fetch run with -f so rebased branches don't failMatthew McClintock
git fetches can fail (or at least return failed) when trying to fetch and prune rebased branches. This patch simply adds a -f to the git fetch command so these failure are ignore Generally, if some SHA was rebased away it's not coming back so there is no point in not doing this force (Bitbake rev: a7b75e4db52445b30ec0fc0053dcf454f5f7d2db) Signed-off-by: Matthew McClintock <msm@freescale.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-20fetch2/git: fix subpath destination directoryPaul Eggleton
Make the git fetcher's subpath (path within the git repo to fetch) option set the destsuffix (destination directory) option by default. This reverts the behaviour of subpath to the same as when it was introduced. Based on a patch by Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> (Bitbake rev: 3e7f8afeacf7c8c8de3e87778a3907e33d4a06b3) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-20fetch2/git: be more carefull in _contains_ref when checking git log outputMartin Jansa
* in some cases there could be output like this ERROR: ld.so: object 'libpseudo.so' from LD_PRELOAD cannot be preloaded: ignored. before wc -l output and returned 'output.split()[0] != 0' is always True (Bitbake rev: 3a54dcc09a12406ec6cf22b4b1a2cc4fc203822c) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-20fetch2/git: fix logger.debugMartin Jansa
* logging/logger typo was fixed in 38a598731b49c8a0ba0ede570adc33eb1e848235 but debug level is still missing (Bitbake rev: 9de432fe2348cdbc93037bb49abb508d1fd38336) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-17git.py: Fix logging vs logger typoRichard Purdie
(Bitbake rev: 1043bbcd095314e717b372ed69ea6ee5b8a06573) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-02fetch2/git: Allow to specify the name of the checkout directoryHolger Hans Peter Freyther
(Bitbake rev: 639db8c766cada7180f9447f51303f9b30d7e817) Signed-off-by: Holger Hans Peter Freyther <holger@moiji-mobile.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-31bitbake/fetch2/git: Ensure .gitconfig file is ignoredRichard Purdie
If a user has a ~/.gitconfig file, git fetch --all will reference it. To avoid this we should run git fetch with an explicit url telling it to fetch all references (which includes tags). I'm assured this means git won't reference the file, see the discussion on the git mailing list (subject Overriding ~/.gitconfig using GIT_CONFIG). [YOCTO #1134] (Bitbake rev: 8540c09d4e509e3277940464c71174d8a0aca6ab) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-24bb/fetch2/git: add checkstatus commandJoshua Lock
Use git ls-remote to implement checkstatus command for the git fetcher. (Bitbake rev: 0ed281feb6d244d3700da484f4e83394ae394f93) Signed-off-by: Joshua Lock <josh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-23fetch2/git: Add rsync as a valid git protocolRichard Purdie
(Bitbake rev: 4cc4e318fd6907a4742f327177f321d140385c9e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-07-08fetch2/git: Tweak git fetcher to handling repo updates correctlyRichard Purdie
Currently the git fetcher can malfunction when branches change in remote repositories since whilst the update code updates the "origin" remote, this isn't linked to the local heads. By passing the --mirror option to 'git clone' and 'git remote add', linkage between the local heads and remote heads is created with a 1:1 mapping, hence all the appropriate heads are then updated correctly. This fixes some issues which have been seen with the Yocto autobuilder mirrors. (Bitbake rev: 3725602ec53df116dc108b3197a426b86ca43d5f) Signed-off-by: Richard Purdie <richard.purdie@linux-foundation.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-06-22fetch2/git.py: improve error reporting when an invalid protocol is usedScott Garman
When an invalid 'protocol' parameter is used in a git SRC_URI, the error reported was not helpful: ERROR: Function 'Fetcher failure for URL: 'None'. <environment dump> fatal: Could not make temporary directory: No such file or directory So instead check that ud.proto is set to something valid, and if not raise a meaningful ParameterError which explains that the protocol type is the source of the problem. This fixes bug [YOCTO #1142] (Bitbake rev: a2a29b72275ab03a263f4479a590b92111a0d6a8) Signed-off-by: Scott Garman <scott.a.garman@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-27fetch2/git: ensure network check log matches actual commandDarren Hart
The git command string logged via check_network_access() does not match the actual command executed in a few places. Ensure that it does. (Bitbake rev: 10f3ca52dc274cd8b240987cfd7cd003aeda7ab1) Signed-off-by: Darren Hart <dvhart@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-27fetch2/git: use logging.debug() and clarify messagesDarren Hart
Replace a call to print() with logging.debug() and flesh out the message to clarify the state being reported. (Bitbake rev: 9a28f7744e2f4224e7c097b8c4c1d49731b9a47e) Signed-off-by: Darren Hart <dvhart@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-27fetch2/git: enhance the unpack by using "git checkout"Yu Ke
current git fetcher unpack method only checkout index and working tree, but did not did not update the git branch in ref/heads, so user may not get right info in ${S} by using git. this patch enhance the unpack by using git checkout to fix this issue. Fix bug [YOCTO #1089] (Bitbake rev: c0eb89054aef4957966f98b44e7f3cce14fb337a) Signed-off-by: Yu Ke <ke.yu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-27fetch2/git: add document for git fetcher supported optionsYu Ke
(Bitbake rev: d424ecd751f80a7aecec26e1a0cbd2a1b38e076b) Signed-off-by: Yu Ke <ke.yu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-27fetch2/git: unify the nocheckout option formatYu Ke
make the nocheckout option format to be: default is "0", use nocheckou=1 to set this option with this patch, the format will be consistant with other bitbake options like rebaseable (Bitbake rev: bd51659f5ee521cb8e6631d5f26792ab573e6b30) Signed-off-by: Yu Ke <ke.yu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-27fetch2/git: change default protocol from rsync to gitYu Ke
(Bitbake rev: e912122706b402f99848d50f721f179491644d0e) Signed-off-by: Yu Ke <ke.yu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-17git fetcher: add support for rebaseable git repoYu Ke
Some upstream git repo may rebase in the future, which means current revision may disappear from the upstream repo after the rebase. current git fetcher can not handle this case, because the git mirror tar ball is per repo, and may also change in the rebase and lost the current revision info. To fix this issue, this patch - add rebaseable tag in the SRC_URI - for rebaseable repo, make git mirror tar ball per revision, in this case, even upstream rebase, the git mirror still has the current revision info. - for rebaseable repo, generate mirror tar ball by default, since the repo may change in the future. (Bitbake rev: 92701d4c5372db48847c70da4ebd0736d79fd54b) Signed-off-by: Yu Ke <ke.yu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-05-03git fetcher: make tag back to work, fix Yocto bug 972Yu Ke
In current git fetcher, tag does not work due to commit http://git.pokylinux.org/cgit/cgit.cgi/poky/commit/?id=5920e85c561624e657c126df58f5c378a8950bbc. Tag is not in sha256 form, so it will be treated invalid, and silently replaced by latest revision. To fix it, this patch treat tag name as branches name, thus it will be handled correctly later. Thanks Richard for reviewing and proposing the better approach. Fix [YOCTO #972] CC: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Yu Ke <ke.yu@intel.com>
2011-04-20bitbake/fetch2: Fix the problems introduced by the git fetcher AUTOREV fixRichard Purdie
The ordering constrains on the urldata_init functions are not straight forward. To avoid further problems, create a helper function to setup the source revisions which the init functions can all at the appropriate point. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-04-19bitbake/fetch2/git: Fix a bug where AUTOREV and the git fetcher interact badlyRichard Purdie
Fix a bug where ud.branches were being referenced before it was set by the git fetcher when using AUTOREV. To do this some ordering needed to be changed. This fixes errors like: ERROR: Error parsing /recipes-kernel/linux/rt-tests_git.bb: Failure expanding variable SRCPV, expression was ${@bb.fetch2.get_srcrev(d)} which triggered exception AttributeError: 'FetchData' object has no attribute 'branches' Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-03-03fetch, fetch2: Get rid of DeprecationWarning noticeKhem Raj
* This patch fixes a cosmetic issue currently we get with master WARNING: /home/kraj/work/bitbake/lib/bb/fetch2/__init__.py:733: DeprecationWarning: Call to deprecated function bb.mkdirhier: Please use bb.utils.mkdirhier instead. bb.mkdirhier("%s/%s" % (rootdir, destdir)) (Bitbake rev: 36fe59ce314c295d239b76de34c8714def2c32d5) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-11bitbake/fetch2: Add explict network access exception and handling to give ↵Richard Purdie
users usable error messages Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-10fetch2: Correct the clean() mechanism for the fetcher2 codeSaul Wold
This create a clean() method in each of the fetcher modules and correctly cleans the .done stamp file and lock files Signed-off-by: Saul Wold <sgw@linux.intel.com>
2011-02-10bitbake/fetch2/git: Write mirror tarballs if enabled and they don't exist, ↵Richard Purdie
also set a default value for mirror tarball generation Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-08bitbake/fetch2/git: Fix broken variable referenceRichard Purdie
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-08bitbake/fetch2/git: Ensure unresolved branches are translated into revisionsRichard Purdie
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-07bitbake/fetch2: Update forcefetch and mirror handling to clean up, simplfy ↵Richard Purdie
and bug fix the code Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-07bitbake/fetch2/git: use clonedir as ud.localfile too since the mirror ↵Richard Purdie
tarball may not exist Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-07bitbake/fetch2/git.py: Ensure that forcefetch operates in the correct ↵Richard Purdie
directory for calling _contains_ref() Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-07bitbake/fetch2/git: Fix localpath to point at the clone repo since we no ↵Richard Purdie
longer always generate a mirror tarball and it isn't a good guide to fetcher success Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-07bitbake/fetch2: Use True instead of integer valuesRichard Purdie
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-07bitbake/fetch2: Rename Fetch class to FetchMethodRichard Purdie
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-02-07bitbake/fetch2: Rewrite and improve exception handling, reusing core ↵Richard Purdie
functions for common operations where possible Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>