+infra-dev,machenbach On Fri, Dec 16, 2016 at 8:18 PM, Jeremy Roman <[email protected]> wrote:
> My workflow has been to have two repositories (a standalone one and a > Chromium one), but with the standalone one added as a remote of the > chromium one. > > Mine are /src/chromium/src and /src/v8/v8 > > $ cd /src/chromium/src/v8 > $ git remote add standalone /src/v8/v8 > > Then I can fetch revisions from the standalone repo, check them out, > push/pull, etc., and do the final upload from the standalone supported repo. > > Works well enough for me. > > > On Fri, Dec 16, 2016 at 12:36 PM, Jakob Kummerow <[email protected]> > wrote: > >> Working on V8 from within a Chromium checkout's src/v8/ directory is not >> a supported workflow. There are various ways to hack it, but The Official >> Way is to get a separate V8 checkout with "fetch v8" (which should be >> fairly quick, so the only cost is a bit of disk space). >> >> For testing local changes, I have a secondary workdir of my standalone V8 >> checkout in my Chromium checkout (which I created with git-new-workdir, >> apparently "git worktree" is how you'd do it now), which I rename as needed >> (because symlinking used to confuse ninja, not sure if it still does): >> # setup >> $ cd /work/v8/ >> $ git worktree add /work/chromium/src/v8-custom >> >> # implement new feature >> $ git checkout -b my-feature >> $ ... >> $ git commit -am 'yay new feature' >> >> # test feature >> $ cd /work/chromium/src >> $ git pull && gclient sync # let "gclient sync" see the official "v8" >> directory >> $ mv v8 v8-official >> $ mv v8-custom v8 >> $ (cd v8; git checkout -f my-feature) >> $ ninja ... >> >> # cleanup when done >> $ mv v8 v8-custom >> $ mv v8-official v8 >> >> # land it >> $ cd /work/v8/ >> $ git cl upload >> >> You can iterate on the patch with: >> $ cd /work/v8/ >> $ edit... >> $ git commit -a --amend >> $ cd /work/chromium/src >> $ (cd v8; git checkout -f my-feature) >> $ ninja ... >> >> On Fri, Dec 16, 2016 at 1:10 AM, Daniel Cheng <[email protected]> >> wrote: >> >>> I can't say I recommend this, but for limited development, I just >>> upload with --bypass-hooks and let the v8_presubmit bot make sure I didn't >>> do anything bad. >>> It's probably still worth pulling down an actual v8 checkout; I found >>> running the v8 tests to be a bit painful without an actual v8 checkout. >>> >>> >>> Daniel >>> >>> On Thu, Dec 15, 2016 at 8:56 PM Trent Apted <[email protected]> wrote: >>> >>>> I encountered something similar with WebRTC. It has a helpful message >>>> when you try to `git cl upload` (basically: you *must* create a separate >>>> checkout): >>>> >>>> Creating CLs from this location is not supported! Please make sure the >>>> current >>>> working directory is the parent directory of this directory. >>>> If you're working with a Chromium checkout, you'll have to create a >>>> full WebRTC >>>> checkout and upload a CL from that. See >>>> https://webrtc.org/native-code/development/ for instructions. >>>> >>>> >>>> >>>> V8 has instructions here - https://github.com/v8/v8/wiki/Using%20Git - >>>> that seem up-to-date. (tl;dr: `fetch v8` should work) >>>> >>>> You might be able to save some electrons with something like >>>> >>>> $ mkdir v8 # at the level above your chromium/.gclient >>>> $ gclient-new-workdir.py chromium/src/v8 v8/v8 >>>> $ cd v8/v8 >>>> $ git checkout master >>>> $ cd .. >>>> $ cat -> .gclient >>>> solutions = [ >>>> { >>>> "url": "https://chromium.googlesource.com/v8/v8.git", >>>> "managed": False, >>>> "name": "v8", >>>> "deps_file": "DEPS", >>>> "custom_deps": {}, >>>> }, >>>> ] >>>> ^D >>>> >>>> That will symlink all the git objects for v8 so they're not >>>> re-downloaded, and share disk blocks. But you'll still get dupes of v8's >>>> DEPS. >>>> >>>> Getting much more creative probably risks wedging your chromium >>>> checkout into a weird state :/ >>>> >>>> On 16 December 2016 at 15:18, Matt Giuca <[email protected]> wrote: >>>> >>>> Hi, >>>> >>>> TL;DR: How do you work on V8 (build, test and upload CLs) from within >>>> the v8 subrepo of a Chromium checkout (without having to make a separate v8 >>>> checkout)? >>>> >>>> I was helping Nick get started on V8 development within Chromium and we >>>> couldn't find any way to run the presubmit from within the v8 directory >>>> that's checked out inside the chromium repo. >>>> >>>> That is, we would like to be able to do: >>>> ~/chrome/src$ cd v8/src >>>> ~/chrome/src/v8/src$ git cl presubmit >>>> >>>> However, if you do that, you get: >>>> >>>> Traceback (most recent call last): >>>> File "/usr/local/google/home/mgiuca/chrome/depot_tools/git_cl.py", >>>> line 5654, in <module> >>>> sys.exit(main(sys.argv[1:])) >>>> File "/usr/local/google/home/mgiuca/chrome/depot_tools/git_cl.py", >>>> line 5636, in main >>>> return dispatcher.execute(OptionParser(), argv) >>>> File "/usr/local/google/home/mgiuca/chrome/depot_tools/subcommand.py", >>>> line 252, in execute >>>> return command(parser, args[1:]) >>>> File "/usr/local/google/home/mgiuca/chrome/depot_tools/git_cl.py", >>>> line 4222, in CMDpresubmit >>>> change=cl.GetChange(base_branch, None)) >>>> File "/usr/local/google/home/mgiuca/chrome/depot_tools/git_cl.py", >>>> line 1685, in RunHook >>>> gerrit_obj=self._codereview_impl.GetGerritObjForPresubmit()) >>>> File >>>> "/usr/local/google/home/mgiuca/chrome/depot_tools/presubmit_support.py", >>>> line 1247, in DoPresubmitChecks >>>> results += executer.ExecPresubmitScript(presubmit_script, filename) >>>> File >>>> "/usr/local/google/home/mgiuca/chrome/depot_tools/presubmit_support.py", >>>> line 1157, in ExecPresubmitScript >>>> result = eval(function_name + '(*__args)', context) >>>> File "<string>", line 1, in <module> >>>> File "<string>", line 287, in CheckChangeOnCommit >>>> File "<string>", line 260, in _CommonChecks >>>> File "<string>", line 101, in _CheckUnwantedDependencies >>>> ImportError: No module named checkdeps >>>> >>>> Turns out this is because the v8 directory is missing the buildtools >>>> subdirectory which is checked out by its DEPS. Basically, when gclient >>>> checks out all the subrepos of chrome (including v8) it doesn't recursively >>>> check out the DEPS' DEPS. So we can't submit v8 from there and maybe some >>>> other things are broken too. >>>> >>>> If you make a separate checkout of v8 (outside of chrome), and run >>>> gclient sync, it's fine. But then you can't test your changes in Chrome, >>>> resulting in tedious copying of git patch data back and forth between the >>>> two checkouts of v8. It would be much better if you could just do the full >>>> v8 edit/build/test/upload workflow from within the v8 checkout inside >>>> chrome. >>>> >>>> I don't want gclient to be recursive by default. I just want to be able >>>> to set it up so it fetches v8. >>>> >>>> We found this old (looks obsolete) documentation describing exactly how >>>> to do this: >>>> http://www.chromium.org/developers/how-tos/chromium-modulari >>>> zation#Advanced_Usage >>>> >>>> - It gives the example of v8 but then says "The V8 example is >>>> somewhat simple since V8 does not itself have other dependencies." >>>> That's >>>> no longer true since V8 *does* have other dependencies. This example >>>> doesn't get what we want. >>>> - Then it goes on to say how to do webkit (no longer applicable) >>>> and get webkit's dependencies. But we tried setting up .gclient with v8 >>>> similar to how webkit is set up there, and it didn't work. I won't go >>>> into >>>> the details of how it didn't work (can discuss on request). >>>> >>>> How do you do this? I'd imagine most v8 engineers have a workflow that >>>> solves this problem. There must be a way to have gclient check out the DEPS >>>> of v8 without needing to make a separate v8 checkout. >>>> >>>> Thanks >>>> >>>> Matt & Nick >>>> >>>> -- >>>> -- >>>> Chromium Developers mailing list: [email protected] >>>> View archives, change email options, or unsubscribe: >>>> http://groups.google.com/a/chromium.org/group/chromium-dev >>>> >>>> >>>> -- >>>> -- >>>> Chromium Developers mailing list: [email protected] >>>> View archives, change email options, or unsubscribe: >>>> http://groups.google.com/a/chromium.org/group/chromium-dev >>>> >>> -- >>> -- >>> v8-dev mailing list >>> [email protected] >>> http://groups.google.com/group/v8-dev >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "v8-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- >> -- >> Chromium Developers mailing list: [email protected] >> View archives, change email options, or unsubscribe: >> http://groups.google.com/a/chromium.org/group/chromium-dev >> > > -- > -- > Chromium Developers mailing list: [email protected] > View archives, change email options, or unsubscribe: > http://groups.google.com/a/chromium.org/group/chromium-dev > -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
