• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Register
  • Login
UBports Robot Logo UBports Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Register
  • Login

HowTo: contributing to app development with crossbuilder

Scheduled Pinned Locked Moved App Development
51 Posts 8 Posters 13.3k Views 2 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M Offline
      matteo
      last edited by matteo 22 Sept 2018, 17:01

      @mardy I think I made one step further. First I just realized that the -su: dch: command not found error is only thrown when I try to crossbuild again the keyboard package when it has been already created. If I wipe the container by lxc stop ubuntu-keyboard-usdk-16-04-amd64-armhf-dev and then lxc delete ubuntu-keyboard-usdk-16-04-amd64-armhf-dev and I crossbuild it at its location, therefore the Container is not connected to the Internet. error is generated.
      Secondly, I dug into the crossbuilder script and I found that this error, for my case at least, is a fake error. In fact, if I type in the terminal lxc info ubuntu-keyboard-usdk-16-04-amd64-armhf-dev I got this output:
      0_1537634303668_f6e0517d-ad5c-4197-90dd-20ff3d6897a9-image.png

      As you can see the connection is actually available for the container (eth0: inet6).
      However, running the script it is not detected because there is a typo in the concerned code rows:

      0_1537634500834_98eed83b-11b5-4724-a0a3-9c88c63e27b3-image.png

      If I get rid of the \b in grep -e "eth0.*inet\b" then the connection is correctly detected and the setup can move forward.
      Moving forward I got new errors in fetching some repositories. I'm not sure if the crossbuilt succeeded this time; trying to make a small change locally to the keyboard package and crossbuilding it on my phone, it seems I'm not able to see any difference...maybe it's me and probably I touched something not graphically evident as I thought. I'll make other attempts before to be sure I'm not able yet to make crossbuilder to properly work.
      The very latest output, if you want to help me to understand if the repositories fetching error is problematic and how to circumvent this, is the following: https://paste.ubuntu.com/p/5w78Gz2MJx/.

      M 1 Reply Last reply 24 Sept 2018, 07:44 Reply Quote 0
      • L Offline
        Luksus
        last edited by Luksus 22 Sept 2018, 18:01

        @matteo : No I did not cut that output. I did not connect my device, because I thought its not necessary and it would proceed building anyway.
        I thought the error is, that it does not find the requested image container at https://sdk-images.ubports.com.

        Devices: BQ e4.5, Fairphone 2, Fairphone 3, Lenovo X605F, Pinephone, Moto Z2 Force, OnePlus5T

        M M 2 Replies Last reply 24 Sept 2018, 07:41 Reply Quote 0
        • M Offline
          mymike @Luksus
          last edited by 24 Sept 2018, 07:41

          @luksus maybe there aren't 32bit images to create the container

          1 Reply Last reply Reply Quote 0
          • M Offline
            mymike @matteo
            last edited by 24 Sept 2018, 07:44

            @matteo that ipv6 address is a link-local one, that means it could be used only in local network so, of course, it couldn't reach the internet and fetch the repos...

            M 1 Reply Last reply 24 Sept 2018, 16:10 Reply Quote 0
            • M Offline
              mymike @matteo
              last edited by 24 Sept 2018, 07:49

              @matteo I tried but I got some dependencies issues like I got for the indicator-display (of course the deps where different) I have ubuntu 18.04

              1 Reply Last reply Reply Quote 0
              • M Offline
                matteo @Luksus
                last edited by 24 Sept 2018, 16:04

                @luksus thank you for the insight. But I don't understand which repositories are needed and which aren't...Do you and @mymike know something about that? Unfortunately I think we are alone in this...:(

                M 1 Reply Last reply 24 Sept 2018, 16:54 Reply Quote 0
                • M Offline
                  matteo @mymike
                  last edited by 24 Sept 2018, 16:10

                  @mymike I don't follow you: which ipv6 address error are you talking about regarding the dependencies? Please, give me more insight about it.

                  M 1 Reply Last reply 24 Sept 2018, 16:58 Reply Quote 0
                  • M Offline
                    mymike @matteo
                    last edited by 24 Sept 2018, 16:54

                    @matteo idk which repos are needed. once the container is running it may have to install updates or dependencies requested by the component you're building, but if no internet connection is found it couldn't download them...

                    1 Reply Last reply Reply Quote 0
                    • M Offline
                      mymike @matteo
                      last edited by 24 Sept 2018, 16:58

                      @matteo well, you said a connection is available for your container (eth0: inet6) with the addres fe80::216:3eff:fef5:570c, but that address cannot pass through router, it can only be used inside your local network: it cannot access the internet, so it is normal that deps aren't downloaded as no internet connection is found

                      M 1 Reply Last reply 24 Sept 2018, 17:04 Reply Quote 0
                      • M Offline
                        matteo @mymike
                        last edited by matteo 24 Sept 2018, 17:04

                        @mymike oooooh ok.....thank you for the tip. So, according to your comment I actually don't have internet connection, is that right? But how is so? Are we talking about internet connection on my PC right? I do have it...weird...

                        M 1 Reply Last reply 25 Sept 2018, 09:46 Reply Quote 0
                        • M Offline
                          mymike @matteo
                          last edited by 25 Sept 2018, 09:46

                          @matteo no, its the container that doesn't have internet connection.

                          As you also said here:

                          I got always the same error: "Container is not connected to the Internet."

                          containers I think doesn't connects directly to internet using your pc connection but create a bridge (if I understood it correctly), so the container connection pass through the bridge and then to your pc connection. but the bridge seems to be broken

                          1 Reply Last reply Reply Quote 1
                          • U Offline
                            UniSuperBox
                            last edited by UniSuperBox 25 Sept 2018, 17:46

                            I think I figured out a solution to the Container is not connected to the Internet error on Ubuntu 16.04.

                            It seems that LXD switched to setting up its default bridge lxdbr0 as link-local only (no Internet connection) around the beginning of April 2016: article explaining the change here. From what I can tell, this decision was reversed before the release of 18.04 because the issue does not occur there. I'll see if I can submit a patch to Crossbuilder to fix this.

                            Edit: This is no longer needed!

                            See this post below. A fix has been merged into Crossbuilder.

                            Fix "Container is not connected to the Internet"

                            To set up the bridge on your system, run sudo dpkg-reconfigure -p medium lxd. If you like you can carefully answer each question, but mashing enter to get through the setup works too. This will add an IPv4 and IPv6 subnet to your bridge.

                            After setting up the bridge, your crossbuilder container still won't be set up correctly. Delete it by running crossbuilder delete.

                            Once you complete these steps, you should be able to run crossbuilder successfully.

                            1 Reply Last reply Reply Quote 0
                            • M Offline
                              matteo
                              last edited by matteo 26 Sept 2018, 07:43

                              I first would like to thank @mymike for his clever intuition regarding the missing bridge and then @UniSuperBox for the hotfix found: it works (without the need to crossbuilder delete)! I'm able now to download the repositories and the installation goes further and further.....until to throw an ultimate error complaining about broken packages. Here it is the new complete logfile:

                              https://paste.ubuntu.com/p/NNGs9ChB63/

                              M 1 Reply Last reply 26 Sept 2018, 11:51 Reply Quote 1
                              • M Offline
                                mardy @matteo
                                last edited by 26 Sept 2018, 11:51

                                @matteo said in HowTo: contributing to app development with crossbuilder:

                                I'm able now to download the repositories and the installation goes further and further.....until to throw an ultimate error complaining about broken packages. Here it is the new complete logfile:

                                https://paste.ubuntu.com/p/NNGs9ChB63/

                                You need to edit the debian/control file of the project, and add a <!nocheck> next to xvfb, similarly to how it's done here. That's because this package is only used for running the tests, and tests are not run when using crossbuilder. You can do the same for the python packages.

                                After you manage to build the package with crossbuilder, it would be nice if you could create a pull request with your changes, so that the next contributor won't have to go through the same pain. 🙂

                                M 1 Reply Last reply 27 Sept 2018, 14:52 Reply Quote 2
                                • M Offline
                                  matteo @mardy
                                  last edited by 27 Sept 2018, 14:52

                                  Thank you for your reply @mardy! I will try to follow your suggestions as soon as I'll have some additional spare time and report here the findings.
                                  After, consider the PR done, no problem 🙂

                                  Matteo

                                  1 Reply Last reply Reply Quote 0
                                  • P Offline
                                    padraic
                                    last edited by 28 Sept 2018, 08:57

                                    @mardy I opened an issue for that on the address-book-app but wasn't sure if it should correctly be done in debian/control or debian/control.in

                                    Debian/control includes this line:

                                    #Modifications should be made to debian/control.in instead.

                                    but it looks like that might be an artifact fro Canonical days. Is that the case?

                                    1 Reply Last reply Reply Quote 0
                                    • U Offline
                                      UniSuperBox
                                      last edited by 28 Sept 2018, 14:26

                                      A change has been merged to Crossbuilder which fixes the issue with containers connecting to the internet on 16.04. Update your crossbuilder script (with git pull) and run crossbuilder setup-lxd to set up the container bridge.

                                      M 1 Reply Last reply 30 Sept 2018, 10:39 Reply Quote 2
                                      • M Offline
                                        mymike @UniSuperBox
                                        last edited by 30 Sept 2018, 10:39

                                        @unisuperbox Thank you very much, but following your steps I always get errors with crossbuildr setup-lxd

                                        Creating file /home/mike/zfs/lxd.img to contain all of LXD's images and containers.
                                        Error: Storage has already been configured
                                        

                                        I tried with sudo zpool destroy lxd to have a clean zfs setup, ans even with sudo rm ~/zfs/lxd.img but it doesn't work either...

                                        I saw there's a crossbuilder new command that creates a new container without complaining of the zfs error. it gives a few other errors but it seems it can create the container succesfully. Anyway, I can't build due to missing deps (I suspect because I cannot setup-lxd, but idk...)

                                        1 Reply Last reply Reply Quote 0
                                        • J Offline
                                          jonius
                                          last edited by jonius 10 Jun 2018, 08:00 6 Oct 2018, 08:00

                                          @mymike About the dependency problems see https://github.com/ubports/crossbuilder/issues/4. There are some hints that might help you with some of the dependencies and you might ask there for help with solving the rest of them.

                                          1 Reply Last reply Reply Quote 0
                                          • M Offline
                                            matteo
                                            last edited by matteo 10 Jun 2018, 08:07 6 Oct 2018, 08:06

                                            Small update.
                                            After the PRs by @UniSuperBox and @jonius I was finally able to compile the keyboard package onto my phone. In order to accomplish the task I had to slightly modify the command I used before, i.e. crossbuilder with crossbuilder --password=myPro5password because a bunch of commands sent to the phone requires sudo. In this way I was able to get to the end of the crossbuilding process, I believe without errors. At first I changed just a small thing in the code to see the effect on the phone, but then I tried without changing a thing and after a reboot in both cases I got the keyboard not showing up anymore; so I couldn't access the phone because I couldn't insert the unblocking passcode. A fresh UT install did the trick. Any idea why the crossbuilding process seems not working as expected? I don't have the output log this time but, if needed, I can try again to compile and collect a new one.

                                            1 Reply Last reply Reply Quote 0
                                            41 out of 51
                                            • First post
                                              41/51
                                              Last post