Open Ecordonnier opened 1 year ago
- The build-system should not be racy
The commit e978b4534a5e10471108259118c0ef791106fd92 should have updated src/po/ja.sjis.po
, however, it wasn't updated.
- Make should maybe not assume that sjiscorr compiled with CC can run on the host?
We should use HOSTCC or a similar variable, I think.
I think I tried editing the file but my vim seemed to cause encoding issues. So I left it alone.
- Make should maybe not assume that sjiscorr compiled with CC can run on the host?
We should use HOSTCC or a similar variable, I think.
FYI yocto provides "BUILD_CC" (for the host) and "CC" (for the target) in the environment. Yocto does not provide HOST_CC (but it's easy to add a patch for vim in yocto if needed).
I think I tried editing the file but my vim seemed to cause encoding issues. So I left it alone.
It will be automatically updated if you run make
in src/po/
.
I've done it in #12840.
ah thanks!
- Make should maybe not assume that sjiscorr compiled with CC can run on the host?
This has not been fixed yet. Reopening.
@Ecordonnier
How did you run configure
when you cross-compiling?
@k-takata this is the code calling configure during a yocto build: https://github.com/yoctoproject/poky/blob/master/meta/recipes-support/vim/vim.inc#L41
do_configure () {
cd src
rm -f auto/*
touch auto/config.mk
aclocal
autoconf
cd ..
oe_runconf
touch src/auto/configure
touch src/auto/config.mk src/auto/config.h
}
I'm attaching a full log in case you want to have a look, but honestly if you are not familiar with yocto the complexity is high, so it may be easier to focus on a simpler minimal cross-compile use-case and replace CC with BUILD_CC where appropriate:
NOTE: Running ./configure --build=x86_64-linux --host=aarch64-poky-linux --target=aarch64-poky-linux --prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --sysconfdir=/etc --sharedstatedir=/com --localstatedir=/var --libdir=/usr/lib --includedir=/usr/include --oldincludedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/home/ecordonnier/repos/poky/build/tmp/work/cortexa57-poky-linux/vim/9.0.1592/recipe-sysroot --disable-gpm --disable-gtktest --disable-xim --disable-netbeans --disable-desktop-database-update --with-tlib=ncurses --with-modified-by='Poky Maintainers poky@lists.yoctoproject.org' ac_cv_small_wchar_t=no ac_cv_path_GLIB_COMPILE_RESOURCES=no vim_cv_getcwd_broken=no vim_cv_memmove_handles_overlap=yes vim_cv_stat_ignores_slash=no vim_cv_terminfo=yes vim_cv_tgetent=non-zero vim_cv_toupper_broken=no vim_cv_tty_group=world STRIP=/bin/true --disable-static --enable-acl --enable-gui=gtk3 --enable-nls --disable-selinux --disable-canberra --with-features=big --with-x vim_cv_timer_create=yes
Full log: log.do_configure.txt
Steps to reproduce
I am compiling vim as part of yocto poky version kirkstone, which is downloading vim's source-code using git. The compilation works most of the time, but on some specific build-machine, the compilation of vim always fails. This is a combination of a racy build-system and the usage of a cross-compiler as CC variable:
Relying on the timestamp of src/po/ja.sjis.po is racy, because the timestamp of this file changes whenever git updates this file. So for instance when cloning the master branch and then checking out version 9.0.1527, the timestamp of ja.sjis.po is older than the timestamp of ja.po and Make will attempt to regenerate the file:
Expected behaviour
Version of Vim
9.0.1527
Environment
Ubuntu 22.04. Poky version kirkstone
Logs and stack traces