bc71274a34
Since tar *will* generate different archives, virtually all hashes will change, so drop the blurb that states they usually would not. Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> [Arnout: say explicitly that the has will change] Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
187 lines
6.9 KiB
Plaintext
187 lines
6.9 KiB
Plaintext
// -*- mode:doc; -*-
|
|
// vim: set syntax=asciidoc:
|
|
|
|
[[migrating-from-ol-versions]]
|
|
== Migrating from older Buildroot versions
|
|
|
|
Some versions have introduced backward incompatibilities. This section
|
|
explains those incompatibilities, and for each explains what to do to
|
|
complete the migration.
|
|
|
|
[[migrating-approach]]
|
|
=== General approach
|
|
|
|
To migrate from an older Buildroot version, take the following steps.
|
|
|
|
. For all your configurations, do a build in the old Buildroot
|
|
environment. Run +make graph-size+. Save
|
|
+graphs/file-size-stats.csv+ in a different location. Run +make
|
|
clean+ to remove the rest.
|
|
. Review the specific migration notes below and make the required
|
|
adaptations to external packages and custom build scripts.
|
|
. Update Buildroot.
|
|
. Run +make menuconfig+ starting from the existing +.config+.
|
|
. If anything is enabled in the Legacy menu, check its help text,
|
|
unselect it, and save the configuration.
|
|
. For more details, review the git commit messages for the packages that
|
|
you need. Change into the +packages+ directory and run
|
|
+git log <old version>.. -- <your packages>+.
|
|
. Build in the new Buildroot environment.
|
|
. Fix build issues in external packages (usually due to updated
|
|
dependencies).
|
|
. Run +make graph-size+.
|
|
. Compare the new +file-size-stats.csv+ with the original one, to
|
|
check if no required files have disappeared and if no new big unneeded
|
|
files have appeared.
|
|
. For configuration (and other) files in a custom overlay that overwrite
|
|
files created by Buildroot, check if there are changes in the
|
|
Buildroot-generated file that need to be propagated to your custom
|
|
file.
|
|
|
|
[[br2-external-converting]]
|
|
=== Migrating to 2016.11
|
|
|
|
Before Buildroot 2016.11, it was possible to use only one br2-external
|
|
tree at once. With Buildroot 2016.11 came the possibility to use more
|
|
than one simultaneously (for details, see xref:outside-br-custom[]).
|
|
|
|
This however means that older br2-external trees are not usable as-is.
|
|
A minor change has to be made: adding a name to your br2-external tree.
|
|
|
|
This can be done very easily in just a few steps:
|
|
|
|
* First, create a new file named +external.desc+, at the root of your
|
|
br2-external tree, with a single line defining the name of your
|
|
br2-external tree:
|
|
+
|
|
----
|
|
$ echo 'name: NAME_OF_YOUR_TREE' >external.desc
|
|
----
|
|
+
|
|
.Note
|
|
Be careful when choosing a name: It has to be unique and be made
|
|
with only ASCII characters from the set +[A-Za-z0-9_]+.
|
|
|
|
* Then, change every occurence of +BR2_EXTERNAL+ in your br2-external
|
|
tree with the new variable:
|
|
+
|
|
----
|
|
$ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g'
|
|
----
|
|
|
|
Now, your br2-external tree can be used with Buildroot 2016.11 onward.
|
|
|
|
.Note:
|
|
This change makes your br2-external tree incompatible with Buildroot
|
|
before 2016.11.
|
|
|
|
[[migrating-host-usr]]
|
|
=== Migrating to 2017.08
|
|
|
|
Before Buildroot 2017.08, host packages were installed in +$(HOST_DIR)/usr+
|
|
(with e.g. the autotools' +--prefix=$(HOST_DIR)/usr+). With Buildroot
|
|
2017.08, they are now installed directly in +$(HOST_DIR)+.
|
|
|
|
Whenever a package installs an executable that is linked with a library
|
|
in +$(HOST_DIR)/lib+, it must have an RPATH pointing to that directory.
|
|
|
|
An RPATH pointing to +$(HOST_DIR)/usr/lib+ is no longer accepted.
|
|
|
|
[[migrating-svn-externals]]
|
|
=== Migrating to 2023.11
|
|
|
|
Before Buildroot 2023.11, the subversion download backend unconditionally
|
|
retrieved the external references (objects with an `svn:externals`
|
|
property). Starting with 2023.11, externals are no longer retrieved by
|
|
default; if you need them, set +LIBFOO_SVN_EXTERNALS+ to +YES+. This
|
|
change implies that:
|
|
|
|
* the generated archive content may change, and thus the hashes may need
|
|
to be updated appropriately;
|
|
* the archive version suffix has been updated to +-br3+, so the hash
|
|
files must be updated appropriately.
|
|
|
|
Before Buildroot 2023.11, it was possible (but undocumented and unused)
|
|
to apply architecture-specific patches, by prefixing the patch filename
|
|
with the architecture, e.g. `0001-some-changes.patch.arm` and such a
|
|
patch would only be applied for that architecture. With Buildroot 2023.11,
|
|
this is no longer supported, and such patches are no longer applied at
|
|
all.
|
|
|
|
If you still need per-architecture patches, then you may provide a
|
|
xref:hooks[pre-patch hook] that copies the patches applicable to the
|
|
configured architecture, e.g.:
|
|
|
|
----
|
|
define LIBFOO_ARCH_PATCHES
|
|
$(foreach p,$(wildcard $(LIBFOO_PKGDIR)/*.patch.$(ARCH)), \
|
|
cp -f $(p) $(patsubst %.$(ARCH),%,$(p))
|
|
)
|
|
endef
|
|
LIBFOO_PRE_PATCH_HOOKS += LIBFOO_ARCH_PATCHES
|
|
----
|
|
|
|
Note that no package in Buildroot has architecture-specific patches, and
|
|
that such patches will most probably not be accepted.
|
|
|
|
[[migrating-git-attributes]]
|
|
=== Migrating to 2024.05
|
|
|
|
The download backends have been extended in various ways.
|
|
|
|
* All locally generated tarballs are even more reproducible. Before
|
|
2024.05, it was possible that the access mode of files in the archives
|
|
were not consistent when the download directory has specific ACLs (e.g.
|
|
with the +default+ ACL set). This impacts the archives generated for
|
|
git and subversion repositories, as well as those for vendored cargo
|
|
and go packages.
|
|
* The git download backend now properly expands the `export-subst`
|
|
https://git-scm.com/docs/gitattributes[git attribute] when generating
|
|
archives.
|
|
* A newer +tar+ version, _1.35_, is required to generate the archives.
|
|
For compatibility reasons, +tar+ 1.35 changes the way it stores some
|
|
fields (`devmajor` and `devminor`), which has an impact in the metadata
|
|
stored in the archives (but the content of files is not affected).
|
|
|
|
To accomodate those changes, the archive suffix has been updated or
|
|
added:
|
|
|
|
* for git: +-git4+
|
|
* for subversion: +-svn5+
|
|
* for cargo (rust) packages: +-cargo2+
|
|
* for go packages: +-go2+
|
|
|
|
Note that, if two such prefixes would apply to a generated archive, like
|
|
for a cargo package downloaded from git, both suffixes need to be added,
|
|
first the one for the download mechanism, then the one for the vendoring,
|
|
e.g.: +libfoo-1.2.3-git4-cargo2.tar.gz+.
|
|
|
|
Because of this, the hash file of any custom packages or custom versions
|
|
for kernel and bootloaders must be updated. The following sed scripts can
|
|
automate the rename in the hash file (assuming such files are kept under
|
|
git):
|
|
|
|
----
|
|
# For git and svn packages, which originally had -br2 resp. -br3 suffix
|
|
sed -r -i -e 's/-br2/-git4/; s/-br3/-svn5/' $(
|
|
git grep -l -E -- '-br2|-br3' -- '*.hash'
|
|
)
|
|
|
|
# For go packages, which originally had no suffix
|
|
sed -r -i -e 's/(\.tar\.gz)$/-go2\1/' $(
|
|
git grep -l -E '\$\(eval \$\((host-)?golang-package\)\)' -- '*.mk' \
|
|
|sed -r -e 's/\.mk$/.hash/' \
|
|
|sort -u
|
|
)
|
|
|
|
# For cargo packages, which originally had no suffix
|
|
sed -r -i -e 's/(\.tar\.gz)$/-cargo2\1/' $(
|
|
git grep -l -E '\$\(eval \$\((host-)?cargo-package\)\)' -- '*.mk' \
|
|
|sed -r -e 's/\.mk$/.hash/' \
|
|
|sort -u
|
|
)
|
|
----
|
|
|
|
Note that the hash _will_ have changed, so that needs to be updated
|
|
(manually) as well.
|