Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

compose: Support all target repos in unified mode #1657

Closed
wants to merge 4 commits into from

Conversation

jlebon
Copy link
Member

@jlebon jlebon commented Nov 2, 2018

Lots of changes here, but the last two are the major ones. Just going to copy the commit message of the last one here:

Previously, we were limiting the target repo in unified mode to be a
bare-user repo located on the same filesystem (see message of previous
commit). This patch lifts this restriction by making a distinction
between the build repo and the final target repo.

To do this, we create a bare-user repo located near the pkgcache to
take advantage of hardlinks and devino caching at commit time. And only
after committing do we essentially pull-local into the final target
repo. This of course allows us to avoid potentially pulling across the
two filesystems file objects that are already present in the target
repo.

This will be used by coreos-assembler:
coreos/coreos-assembler#190

@jlebon jlebon mentioned this pull request Nov 2, 2018
@jlebon jlebon force-pushed the pr/unified-auto-bare-user branch from 2c42309 to b9b6ae7 Compare November 2, 2018 17:32
@rh-atomic-bot
Copy link

☔ The latest upstream changes (presumably 74db308) made this pull request unmergeable. Please resolve the merge conflicts.

@jlebon jlebon force-pushed the pr/unified-auto-bare-user branch from b9b6ae7 to 43ee2b2 Compare November 2, 2018 20:30
@jlebon
Copy link
Member Author

jlebon commented Nov 2, 2018

Rebased!

@cgwalters
Copy link
Member

This fixes #1490 right?

This ensures that we always get hardlinks when checking out of the
pkgcache. This works right now because we indirectly require the target
bare-user repo and the pkgcache to be on the same filesystem by setting
`no_copy_fallback` in the core (I say "indirectly" because that setting
only enforces the workdir to be on the same filesystem as the pkgcache
repo, but since the workdir is currently placed inside the bare-user
repo...).

However, I'd like to change the requirement of a bare-user repo so that
one can commit into a repo on a different file system or a repo of a
different type (e.g. archive repo). This is prep for that.
Previously, we were limiting the target repo in unified mode to be a
bare-user repo located on the same filesystem (see message of previous
commit). This patch lifts this restriction by making a distinction
between the *build repo* and the *final* target repo.

To do this, we create a bare-user repo located near the pkgcache to
take advantage of hardlinks and devino caching at commit time. And only
after committing do we essentially `pull-local` into the final target
repo. This of course allows us to avoid potentially pulling across the
two filesystems file objects that are already present in the target
repo.

This will be used by coreos-assembler:
coreos/coreos-assembler#190

Closes: coreos#1490
@jlebon jlebon force-pushed the pr/unified-auto-bare-user branch from 43ee2b2 to ea6d835 Compare November 5, 2018 15:16
@jlebon
Copy link
Member Author

jlebon commented Nov 5, 2018

Rebased, and added Closes: #1490 footer to the commit msg!

src/app/rpmostree-compose-builtin-tree.c Outdated Show resolved Hide resolved
src/app/rpmostree-compose-builtin-tree.c Outdated Show resolved Hide resolved
@cgwalters
Copy link
Member

@rh-atomic-bot r+ 5b6ee6a

@rh-atomic-bot
Copy link

⌛ Testing commit 5b6ee6a with merge 1da4ab8...

rh-atomic-bot pushed a commit that referenced this pull request Nov 5, 2018
This ensures that we always get hardlinks when checking out of the
pkgcache. This works right now because we indirectly require the target
bare-user repo and the pkgcache to be on the same filesystem by setting
`no_copy_fallback` in the core (I say "indirectly" because that setting
only enforces the workdir to be on the same filesystem as the pkgcache
repo, but since the workdir is currently placed inside the bare-user
repo...).

However, I'd like to change the requirement of a bare-user repo so that
one can commit into a repo on a different file system or a repo of a
different type (e.g. archive repo). This is prep for that.

Closes: #1657
Approved by: cgwalters
rh-atomic-bot pushed a commit that referenced this pull request Nov 5, 2018
Previously, we were limiting the target repo in unified mode to be a
bare-user repo located on the same filesystem (see message of previous
commit). This patch lifts this restriction by making a distinction
between the *build repo* and the *final* target repo.

To do this, we create a bare-user repo located near the pkgcache to
take advantage of hardlinks and devino caching at commit time. And only
after committing do we essentially `pull-local` into the final target
repo. This of course allows us to avoid potentially pulling across the
two filesystems file objects that are already present in the target
repo.

This will be used by coreos-assembler:
coreos/coreos-assembler#190

Closes: #1490

Closes: #1657
Approved by: cgwalters
@rh-atomic-bot
Copy link

💔 Test failed - status-atomicjenkins

@cgwalters
Copy link
Member

@rh-atomic-bot retry

@rh-atomic-bot
Copy link

⌛ Testing commit 5b6ee6a with merge dfb7bd8...

rh-atomic-bot pushed a commit that referenced this pull request Nov 5, 2018
Previously, we were limiting the target repo in unified mode to be a
bare-user repo located on the same filesystem (see message of previous
commit). This patch lifts this restriction by making a distinction
between the *build repo* and the *final* target repo.

To do this, we create a bare-user repo located near the pkgcache to
take advantage of hardlinks and devino caching at commit time. And only
after committing do we essentially `pull-local` into the final target
repo. This of course allows us to avoid potentially pulling across the
two filesystems file objects that are already present in the target
repo.

This will be used by coreos-assembler:
coreos/coreos-assembler#190

Closes: #1490

Closes: #1657
Approved by: cgwalters
@rh-atomic-bot
Copy link

☀️ Test successful - status-atomicjenkins
Approved by: cgwalters
Pushing dfb7bd8 to master...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants