-
Notifications
You must be signed in to change notification settings - Fork 25
Enhacement: Try to compile online #42
Comments
other method would be opensuse build service |
@Lourens-Rich Why are you downvoting this? This is a good suggestion since a continuous integration service would allow for anyone to get the latest binaries for the latest changes, and it simplifies testing. |
The point is that @gcarq and any other contributor wouldn't have to waste time checking out any contributions that won't pass the Chromium test suite. And instead of rebuilding the project locally CI would build and test it automatically, so that next to no time is wasted testing buggy patches. |
@DragoonAethis Actually some of these patches break the Chromium test suite. For example, We would probably need to patch the tests too if we want to use them. Not just because of the patches breaking them, but also because we're tweaking GN flags to abnormal values (which breaks assumptions made in the tests) |
Some breakage is expected, but tests eg for layout rendering shouldn't ever fail if you're tweaking network-related features, for instance. |
@DragoonAethis Good point, but there's not much value in the tests if they're testing features mostly unaffected by our changes. EDIT: Until we get more people working on patches, I don't think the tests are going to help us very much. So the only real value in CI systems would be for its computing resources, in that users can get builds and the developer can see if the code compiles with some changes to the code. It's not a very "idealistic" workflow, but it's more efficient to let the compiler/linker tells us what we forgot to patch or screwed up than reading tons of source code. |
I had this idea in the past, but never invested much time in this. @Eloston As you mentioned the direct benefit would be the computing power and maybe a more automated release cycle. Also I think the Iridium guys are doing a pretty good job with adapting tests, so it should be not that much work once we know where to look and adapt. |
@gcarq I suppose. But the fix-building-with-safebrowsing.patch is pretty agressive since I remove some functions entirely to make the compiler catch any overlooked safebrowsing references. I think these changes will also break a number of unittests. I can't say for sure until I've looked more into them. EDIT: This isn't much of a problem for Inox, but more unittests would break for ungoogled-chromium due to source cleaning, unless I exclude a number of files from being deleted. |
I've tried travis-ci but it has a maximum job runtime of 50 minutes, so this won't be an option. |
@gcarq What constitutes a job? Is a job defined to be some process to be launched by Travis CI as described in the configuration file? Are subprocesses considered part of the same job? If so, I don't believe any single leaf-node target dependency in Unless there's something lenient about the definition of a job and some convenient feature in GN or Ninja that will allow us to conform to the definition of a job, this is probably much more work than it's worth. Maybe OBS can work? |
A job would be something like the whole project built with compiler X under OS Y for CPU archtecture Z. A single build under Travis consists of all combinations of these (which you have to define). |
@DragoonAethis How is the compiler invoked? I'm trying to understand the relationship between this abstract concept of a "job" with the more concrete (and many) ways that software projects do things. |
If I remember correctly (haven't used Travis in a while), results of each job couldn't "see" each other. Essentially each job was run in a separate VM, then tested in that VM, then deployed on success if you wanted to, and once done, discarded. You'd write a config file which defined how you want your build environment to be configured (OS, compilers, deps), then a set of commands to install remaining deps (not available from what Travis predefines) and the build itself. Then more commands to test the thing, what to do after success/failure, etc. If you really wanted to push this system to its limits, you could write a wrapper which would periodically check whenever there's enough time left for another component (eg what ninja builds) and if not, let the job continue as successful, upload the results somewhere, then in another job you'd download the results of the previous build and continue building. Now, that's a mess. If you really want CI, you'll probably want https://jenkins.io/ and a dedicated server. Or a shared server and a wiiiiiide smile to its administrator so that you could evade a ban after a build or two due to resource exhaustion ;) (Eg this is how many Android ROMs are built - despite being open, Travis just can't handle something this big.) |
Alright, thanks for the info. Not doable as I suspected. Fun thought investigation though. |
I'm currently experimenting with www.wercker.com. They provide a way to overwrite the maximum build time: http://devcenter.wercker.com/docs/faq/how-to-bypass-timeouts#how-do-i-increase-the-timeout-for-individual-steps-. Right now it looks very promising, I will post an update if the build goes through. For anyone interested here is the current build status: https://app.wercker.com/gcarq/inox-patchset/runs |
@gcarq Something looks really wrong with the current build. It's at 5.5 hours and it seems to be stuck at 12335/22334. The output of the current step isn't changing either. The output for the previous build that timed out at 25 minutes went farther than this one. |
you should increase even more the time 360-600 |
@Eloston yes this is very strange, I think they have some kind of memory or cpu limit despite the unlimited job time. |
could you make this and test it at wrecker (example, it needs 30) after you put the right timeout (9*60) |
i0ve gone to unsanity |
forked your repo hardore compiling |
@triceratops1 are you making some progress? looks like your linked build also timed out about 12000-ish |
i've got 19k |
i'm trying opensuse bild (arch extra) |
@gcarq you could test it at opensuse build service YOU MUST upload the chromium-xxxxx.tar.xz (source code) i've limited bandwith, but if you've a good internet speed you can test opensuse build service (please take as inspiration my attempt) |
@triceratops1 thanks, I will check it out ASAP (probably this weekend). |
@gcarq please let me make you a small warning YOU NEED upload the chromium source code (chromium-xxx.tar.xz) the 490mb file |
@gcarq i'seen that you created and removed a travis setup, and i've two questions 1 had travis worked, or failed (too) |
@triceratops1
|
no :( but you've an ajax loader (after you upload ALL files), with right names |
At least in the webinterface of obs it is sufficient to provide the source url, not sure about osc. However according to the documentation they do not allow certain software: |
the patented parts (chrome) needs serials (api key) inox doesnt has api key with it only free code works |
You should try to use an online compriles: Travis CI
that lets the users without monster hardware help your project.
i am a long user or your browser
The text was updated successfully, but these errors were encountered: