Skip to content

Self-built buck2 cannot rebuild buck2 again #971

@thoughtpolice

Description

@thoughtpolice

I might be holding something wrong, but as of the latest tip of main, try this:

./bootstrap/reindeer --third-party-dir shim/third-party/rust buckify
./bootstrap/buck2 build --out buck-out/buck2-stage1.exe //:buck2
./bootstrap/buck2 clean ; ./bootstrap/buck2 killall ; rm -rf buck-out/v2

There's only buck2-stage1.exe available:

austin@GANON:~/src/buck2.jj$ ls buck-out
buck2-stage1.exe

Now try to rebuild a stage2 and complete the cycle:

austin@GANON:~/src/buck2.jj$ ./buck-out/buck2-stage1.exe build --out buck-out/buck2-stage2.exe //:buck2
Starting new buck2 daemon...
Connected to new buck2 daemon.
Build ID: 2c41355f-ed22-4ce3-aca6-6ea1605cdc93
Command: build.
Time elapsed: 3.4s
BUILD FAILED
From load at implicit location

Caused by:
    0: From load at prelude/prelude.bzl:8
    1: From load at prelude/native.bzl:16
    2: From load at prelude/rules.bzl:11
    3: From load at prelude/rules_impl.bzl:13
    4: Error evaluating module: `prelude//http_file.bzl`
    5: error: Unexpected parameter named `is_deferrable`
         --> prelude/http_file.bzl:32:9
          |
       32 |         is_deferrable = True,
          |         ^^^^^^^^^^^^^^^^^^^^
          |

[ble: exit 3]

I'm fairly confused by this error. is_deferrable was removed recently, after the last pre-release upload (which is where the dotslash binaries come from.)

But the resulting buck2-stage1.exe should be using a compatible prelude, shouldn't it? The error here seems to indicate that buck2-stage1.exe is using the prelude that is shipped with ./bootstrap/buck2, somehow. How is this possible?

Metadata

Metadata

Assignees

No one assigned

    Labels

    buck2 developmentRelated to the development of buck2 itselfbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions