Skip to content

Commit

Permalink
[antlir2][migration] make btrfs.new respect migration mode
Browse files Browse the repository at this point in the history
Summary:
This was still using antlir1, but worked because it did all kinds of sendstream
nonsense internally.

Now it'll respect the `PACKAGE` file settings

Test Plan:
```
❯ buck2 build --show-output fbcode//tupperware/image/virt:virt.fog_supervisor.btrfs
Buck UI: https://www.internalfb.com/buck2/7bc77940-6d81-4d58-8fab-db00039b0e62
Network: Up: 15MiB  Down: 1.7GiB  (reSessionID-7eaa66bd-cf6b-4623-a08a-7b04bd0ba425)
Jobs completed: 278811. Time elapsed: 3:01.1s.
Cache hits: 95%. Commands: 1104 (cached: 1045, remote: 0, local: 59). Fallback: 10/59
BUILD SUCCEEDED
fbcode//tupperware/image/virt:virt.fog_supervisor.btrfs buck-out/v2/gen/fbcode/a4c48ac5654ab817/tupperware/image/virt/__virt.fog_supervisor.btrfs__/image.btrfs

vmagro@devvm11640.ftw0 in fbsource
❯ sudo mount buck-out/v2/gen/fbcode/a4c48ac5654ab817/tupperware/image/virt/__virt.fog_supervisor.btrfs__/image.btrfs /var/tmp/btrfs/mnt

vmagro@devvm11640.ftw0 in fbsource
❯ ls /var/tmp/btrfs/mnt
volume

vmagro@devvm11640.ftw0 in fbsource
❯ ls /var/tmp/btrfs/mnt/volume
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  packages  proc  root  run  sbin  srv  sys  tmp  usr  var
```

Reviewed By: justintrudell

Differential Revision: D52564943

fbshipit-source-id: e0a0ee3d10769727f4bf3a60194fd6c134d3c4d2
  • Loading branch information
vmagro authored and facebook-github-bot committed Jan 5, 2024
1 parent 7d611fe commit dd14939
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 2 deletions.
3 changes: 2 additions & 1 deletion antlir/antlir2/bzl/package/btrfs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,10 @@ _btrfs = rule(
"compression_level": attrs.int(default = 3),
# used by transition
"default_os": attrs.option(attrs.string(), default = None),
"default_subvol": attrs.option(attrs.string()),
"default_subvol": attrs.option(attrs.string(), default = None),
"free_mb": attrs.option(attrs.int(), default = None),
"label": attrs.option(attrs.string(), default = None),
"labels": attrs.list(attrs.string(), default = []),
"seed_device": attrs.bool(default = False),
"subvols": attrs.option(
attrs.dict(
Expand Down
47 changes: 46 additions & 1 deletion antlir/bzl/image/package/btrfs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
# LICENSE file in the root directory of this source tree.

load("@bazel_skylib//lib:shell.bzl", "shell")
load("//antlir/antlir2/bzl/package:btrfs.bzl?v2_only", antlir2_BtrfsSubvol = "BtrfsSubvol", antlir2_btrfs = "btrfs")
load("//antlir/bzl:antlir2_shim.bzl", "antlir2_shim")
load("//antlir/bzl:bash.bzl", "wrap_bash_build_in_common_boilerplate")
load("//antlir/bzl:build_defs.bzl", "buck_genrule")
load("//antlir/bzl:loopback_opts.bzl", "normalize_loopback_opts")
Expand Down Expand Up @@ -101,7 +103,50 @@ def _new_btrfs(
antlir_rule = antlir_rule,
)

def _new_btrfs_shim(
name,
# Opts are required
opts,
# Buck `labels` to add to the resulting target; aka `tags` in fbcode.
labels = None,
visibility = None,
antlir_rule = "user-facing"):
if opts.loopback_opts.size_mb:
fail("size_mb not supported in btrfs")
if opts.loopback_opts.fat_size:
fail("fat_size not supported in btrfs")
opts_kwargs = {
"compression_level": opts.compression_level,
"default_subvol": opts.default_subvol,
"free_mb": opts.free_mb,
"label": opts.loopback_opts.label,
"labels": labels,
"seed_device": opts.seed_device,
"subvols": {
subvol_name: antlir2_BtrfsSubvol(
layer = subvol.layer,
writable = subvol.writable,
)
for subvol_name, subvol in opts.subvols.items()
},
}

if antlir2_shim.upgrade_or_shadow_package(
antlir2 = None,
name = name,
fn = antlir2_btrfs,
visibility = visibility,
fake_buck1 = struct(
fn = antlir2_shim.fake_buck1_target,
name = name,
),
**opts_kwargs
) == "upgrade":
return

_new_btrfs(name, opts, labels, visibility, antlir_rule)

btrfs = struct(
new = _new_btrfs,
new = _new_btrfs_shim,
opts = _btrfs_opts_api,
)

0 comments on commit dd14939

Please sign in to comment.