Cannot build Skia
Christian Lohmaier
lohmaier at googlemail.com
Thu Jul 3 12:33:25 UTC 2025
Hi Regina,
On Mon, Jun 30, 2025 at 9:37 PM Regina Henschel <rb.henschel at t-online.de> wrote:
>> Christian Lohmaier schrieb am 30.06.2025 um 13:26:
> > On Mon, Jun 30, 2025 at 12:46 PM Regina Henschel
> > <rb.henschel at t-online.de> wrote:
> >>
> >> but the next clean build again fails to build skia :(
> >
> > Hmm. If you didn't say you already started with a fresh clone, I would
> > have suspected https://gerrit.libreoffice.org/c/core/+/180511 to be
> > missing/the cause of the problem.
> > At least that would match the works the first time, but not subsequent
> > times (after rerunning of autogen.sh is triggered by make and not
> > manually) >
> > So please double-check the status of the <module>/Makefile files in
> > the checkout. If there's confusion about builddir vs srcdir because of
> > short forms of paths being different than what was used when running
> > the initial configure, autogen.sh would replace the makefiles in the
> > srcdir (while it is only supposed to create copies in a separate
> > builddir)
>
> All Makefile files are altered. For example for folder 'filter':
> […]
That matches the symptoms of mistreating a build in the
source-directory as a build in a separate directory.
So apparently it is not wsl-specifc (anymore?)...
> > The fix is only addressing the wsl-as-helper case, since at least my
> > version of cygwin was unaffected, cygwin-perl's realpath would have
> > rewritten a shortened path to the long form – but maybe that
> > assumption is wrong and it needs the same fix.
>
> Can you sent me the needed changes, so that I can test it?
It is the fix in https://gerrit.libreoffice.org/c/core/+/180511 basically.
To fix the current situation: reset the makefiles to their initial state:
git checkout -- */Makefile external/*/Makefile
remove the bogus double-include link
rm include/include
git status should not show any touched Makefiles anymore
Then to fix the problem from reappearing: change Makefile.in to have a line
$(BUILDDIR)/config_host.mk : SRCDIR:=/$(shell cygpath -ml $(SRCDIR))
above the ifneq ($(MSYSTEM),) line and change
sh -c "$(if $(MSYSTEM),cd $(shell cygpath -ml $(BUILDDIR)); $(WSL)
)$(SRCDIR)/autogen.sh"
to
sh -c "cd $(shell cygpath -ml $(BUILDDIR)); $(if $(MSYSTEM,$(WSL)
)$(SRCDIR)/autogen.sh"
i.e. move the $(if $(MSYSTEM,) wrapper behind the cd / to only contain
the $(WSL) prefix.
manually run autogen.sh again, since otherwise the old rule from the
generated Makefile would be run and recreate the messup.
The fix is to use the long form of SRCDIR and the long form of
BUILDDIR, so that if autogen.sh compares them they will
match/autogen.sh will recognize they are the same directory.
Since the Makefile at that point doesn't know about any OS or other
variables from config_host.mk the proper fix is probably to move the
path-normalization to autogen.sh
anyhow to trigger the failure prior to fixing and verifying that the fix worked:
touch autogen.input
make fetch
→ that will trigger the rerun of autogen.sh by the makefile without
spending time trying to build something/the make fetch should finish
quickly in any case.
then check whether the Makefiles have been modifier/whether there's
the double include-link.
ciao
Christian
More information about the LibreOffice
mailing list