After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 792839 - cerbero build failure due to malformed recipes_remotes in cerbero.cbc
cerbero build failure due to malformed recipes_remotes in cerbero.cbc
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: cerbero
git master
Other Mac OS
: Normal normal
: 1.13.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2018-01-23 18:05 UTC by Braden Scothern
Modified: 2018-01-25 17:12 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Cerbero Build Output (2.86 KB, text/plain)
2018-01-23 18:05 UTC, Braden Scothern
Details

Description Braden Scothern 2018-01-23 18:05:47 UTC
Created attachment 367329 [details]
Cerbero Build Output

Using a fresh clone of cerbero master and running this command:

./cerbero-uninstalled -c config/cross-ios-universal.cbc package gstreamer-1.0

I am having build failures on the fetch of gat-plugins-base-1.0.

I have attached the full output of running the command.

I am running this on with the latest macOS High Sierra and the latest Xcdoe installed.
Comment 1 Tim-Philipp Müller 2018-01-24 13:49:15 UTC
Just to make sure:

 - This is with a completely unmodified cerbero checkout?

 - Do you have a ~/.cerbero/cerbero.cbc (it's fine if not, but if you do it might help to know what's in there or if it also happens if you move it out of the way)
Comment 2 Braden Scothern 2018-01-24 17:40:51 UTC
It was completely unmodified.

I do have a ~/.cerbero/cerbero.cbc which contains this:
recipes_remotes = {
  "gst-plugins-base-1.0" : "https://github.com/bscothern/gst-plugins-base.git",
}

When I was trying to build I was still getting git://anongit.freedesktop.org/gstreamer/gst-plugins-base as the remote address.

I have since then branched off of master and changed gst-plugins-base-1.0.recipe to have my repo as the origin and changed the line where the exception was to this:
for remote, url in self.config.recipes_remotes.iteritems():

And it has been working with that modification. I can pull just that change as a patch if you want. I imagine it will break other build components though...
Comment 3 Tim-Philipp Müller 2018-01-24 18:20:18 UTC
> I do have a ~/.cerbero/cerbero.cbc which contains this:
> recipes_remotes = {
>   "gst-plugins-base-1.0" :
> "https://github.com/bscothern/gst-plugins-base.git",
> }

Right, I think that's why this happens. From the code it looks like it's expecting something like:

recipes_remotes = {
   "gst-plugins-base-1.0" : { 'bscothern' : 'https://github.com/bscothern/gst-plugins-base.git' }
}
Comment 4 Braden Scothern 2018-01-24 18:51:30 UTC
That seems to have fixed the issue! So I it seems to have just been me not being familiar with the build system yet. I imagine that this bug can be closed.
Comment 5 Tim-Philipp Müller 2018-01-24 19:11:54 UTC
Out of curiosity, where did you find the information that you could specify other remotes in cerbero.cbc? Maybe we need to fix some documentation somewhere?

Thanks for confirming this fixed it.

I'd like to keep it open for now. I'll either try to add a better error message or at least document the proper format somewhere.
Comment 6 Braden Scothern 2018-01-24 20:09:53 UTC
I was actually directed to creating my cerbero.cbc by at the GStreamer Conference in October. But because of other tasks at work I haven't been able to start contributing back to GStreamer until now. And currently a lot of the stuff is still just magic and I hope it works.

At the conference I was instructed to create the file like this:
$ cat ~/.cerbero/cerbero.cbc
recipes_commits = {
  "gst-plugins-base-1.0" : "test",
  "gst-plugins-good-1.0" : "test",
  "gst-plugins-bad-1.0" : "test",
}
recipes_remotes = {
  "gst-plugins-base-1.0" : "...",
  "gst-plugins-good-1.0" : "...",
  "gst-plugins-bad-1.0" : "...",
}

Other than that I have only really used the README, cerbero-uninstalled's help, and https://gstreamer.freedesktop.org/documentation/installing/building-from-source-using-cerbero.html#page-description which don't discuss the recipes_commits or recipes_remotes in the cbc.

I imagine a document with all of the properties that can be the cerbero.cbc and an example of how to format them would be helpful. I don't know where I would start with that other than maybe show-config and see what it complains about as I modify my cerbero.cbc.
Comment 7 Tim-Philipp Müller 2018-01-24 21:55:16 UTC
Looks like someone gave you wrong advice. I think this someone might have been me. Sorry! :)
Comment 8 Tim-Philipp Müller 2018-01-24 22:35:42 UTC
commit 43968f75bb7752c29e7177187ac9b8eb17661ec7 (HEAD -> master)
Author: Tim-Philipp Müller <tim@centricular.com>
Date:   Wed Jan 24 22:31:59 2018 +0000

    Raise error if recipes_remotes value for recipe is malformed
    
    Expect a dict there. Better raise an explicit error than to fail
    with "AttributeError: 'str' object has no attribute 'iteritems'"
    if the value in ~/.cerbero/cerbero.cbc is malformed.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=792839
Comment 9 Braden Scothern 2018-01-25 17:12:22 UTC
Thanks for the help Tim. This seems like a good fix!