Build script to help bisecting by cherry-picking compiler fixes
Scott Kostyshak
skostysh at lyx.org
Sun Nov 17 11:12:48 UTC 2024
On Wed, Nov 13, 2024 at 05:12:48PM +0100, Pavel Sanda wrote:
> On Sun, Nov 10, 2024 at 05:00:04PM +0100, Scott Kostyshak wrote:
> > I have been working on a build script that helps during a bisect by
> > backporting compiler fixes. Is anyone interested in this? Let me know if
> > so and we can figure out how to integrate it into your build setup.
>
> I sometimes need to do this manually, so yes, this might get useful
> from time to time.
>
> Can you describe
> 1) how exactly it works in backgrounds?
Do you mean backporting? It checks if a certain commit is in the log, and if not it cherry-picks it. For example:
if ! git merge-base --is-ancestor "b73ab025" HEAD; then
git cherry-pick --keep-redundant-commits -x -X theirs "b73ab025"
fi
It might make sense for me to factor this part of the code out, in case people want to use this feature as a standalone for their own build scripts.
> 2) what's the expected commandline usage?
./lyxbuild --help gives the arguments and their descriptions. For example the --help output gives:
-o, --patch-old apply needed patches to build old commits on new systems
A simple setup would be the following:
1. Create an alias so that lyxbuild is found. I have the following, for
example:
alias lyxbuild='~/"lyx-tester/lyxbuild"'
2. cd to the LyX source code repository that you have cloned.
3. run "lyxbuild --patch-old".
By default, it uses CMake, and it creates the build directory in the parent directory, specifically: it creates this as the build directory: ../CMakeBuild. There is an arugment to use autotools instead.
By using different arguments, you can change that. There are arguments to compile with clang vs. GCC, autotools vs CMake, and Qt5 vs Qt6. And I'd be happy to add whatever other features people want.
> > https://gitlab.com/scottkosty/lyx-tester
>
> I see this is part of bigger repo.
>
> 1) Would you welcome if we create new repo in git.lyx.org so you don't need to deal with gitlab
> and other have easy commit access as well?
I think I would prefer to either leave it on GitLab or put it directly in the LyX repository under "development". The files are really light:
$ du -sh lyx-tester/
144K lyx-tester/
This way, the build script and test scripts would be in sync with the source code. That said, if there is a strong preference to make a new repository, I would be open.
> 2) We don't have working jenkins for us anymore on the french site, but I could prepare for
> you virtual machine with ubuntu on OSUOSL for automatic running of the tests and set it
> up for automatic emailing to our list in case of errros if that seems useful for you.
Yes, this would be amazing! I would really like this.
> You could either directly use that ubuntu environment or setup some docker/whatever
> containers to get testing under stable and testing releases of OS/texlive.
>
> Any interest in having it? (I can create the machine, setup ubuntu and mailing,
> but the rest of the machine config would be on your shoulders.)
Yes, lots of interest. I don't know anything about docker. But if I can just ssh into the machine like a normal system then the setup should be easy to run the tests. (I will take your offer to set up the mailing).
Which Ubuntu version would it be? That way, I can do a fresh install of that on my own Virtual Box locally and figure out exactly which commands I need to run to have everything set up.
The tests take a long time to run (several hours on one CPU). So running the tests often would be a considerable amount of cycles/power. Would we run the tests once per day? This is OK for OSUOSL? I would personally argue this would be a good use of our funds, to donate in compensation for the cycles; but I'm not sure how other developers feel about this.
Thank you, Pavel. I'm excited about this possibility!
Kornel, I'm guessing that at some point we might need to ask for your help. Is this idea interesting to you as well? In theory, if Pavel sets up everything else, it is easy to just "run the tests" so maybe I will not need to bother you. But I would not be surprised if we need help with the CMake/ctest code to adapt to some (not sure what) issue that comes up.
Scott
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.lyx.org/pipermail/lyx-devel/attachments/20241117/c05b41f2/attachment.sig>
More information about the lyx-devel
mailing list