- Based on Paul Eggletons work to partially upgrade to Python 2.7.6
Modified:
default-versions.inc: switched to python 2.7.9
generate-manifest-2.7.py: fixed _sysconfigdata
python-2.7-manifest.inc: fixed _sysconfigdata
python.inc: Updated checksums and source, no LICENSE
change just updated some dates
python-native_2.7.3 -> python-native_2.7.9 and updated patches
python_2.7.3 -> python_2.7.9, and added ac_cv_file__dev_ptmx=no
ac_cv_file__dev_ptc=no in EXTRA_OECONF to solve python
issue #3754, only needed when cross compiling, also updated patches
use_sysroot_ncurses_instead_of_host.patch: New patch to use ncursesw
from sysroot instead of hosts, introduced by fix for python issue #15268
Paul Eggleton [Thu, 19 Feb 2015 16:40:04 +0000 (16:40 +0000)]
devtool: fix broken clones of git recipes
Because we move the workdir when extracting source, then move the source
and delete the temporary workdir, you lose the indirection symlink
pointed to by the alternates file (which is created when the fetcher
clones it from DL_DIR with -s) and the resulting repository is broken.
In any case, for a source repo that the user may put their own changes
into, we can't really rely on a clone made with -s in case the
original goes away - because of cleanall, DL_DIR disappearing, etc. So
repack the repository so that it is a complete, non-shared clone after
unpacking.
(While I'm at it, add a test for devtool modify with a git recipe which
verifies that this works.)
Paul Eggleton [Thu, 19 Feb 2015 16:40:00 +0000 (16:40 +0000)]
devtool: update-recipe: add handling for git recipes
When updating git-based recipes, in a lot of cases what you want is to
push the changes to the repository and update SRCREV rather than to
apply patches within the recipe. Updating SRCREV is now the default
behaviour for recipes that fetch from git, but this can be overridden
in both directions using a new -m/--mode option.
Paul Eggleton [Thu, 19 Feb 2015 16:39:58 +0000 (16:39 +0000)]
devtool: build: run do_populate_sysroot instead of do_install
If you want to be able to make use of libraries in conjunction with
devtool then we need to install them into the sysroot for other recipes
to use. Make it a configuration option in case it needs to be changed at
runtime.
Paul Eggleton [Thu, 19 Feb 2015 16:39:57 +0000 (16:39 +0000)]
devtool: reset: run bitbake -c clean on recipe
If you've added a new recipe, you want the output cleaned when you do
devtool reset, otherwise cruft from building the recipe may remain which
could interfere with future builds.
Paul Eggleton [Thu, 19 Feb 2015 16:39:56 +0000 (16:39 +0000)]
devtool: add/modify: add option to build in same directory
The default behaviour is to build in a separate directory to the source,
however some projects can't be built this way, so add an option to do
that (or override the automatic behaviour in the case of modify).
Paul Eggleton [Thu, 19 Feb 2015 16:39:55 +0000 (16:39 +0000)]
classes/kernel-yocto: extend SRCTREECOVEREDTASKS
* Add do_shared_workdir which was added recently
* Add do_fetch and do_unpack to this list, because at the moment if you
enable externalsrc through a bbappend the += in this class wipes out
the original value from externalsrc (which is set with ?=)
Paul Eggleton [Thu, 19 Feb 2015 16:39:54 +0000 (16:39 +0000)]
classes/externalsrc: show a warning on compiling
Make sure there's no chance of anyone forgetting they have a recipe set
up for externalsrc; otherwise you could get confused about what is going
on. (With our default logging setup we can't make it a note because the
UI doesn't forward those; otherwise I would have used bb.note().)
Paul Eggleton [Thu, 19 Feb 2015 16:39:53 +0000 (16:39 +0000)]
classes/externalsrc: add workaround for recipes that use SRCPV in PV
Here we set SRC_URI to blank, however doing so means that the function
that is called when you expand the default value of SRCPV
(i.e. bb.fetch2.get_srcrev()) will fail, so any recipe that references
SRCPV in PV couldn't previously be used with externalsrc.
(At some point we may fix the function to work in the externalsrc case,
but then we would also need to ensure that ${B} did not change as a
result of PV changing any time the HEAD revision changes in the external
source tree, or you'll lose any intermediate build artifacts.)
Paul Eggleton [Thu, 19 Feb 2015 16:39:52 +0000 (16:39 +0000)]
classes/externalsrc: fix source being wiped out on clean with kernel
kernel.bbclass adds ${S} do do_clean[cleandirs], but this means if you
run bitbake -c clean <kernelrecipe> then your external source tree will
be trashed, which could be a disaster. For safety, remove ${S} from
cleandirs for every task. We also have to do the same for ${B} in the
case where EXTERNALSRC_BUILD is set to the same value as EXTERNALSRC.
Paul Eggleton [Thu, 19 Feb 2015 16:39:51 +0000 (16:39 +0000)]
lib/oe/patch: fix PATCHTOOL = "git" with source in a subdirectory
For recipes that have their actual source in a subdirectory of what is
fetched (e.g. mkelfimage), we need to find the root of the repository
within the GitApplyTree code that attempts to set up the required git
hooks and use that, rather than expecting the root to be the same as
${S}.
Chong Lu [Fri, 20 Feb 2015 17:52:43 +0000 (17:52 +0000)]
bitbake: bitbake-layers: add ability to fetch layers and their dependencies from layer index
Add a command to query layer dependencies from a layer index such as the
OpenEmbedded Layer Index at http://layers.openembedded.org. Fetches the
layer and its dependencies and adds them into conf/bblayers.conf.
Signed-off-by: Chong Lu <Chong.Lu@windriver.com> Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Paul Eggleton [Fri, 20 Feb 2015 17:52:41 +0000 (17:52 +0000)]
bitbake: bitbake-layers: refactor to use argparse instead of cmd
This makes help formatting and option handling a lot more standardised
and allows us to drop a bunch of code. We also gain slightly more
straightforward error handling.
One side-effect however is that the old subcommand syntax using
underscores is no longer supported. The dashed form has been supported
(and displayed in the help text) for quite a while now so I wouldn't
imagine that will be much of an issue.
Richard Purdie [Fri, 20 Feb 2015 17:39:21 +0000 (17:39 +0000)]
machine/qemu: Switch from ext3 to ext4
There is no good reason not to use ext4 at this point, it has advantages
and few drawbacks. Therefore switch the qemu machines over (and the default
runqemu script options).
Paul Eggleton [Fri, 20 Feb 2015 17:44:06 +0000 (17:44 +0000)]
layer.conf: set a variable to map to the OE Layer Index name
Add a variable that allows us to map the OE-Core layer to the name that
represents it in the OpenEmbedded layer index. This will be used by
bitbake-layers layerindex-fetch so that it knows that for example
OE-Core is already fetched and included in the current configuration.
Note - it won't be required for us to go around and set this for every
layer - we can do the matching based on repo and subdirectory, but
OE-Core is somewhat special in that it does sometimes appear in
different places, for example in poky.
Chong Lu [Fri, 20 Feb 2015 17:44:05 +0000 (17:44 +0000)]
bitbake.conf: Add two variables for layer index
Add BBLAYERS_LAYERINDEX_URL variable that bitbake-layers can use to find layer index.
Add BBLAYERS_FETCH_DIR variable that bitbake-layers can use to specify fetch directory.
Paul Eggleton [Fri, 20 Feb 2015 17:44:07 +0000 (17:44 +0000)]
lib/oeqa/selftest/bblayers: use dashed subcommands
bitbake-layers subcommands with underscores are the old syntax; the
dashed form has been supported (and displayed in the help text) for
quite a while now, and the old syntax is about to be unsupported, so use
the dashed form in the tests.
Khem Raj [Fri, 20 Feb 2015 04:24:36 +0000 (04:24 +0000)]
glibc: Dont offer to be parsed for non-glibc TCLIBC selection
We now can support musl along with uclibc and glibc
earlier when only alternative was uclibc this check was fine
but now we need to consider non-glibc vs glibc case instead of
uclibc vs glibc
Robert Yang [Fri, 20 Feb 2015 05:57:19 +0000 (21:57 -0800)]
lttng-tools: add PACKAGECONFIG for kmod
Fixed:
lttng-tools-2.6.0: lttng-tools-ptest rdepends on libkmod, but it isn't a build dependency? [build-deps]
lttng-tools-2.6.0: lttng-tools rdepends on libkmod, but it isn't a build dependency? [build-deps]
The patch can't be applied by "git am -3" with newer version of git
(such as 2.0.1), and can't be applied by "git am/apply" with any
version, now fix it
* each DEFAULTTUNE with thumb enabled should list it's arm variants in
PACKAGE_EXTRA_ARCHS, otherwise packages which force arm ISA won't be
found in do_rootfs
* armv7athf-neon-vfpv4 was missing its own PACKAGE_ARCH and also the arm
variant
Martin Jansa [Wed, 18 Feb 2015 14:40:35 +0000 (15:40 +0100)]
feature-arm-thumb.inc: respect ARM_INSTRUCTION_SET when adding thumb suffix
* this means that recipes with ARM_INSTRUCTION_SET explicitly changed
to arm will be built in feed without thumb suffix, the same does apply
for workdir, e.g. after "bitbake glib-2.0" you can see:
Tom Zanussi [Fri, 20 Feb 2015 20:14:01 +0000 (14:14 -0600)]
wic: Fix kernel dir location
With the recent kernel staging changes, STAGING_KERNEL_DIR no longer
points to the kernel image, which can be found however in
DEPLOY_DIR_IMAGE. This updates find_artifacts() to look there
instead.
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
xorg-font-common: fix sysroot injection for encoding maps
The xorg font builds use `pkg-config --variable=mapdir fontutil` to
locate encoding maps. This variable ought to be sysroot-relative, but
neither pkg-config nor font-util nor the fonts themselves provide any
facility to add the sysroot back in.
We're presently adding the sysroot by by twiddling MAPFILES_PATH in
configure.ac. This is broken; it's actually defined in aclocal.m4,
because the definition is provided by fontutil.m4. Another (more
speculative) criticism is that it also hardcodes a build-specific
absolute path into builds which might (incorrectly) encode it into
target-installable packages.
A somewhat more robust, focused, and clear solution is to override
UTIL_DIR on the make command line. (UTIL_DIR, not MAPFILES_PATH, is what
is actually referenced in the build.)
Signed-off-by: Richard Tollerton <rich.tollerton@ni.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
MAPFILES_PATH is a configuration variable that is used by packages using
font-util, which tells those packages how to compute it in fontutil.m4.
Presently, we're manually twiddling things so that MAPFILES_PATH will
consult the native sysroot, when building under *any* architecture.
This complicates building other packages immensely, and also generates
broken on-target packages, because the contents of font-util-dev will
reference the native sysroot on the build machine (!).
We don't even need to twiddle MAPFILES_PATH anymore so just delete it.
This code also had a path bug (referencing /usr/lib/pkg-config instead
of /usr/lib/pkgconfig) which is also fixed by deletion.
Signed-off-by: Richard Tollerton <rich.tollerton@ni.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Ben Shelton [Fri, 20 Feb 2015 19:02:33 +0000 (13:02 -0600)]
font-util: stage encoding maps into sysroot
font-util installs encoding maps into /usr/share/fonts/X11. This path
may not exist on the host (many distros install these into
/usr/share/fonts/util) so they must exist in the sysroot in order for
e.g. `pkg-config --variable=mapdir fontutil` to work correctly. However,
currently /usr/share/fonts is explicitly not installed into sysroots, so
the encoding maps were not getting found.
Fix this by explicitly staging ${datadir}/fonts/ into the sysroot.
Signed-off-by: Ben Shelton <ben.shelton@ni.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Ross Burton [Fri, 20 Feb 2015 16:39:40 +0000 (16:39 +0000)]
opkg: fix systemd unit installation
SYSTEMD_SERVICE doesn't need to be set conditionally, and units should be
installed if the systemd DISTRO_FEATURE is enabled, not if sysvinit isn't
enabled.
U-Boot does support AArch64, this however was only added to newer
versions of U-Boot and at the time of this original commit the U-Boot in
OE-Core did not support the 'arm64' architecture. OE-Core now has a
newer version of U-Boot for the mkimage recipe and thus supports the
'arm64' architecture.
Ben Shelton [Thu, 19 Feb 2015 20:11:06 +0000 (14:11 -0600)]
kernelshark: Update to version 2.5.3
Update to version 2.5.3 to match trace-cmd.
Changes include:
- Remove kernelshark-fix-syntax-error-of-shell.patch (the syntax error
is no longer present in the new version).
- Specify bindir_relative and libdir in EXTRA_OEMAKE as in the
trace-cmd recipe so files get installed to the right place.
Additionally, remove unnecessary EXTRA_OEMAKE options.
- Fix up the do_install steps to remove the plugins directory; that
directory now lives under /usr/lib.
- Set NO_PYTHON=1 because building the ctracecmd Python module requires
swig, which is not available in oe-core.
Bruce Ashfield [Fri, 20 Feb 2015 18:38:03 +0000 (13:38 -0500)]
linux-yocto: warn when a generated BSP description is used
The meta data (in tree or out of tree) that describes a BSP, its patches
and configuration is not always available when a new/default or manually
configured machine is built.
When this happens, the tools generate a skeleton BSP and use a
architecture defconfig for the build. If this is by design, the build
is typically sane and everything works fine. If an existing BSP
description was expected, chances are that the resulting kernel will not
be correct.
To avoid surprising the user when a default/skeleton BSP is used for the
build, we can make it obvious to the user by emitting a warning like
the following:
WARNING: [kernel]: An auto generated BSP description was used, this normally indicates a misconfiguration.
Check that your machine (myqemux86-64) has an associated kernel description.
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Bruce Ashfield [Wed, 18 Feb 2015 21:15:35 +0000 (16:15 -0500)]
linux-yocto: make kernel configuration audit user visible
After a linux-yocto style kernel is configured, a kernel configuration
audit is executed to detect common errors or issues with the config.
This output used to be visible, but was made less obvious to not alarm
users unnecessarily (since some configuration issues are acceptable).
There are some classes of configuration issue that are worth being
visible, and that is specified configuration values that do not make the
final .config. These dropped options can result in any number of runtime
failures, so flagging them at build time makes sense.
The visibility of auditing is controlled by KCONF_AUDIT_LEVEL:
0: no reporting
1: report options that are specified, but not in the final config
2: report options that are not hardware related, but set by a BSP
The default level is 1, with level 2 and above being for BSP development
only.
If these conditions are detected, warnings will be generated as follows:
WARNING: [kernel config]: specified values did not make it into the
kernel's final configuration:
Value requested for CONFIG_SND_PCSP not in final ".config"
Requested value: "CONFIG_SND_PCSP=y"
Actual value set: ""
Michael Wood [Wed, 18 Feb 2015 15:18:51 +0000 (15:18 +0000)]
bitbake: toaster: importlayer Remove description input field
This wasn't required or working due to a typo and adds ambiguity between
the summary and description. The correct method for changing the description
or summary is via the layerdetails page.
bitbake: toasterui: style the Toaster version information
In debug mode, we show the Toaster version and mode in the
top bar. Display them inside a tooltip that appears when
you hover over a nice info icon to make them less conspicuous.
Michael Wood [Wed, 18 Feb 2015 15:09:44 +0000 (15:09 +0000)]
bitbake: toaster: layerdetails Don't show None type in description/summary
When the result for the summary or description is None don't output the
result as the string version of None, use an empty value so that the
"Not set" mechanism works.
Signed-off-by: David Reyna <David.Reyna@windriver.com> Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
We reduce the number of queries by using "select_related"
to bring in more data in a single query. Improvements in
project page refresh, recipes table and tasks table.
Alexandru Damian [Tue, 17 Feb 2015 15:02:26 +0000 (15:02 +0000)]
bitbake: toasterui: fix time estimation in project page
This patch fixes the time estimation to build completion
in project page. Additionally it fixes the Most Recent Builds
section used in various pages in managed mode, and proper
time to build estimation in all pages.
Alexandru DAMIAN [Mon, 16 Feb 2015 17:47:07 +0000 (17:47 +0000)]
bitbake: toaster: bitbake cooker log saving and downloading
This patch brings in cooker log saving and proper download links.
* toasterui will now write the cooker log file if running in managed
mode
* the BuildRequest has a new state, REQ_ARCHIVE, indicating that the
build is completed, and the artifacts are ready to be grabbed
* the runbuild test execution commands will gather needed artifacts,
and save them to a storage directory selected during Toaster setup.
* the build dashboard, project builds and all builds pages have
permanent links for the cooker log
Robert Yang [Wed, 18 Feb 2015 03:28:42 +0000 (19:28 -0800)]
btrfs-tools: fix for parallel build
Fixed:
mkfs.c:300:46: error: 'BTRFS_BUILD_VERSION' undeclared (first use in this function)
fprintf(stderr, "mkfs.btrfs, part of %s\n", BTRFS_BUILD_VERSION);
Fathi Boudra [Wed, 18 Feb 2015 06:44:45 +0000 (14:44 +0800)]
busybox: update to 1.23.1 release
* Bump SRCREV/PV
* Drop PR
* Update SRC_URI md5sum/sha256sum
* Drop 0001-build-system-Specify-nostldlib-when-linking-to-.o-fi.patch
- applied upstream and available in 1.23.1 release
Chen Qi [Tue, 17 Feb 2015 02:08:12 +0000 (10:08 +0800)]
packaging: allow globs in CONFFILES
Allow globs in CONFFILES.
This patch changes the way of CONFFILES handling. After this change,
the CONFFILES can take the same form as FILES. That means, we don't
have to list a bunch of files for CONFFILES. It will just be expanded
like the FILES variable.
We don't assume default value for CONFFILES in OE. But distro vendors could
provide a default value for CONFFILES in their distro configuration file
like below.
CONFFILES = "${sysconfdir}"
In this way, files under /etc are treated as configuration files by
default. Of course, setting CONFFILES in recipes take precedence over
the CONFFILES. For example, if the recipe author decides that package A
should only treat files under ${sysconfdir}/default/ as config files,
he/she can write like this.
Martin Jansa [Tue, 17 Feb 2015 19:02:28 +0000 (20:02 +0100)]
license.bbclass: fix unexpected operator for LICENSE values with space
* add quotes around pkged_lic so that it works correctly with spaces
* fixes following error:
run.license_create_manifest.50601: 193: [: GPLv2: unexpected operator
Chen Qi [Tue, 17 Feb 2015 02:08:15 +0000 (10:08 +0800)]
useradd.bbclass: avoid do_rootfs error for debian package backend
If /etc/login.defs is treated as a configuration file, then we would meet
errors at do_rootfs time telling us that useradd/groupadd cannot execute
correctly.
This is because the dpkg handles config file specially, the login.defs
is temporarily renamed as login.defs.dpkg-new.
How ubuntu deals the user/group adding problem? They do it at postinst of the
package. And, the postinst script of a package would possibly do `chown' of
its files or directories.
The above strategy is not suitable for OE. Because we do chown in do_install
and add user/group in preinst scripts of the packages.
That's why we need this patch so that do_rootfs don't fail.
Chen Qi [Tue, 17 Feb 2015 02:08:14 +0000 (10:08 +0800)]
update-rc.d: use '-f' option in updatercd_postrm
Use '-f' ('--force') option so that while removing packages using deb,
we don't fail because of the following error:
update-rc.d: $initd/$bn exists during rc.d purge (use -f to force)
Using '-f' option would make this a warning but continue to execute.
update-rc.d: $initd/$bn exists during rc.d purge (continuing)
We need this option because dpkg package backend have special handling for
configuration files. And if files under /etc/init.d are treated as configuration
files, we will have errors.
Chen Qi [Tue, 17 Feb 2015 02:08:13 +0000 (10:08 +0800)]
package_manager.py: use 'purge' instead of 'remove' in case of deb
We need to use 'purge' instead of 'remove' for debian package backend when
removing packages at rootfs time. This is because that 'remove' command for
'dpkg' and 'apt-get' does not remove configuration files.
Paul Gortmaker [Tue, 17 Feb 2015 05:47:46 +0000 (00:47 -0500)]
scripts: delete dummy help2man script
This was added to try and deal with the cross compile issue of
help2man ; one can not run an ARM binary "./chmod --help" on an
x86-64 host in order to get the help text to create a man page.
This has been primarily an issue with the coreutils package.
However, we have since fixed coreutils to have useful pre-made
manpages and we don't need this script anymore. And if other
gnu packages are getting useless truncated "dummy" manpages,
we want the build to fail so we can fix those packages in a
similar way, vs. having the issue hidden via a help2man that is
a no-op.
other people have run into the headache of trying to cross compile
coreutils, with the "help2man" problem (assumes host can run the
target binaries with "--help" arg to collect data for manpage.)
And since "current wisdom is this is working as intended" we are
largely left with no choice but to use the same solution and
abandon trying to generate the man pages at build time. So here
we import prebuilt manpages.
We had a couple patches to 1) deal with missing perl and 2) deal
with the perl-less "dummy" help2man fallout, but in the end, they
achieve no purpose whatsoever, since they just populate the doc
RPM with manpages like this one:
NAME
chmod - a GNU coreutils 8.22 program
DESCRIPTION
OOOPS! Due to the lack of perl on the build system, we were
unable to create a proper manual page for chmod.
As the above serves no purpose whatsoever, and since the concept
of running the binaries to capture the "--help" text output is
completely broken for cross compiles, lets just decouple man page
generation from the building of coreutils entirely so it paves the
way for importing pre-generated manpages.
Scott Rifenbark [Fri, 13 Feb 2015 16:54:56 +0000 (08:54 -0800)]
ref-manual: Updates to AUTOREV and SRCREV variable descriptions
Fixes [YOCTO #7306]
Added an example for when the user tries to inherit the most recent
version of software through use of the SRCREV variable. When using
SRCREV = "${AUTOREV}" PV does not always get ${SRCPV}, which it need
in order to fetch the latest software. I added a clarifying example
to explain this situation.
This commit also has a small change to fix a broken link to
EXTERNAL_TOOLCHAIN. We do not documentat that variable so I removed
the link.
Scott Rifenbark [Thu, 12 Feb 2015 21:32:59 +0000 (13:32 -0800)]
adt-manual, ref-manual: Detail on using an external toolchain.
Fixes [YOCTO #4907]
I created a new section in the toolchain chapter of the adt-manual
called "optionally Using an External Toolchain". This provides
some fundamental information for the user that wants to use
an external toolchain. Additionally, it references Mentor
Graphics Sourcery toolchain as an example.
In the ref-manual, I updated the TCMODE variable description to
better integrate the MGC Sourcery toolchain as the overriding
example.
Scott Rifenbark [Thu, 12 Feb 2015 17:35:02 +0000 (09:35 -0800)]
ref-manual: Added 'debug-tweaks' fragmentation.
The image feature 'debug-tweaks' has been fragmented into three
separate areas of functionality that deals with handling empty
passwords and post-installation logging. I updated the list of
image features appropriately and the description of 'debug-tweaks'
in the EXTRA_IMAGE_FEATURES variable.
Scott Rifenbark [Thu, 12 Feb 2015 00:37:42 +0000 (16:37 -0800)]
ref-manual, mega-manual: Adjustments to variable context images
Fixes [YOCTO #5601]
Discovered that the solution I had to display a small PNG file
to indicate the context a variable is used in the build system
was not displaying properly in the ref-manual variable glossary
when using the Chrome browser. The solution was to adjust some
settings in the CSS file and place the image after the term.
This allowed me to dump the webkit stuff that I had inserted
into the CSS file styles to make it work in Mozilla, which
ended up not working in Chrome.
Additionally, I needed to update the 'define-generic.png' file to
have less white space on top as part of the figure. Note that
this commit adds the figure to Git for tracking as well.