2016-10-14 16:39:19 +02:00
|
|
|
// -*- mode:doc; -*-
|
|
|
|
// vim: set syntax=asciidoc:
|
|
|
|
|
2017-09-05 22:34:52 +02:00
|
|
|
[[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.
|
|
|
|
|
2021-08-03 17:44:42 +02:00
|
|
|
[[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.
|
|
|
|
|
2016-10-14 16:39:19 +02:00
|
|
|
[[br2-external-converting]]
|
2017-09-05 22:34:52 +02:00
|
|
|
=== Migrating to 2016.11
|
2016-10-14 16:39:19 +02:00
|
|
|
|
2016-10-14 16:39:21 +02:00
|
|
|
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.
|
2016-10-14 16:39:19 +02:00
|
|
|
|
|
|
|
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.
|
2017-09-05 22:34:53 +02:00
|
|
|
|
|
|
|
[[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.
|
package/pkg-generic: don't download svn externals by default
Commit 7dd27cbe5b9e (support/download: add support to exclude svn
externals) departed from the usual opt-in scheme, like is done for
git submodule or large files, in an attempt to keep the previous
behaviour unchanged, that is to download externals by default.
As an afterthought, we've concluded that the chances for svn-hosted
packages with externals that are indeed required to do the build,
are relatively slim. For those cases, it even makes sense to explicitly
requested the use of the externals.
So, we change the default to not download svn externals.
Since the generated archives may change, we bump the version suffix.
This will allow users to more easily catch the situation and decide if
they really need the externals or not.
We have a single in-tree package that uses svn, and it does not use
externals, so the generated archive does not change, and we just need
to update the archive filename in the hash file.
Finally, we add a new section to the manual, in the chapter about
migrating Buildroot to a newer version.
Reported-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2023-08-08 15:17:41 +02:00
|
|
|
|
|
|
|
[[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.
|
2023-10-15 00:25:41 +02:00
|
|
|
|
|
|
|
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,
|
2023-10-21 23:30:27 +02:00
|
|
|
this is no longer supported, and such patches are no longer applied at
|
2023-10-15 00:25:41 +02:00
|
|
|
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.
|
2024-05-04 23:40:10 +02:00
|
|
|
|
|
|
|
[[migrating-git-attributes]]
|
|
|
|
=== Migrating to 2024.05
|
|
|
|
|
2024-05-04 23:40:16 +02:00
|
|
|
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.
|
2024-05-04 23:40:22 +02:00
|
|
|
* 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).
|
2024-05-04 23:40:16 +02:00
|
|
|
|
|
|
|
To accomodate those changes, the archive suffix has been updated or
|
|
|
|
added:
|
|
|
|
|
2024-05-04 23:40:22 +02:00
|
|
|
* for git: +-git4+
|
|
|
|
* for subversion: +-svn5+
|
|
|
|
* for cargo (rust) packages: +-cargo2+
|
|
|
|
* for go packages: +-go2+
|
2024-05-04 23:40:16 +02:00
|
|
|
|
|
|
|
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,
|
2024-05-04 23:40:22 +02:00
|
|
|
e.g.: +libfoo-1.2.3-git4-cargo2.tar.gz+.
|
2024-05-04 23:40:16 +02:00
|
|
|
|
|
|
|
Because of this, the hash file of any custom packages or custom versions
|
2024-05-04 23:40:22 +02:00
|
|
|
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):
|
2024-05-04 23:40:16 +02:00
|
|
|
|
|
|
|
----
|
|
|
|
# For git and svn packages, which originally had -br2 resp. -br3 suffix
|
2024-05-04 23:40:22 +02:00
|
|
|
sed -r -i -e 's/-br2/-git4/; s/-br3/-svn5/' $(
|
2024-05-04 23:40:16 +02:00
|
|
|
git grep -l -E -- '-br2|-br3' -- '*.hash'
|
|
|
|
)
|
|
|
|
|
|
|
|
# For go packages, which originally had no suffix
|
2024-05-04 23:40:22 +02:00
|
|
|
sed -r -i -e 's/(\.tar\.gz)$/-go2\1/' $(
|
2024-05-04 23:40:16 +02:00
|
|
|
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
|
2024-05-04 23:40:22 +02:00
|
|
|
sed -r -i -e 's/(\.tar\.gz)$/-cargo2\1/' $(
|
2024-05-04 23:40:16 +02:00
|
|
|
git grep -l -E '\$\(eval \$\((host-)?cargo-package\)\)' -- '*.mk' \
|
|
|
|
|sed -r -e 's/\.mk$/.hash/' \
|
|
|
|
|sort -u
|
|
|
|
)
|
|
|
|
----
|
2024-05-04 23:40:22 +02:00
|
|
|
|
|
|
|
Note that the hash _will_ have changed, so that needs to be updated
|
|
|
|
(manually) as well.
|