Infrastructure suggestions, part 3: dependencies

More
27 Mar 2016 18:10 #45280 by mwm
Getting the arm tool chain installed on Unix-like systems has gotten problematical. I don't think Windows has a problem, but will discuss that later.

The obvious way to install tools on a Unix-like system is with the system package manager. But on most of those the arm toolchain has moved on from 4.8 to some version of 5. Some long-term-support distributions may have older versions in their repository, but which, and how well they work, seems to be random depending on when the repository was created and their update policy for such. Newer versions generates different warnings and a larger binary, meaning builds don't fit on the 7E. I've more than once done a package upgrade only to find that the 7E builds broke and I have to go restore the old version. While the system repository might not be the official build arm compiler, it would be nice if we could at least test compile for warnings and build fit using those.

Worse yet, if you follow the launchpad.net instructions for installing on ubuntu (and presumably other distributions using apt packaging), you won't find anything but the 5.x branch in their repository. You can go back to the "old" repository and get 4.9, but that one is to new for the build to fit on the 7E, even though older versions of 4.9 do. The only way to get the current tool chain is via the downloads page - which version may depend on other packages to run at all, and you'll have to figure that out and install them by hand.

Since Windows doesn't have a package manager, the only way to get the toolchain is via the downloads page. Since Windows also has more focus on backwards compatibility, the old packages tend to work better on newer versions of windows than they do on Unix-like systems.

Building the emulator isn't much better. We don't recommend a gcc version for mingw if you're cross-compiling, so there's a tendency to use the repository version. And no 7E build to break if you get to new a version. If you're building the emulator for you desktop, you may wind up using the native compiler assuming it's gcc. We're having problems where we get warnings in the emulator build for some people and not others, even if the arm build is clean. Personally, I quit worrying about the "no warnings" for emulator builds.

So the suggestion is that - after the next release - we update the toolchain to the most recent release available from launchpad.net. While we're making this major a change, it might be a good time to update the libraries that are part of the build. I know libopencm3 is there. It looks like there's a GUI library, but I'm not sure about that. Possibly others?

Do not ask me questions via PM. Ask in the forums, where I'll answer if I can.

My remotely piloted vehicle ("drone") is a yacht.

Please Log in or Create an account to join the conversation.

More
10 Apr 2016 02:29 #46243 by Richard96816
Replied by Richard96816 on topic Infrastructure suggestions, part 3: dependencies
Wow. So the older versions of the gcc arm compiler produced substantially smaller code?

Sounds like there's something wrong there.

Please Log in or Create an account to join the conversation.

More
10 Apr 2016 19:33 #46285 by mwm
I don't know that I'd say "substantially smaller". We're talking about 10s of bytes bigger in over 100K of code. We're just tight enough on code in the 7E that that's an issue.

Do not ask me questions via PM. Ask in the forums, where I'll answer if I can.

My remotely piloted vehicle ("drone") is a yacht.

Please Log in or Create an account to join the conversation.

Time to create page: 0.032 seconds
Powered by Kunena Forum