Reputation: 135
While using bitbake after configuring , bitbake failed before trying to clone/access a private repository using an SSH link .
$ bitbake linux-imx
git -c core.fsyncobjectfiles=0 ls-remote ssh://[email protected]:~/some-project/some-repo.git
| DEBUG: Python function base_do_fetch finished
| DEBUG: Python function do_fetch finished
| ERROR: Function failed: Fetcher failure: Fetch command failed with exit code 128, output:
| ssh: Could not resolve hostname gitlab.com:~: Name or service not known
| fatal: Could not read from remote repository.
|
| Please make sure you have the correct access rights
| and the repository exists.
|
ERROR: Task 4 (/home/user/Projects/some_project/some-project-release-bsp/sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-kernel/linux/linux-imx_4.1.15.bb, do_fetch) failed with exit code '1'
When i try to remove the ~/
from the URL i get a similar error .
| DEBUG: Python function base_do_fetch finished
| DEBUG: Python function do_fetch finished
| ERROR: Function failed: Fetcher failure: Fetch command failed with exit code 128, output:
| ssh: Could not resolve hostname gitlab.com:some-project: Name or service not known
| fatal: Could not read from remote repository.
I even tried modifying the URL to https: , on which it gave me another error
git -c core.fsyncobjectfiles=0 ls-remote http://gitlab.com/some-project/some-repo.git
| DEBUG: Python function base_do_fetch finished
| DEBUG: Python function do_fetch finished
| ERROR: Function failed: Fetcher failure: Fetch command failed with exit code 128, output:
| fatal: could not read Username for 'https://gitlab.com': No such device or address
|
ERROR: Task 4 (/home/user/Projects/some-project/some-project-release-bsp/sources/meta-fsl-bsp-release/imx/meta-bsp/recipes-kernel/linux/linux-imx_4.1.15.bb, do_fetch) failed with exit code '1'
When i tried the same in the terminal instead of bitbake , It succeeded with the desired output
git -c core.fsyncobjectfiles=0 ls-remote [email protected]:some-project/some-repo.git
I am using Ubuntu 16.04 . I know that Yocto build is not tested in Ubuntu 16.04 .
WARNING: Host distribution "Ubuntu-16.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.
But a previous build with public repositories succeeded . So is there a way to make this work ?
Upvotes: 3
Views: 8128
Reputation: 1005
What you may want is a deploy token for your gitlab repo. I suspect github has something similar. https://docs.gitlab.com/ee/user/project/deploy_tokens/.
Once you have created the token, you will have a token name, such as gitlab+deploy-token-1
and the token itself, which is only displayed upon creation, such as yN_gx3zzrrgqnxzzgsZmqS
.
Once you a have these values for your token, add it to your SRC_URI as a user:pass
like so:
SRC_URI = "git://gitlab.com/my_username/my_repo.git;protocol=https;user=gitlab+deploy-token-1:yN_gx3zzrrgqnxzzgsZmqS;branch=master"
Note that anyone with access to this recipe will be able to clone your private repo. You can set an expiration date for the token, or manually revoke it at any time.
Upvotes: 2
Reputation: 3913
It is something to do with how Yocto fetch the source code from gitlab
. No matter the repository is public or private, the git link will not work.
I have search a lot but do not find a reason. So, I had to move my repository to github. It will work when it switches to github.
An alternative way is to fetch your source to local and edit the recipe to source it from there.
Upvotes: 0
Reputation: 8981
Try using:
git://[email protected]/some-project/some-repo.git;protocol=ssh;branch=${SRCBRANCH}
in your SRC_URI.
Note the removal of :~
.
Upvotes: 6