Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building the IDE without bundling the toolchain #1722

Conversation

matthijskooijman
Copy link
Collaborator

As discussed on the mailinglist, here's some commits to allow building the IDE without bundling the toolchain, to allow advanced users to use their system toolchain. It's probably not finished yet, I'll comment in more detail on the mailing list.

The arduino script was copied into the output directory twice in the
linux-build target. The avrdude64 binary was copied both by the
linux-build and linux64-build targets.
This doesn't change anything except a bit of ordering in the build, but
prepares for making these steps optional.
If you pass -Dinstall_toolchains=false or -Dinstall_native_libs=false to
the ant command, the toolchains or native libraries will not be
installed into the build/work directory, making the IDE fall back on the
system versions instead.

This is intended for advanced users who run from git and want to use
their system toolchain or libraries. These toolchain-less installs are
not intended to be distributed as tarballs.
This shouldn't change anything except a bit of ordering, but prepares
for the next commit.
This folder is automatically created by the buildsystem inside the
$platform/work directory already, so no need to carry an empty folder
here.
This allows easily changing the arduino core files during development,
without having to re-run ant on every build. This feature can be
switched on by running ant -Dlink_harware=true.

This also adds a clean-hardware target, to remove the work/hardware
directory during the build. This is needed to  prevent problems when
switching the linking on and off. As an additional feature, if you
remove any files from the hardware/arduino directory, they'll actually
get removed from the resulting build now as well.

The actual deleting of the symlinks is a bit of a mess, since ant's
symlink support is a bit weird and underdocumented.
This removes some duplicate code, and prepares for the next commit.
Before, when no bundled compiler was available, the IDE would fall back
to using system-wide commands. For the uploader tools, the IDE wouold
try to execute a non-existent tool and show an error.

This commit implements this in a more generic way: Whenever executing an
external command, if the full path to the command could not be found,
strip the path and let the system shell find the command in the regular
places.

Because of this, the previous special handling of compiler.path is
removed and the variable is explicitely defined in avr/platform.txt.
sam/platform.txt already contained an explicit definition of
compiler.path.
@matthijskooijman
Copy link
Collaborator Author

As discussed on the mailing list, this turned out be an imperfect solution with no real way to fix it completely. So, instead of building without the toolchain, we've decided to allow modifying platform.txt (through platform.local.txt) to just ignore the bundled toolchain and to add symlinks to the Arduino code in the Sketchbook/hardware and Sketchbook/libraries directories.

This means this pullrequest is superseded by #1985 and #1986.

@matthijskooijman matthijskooijman deleted the ide-1.5.x-no-toolchain branch May 13, 2014 09:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: IDE The Arduino IDE
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants