Re: [Rpm-maint] [rpm-software-management/rpm] Add FA_REFLINK file action (PR #2557)

2023-09-01 Thread Richard Phibel
@pmatilai Thanks for the comments. I tried to address them. Limiting reflinking 
to whole files would be a serious limitation. We wouldn't be able to use the 
RPM extents format. And I imagine that other users might like to have the 
possibility to reflink partial files.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2557#issuecomment-1702865171
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Add FA_REFLINK file action (PR #2557)

2023-09-01 Thread Richard Phibel
@rphibel pushed 1 commit.

f659678235ea6839e924dec94d39f8fba272c139  Add FA_REFLINK file action

-- 
View it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2557/files/6aff1b9f869f4ca268a48830ccd338ed1966e04d..f659678235ea6839e924dec94d39f8fba272c139
You are receiving this because you are subscribed to this thread.

Message ID: 
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Hyperscale (PR #2621)

2023-08-20 Thread Richard Phibel
Closed #2621.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2621#event-10138132553
You are receiving this because you are subscribed to this thread.

Message ID: 
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [rpm-software-management/rpm] Hyperscale (PR #2621)

2023-08-20 Thread Richard Phibel

You can view, comment on, or merge this pull request online at:

  https://github.com/rpm-software-management/rpm/pull/2621

-- Commit Summary --

  * RPM with Copy on Write
  * Fix stack overflow
  * Fix issue for transaction with transcoded and non-transcoded packages
  * Add CI

-- File Changes --

A .github/workflows/ci.yaml (58)
M .gitignore (1)
M CMakeLists.txt (3)
M build/pack.c (2)
M include/rpm/rpmcli.h (10)
M include/rpm/rpmlib.h (9)
M include/rpm/rpmpgp.h (9)
M include/rpm/rpmte.h (2)
M include/rpm/rpmtypes.h (3)
M lib/CMakeLists.txt (1)
M lib/fsm.c (30)
M lib/package.c (36)
M lib/rpmchecksig.c (116)
A lib/rpmextents.c (110)
A lib/rpmextents_internal.h (58)
M lib/rpmlead.c (43)
M lib/rpmlead.h (37)
M lib/rpmplugin.h (9)
M lib/rpmplugins.c (92)
M lib/rpmplugins.h (17)
M lib/rpmte.c (5)
M lib/transaction.c (29)
M macros.in (1)
M plugins/CMakeLists.txt (1)
A plugins/reflink.c (401)
A rpm2extents.c (708)
M rpmio/rpmpgp.c (10)
M rpmio/rpmpgp_internal.c (18)
M rpmio/rpmpgpval.h (18)
M scripts/CMakeLists.txt (1)
A scripts/rpm2extents_dump (94)
M sign/rpmgensig.c (2)
M tests/CMakeLists.txt (1)
M tests/atlocal.in (22)
A tests/rpm2extents.at (151)
M tests/rpmtests.at (1)

-- Patch Links --

https://github.com/rpm-software-management/rpm/pull/2621.patch
https://github.com/rpm-software-management/rpm/pull/2621.diff

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2621
You are receiving this because you are subscribed to this thread.

Message ID: rpm-software-management/rpm/pull/2...@github.com
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [rpm-software-management/rpm] Add FA_REFLINK file action (PR #2557)

2023-06-27 Thread Richard Phibel
This PR adds a new  `FA_REFLINK` file action. This action reflinks a file 
instead of doing a copy. 

This can be used as follows:
- plugins call `rpmfilesSetFcr` with a 
[`file_clone_range`](https://man7.org/linux/man-pages/man2/ioctl_ficlonerange.2.html)
 structure containing reflink information
- they call `rpmfsSetAction` to set the `FA_REFLINK` action. 
- RPM will try to reflink the file and fall back to copying if reflinking fails


You can view, comment on, or merge this pull request online at:

  https://github.com/rpm-software-management/rpm/pull/2557

-- Commit Summary --

  * Add FA_REFLINK file action

-- File Changes --

M include/rpm/rpmfi.h (8)
M include/rpm/rpmfiles.h (3)
M lib/fsm.c (9)
M lib/fsm.h (2)
M lib/rpmfi.c (86)
M lib/rpmfs.h (1)
M lib/transaction.c (4)

-- Patch Links --

https://github.com/rpm-software-management/rpm/pull/2557.patch
https://github.com/rpm-software-management/rpm/pull/2557.diff

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2557
You are receiving this because you are subscribed to this thread.

Message ID: rpm-software-management/rpm/pull/2...@github.com
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Create content handler plugin hook (PR #2416)

2023-06-20 Thread Richard Phibel
Also we still need a way for the plugin to claim ownership of a package to 
trigger the reflinking during install.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2416#issuecomment-1598860857
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Create content handler plugin hook (PR #2416)

2023-06-20 Thread Richard Phibel
Thanks for the valuable comments. I will look into creating the new FA_REFLINK 
file action. For the transcoding part, if we unpack the package files in a 
directory, I think we still need to keep the package header somewhere for rpm 
to process it, but this could indeed be a good approach. I will look into it as 
well.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2416#issuecomment-1598688831
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Create content handler plugin hook (PR #2416)

2023-03-22 Thread Richard Phibel
@pmatilai @DemiMarie Did you get a chance to have a look at this?

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2416#issuecomment-1479478779
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Create content handler plugin hook (PR #2416)

2023-03-07 Thread Richard Phibel
@rphibel pushed 1 commit.

8a7cd8139b759d1711273839a6502333e3c0f914  Create content handler plugin hook

-- 
View it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2416/files/5965d2be5b80eea738b767a5b48c5bff50c87da3..8a7cd8139b759d1711273839a6502333e3c0f914
You are receiving this because you are subscribed to this thread.

Message ID: 
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Create content handler plugin hook (PR #2416)

2023-03-07 Thread Richard Phibel
@rphibel pushed 1 commit.

5965d2be5b80eea738b767a5b48c5bff50c87da3  Create content handler plugin hook

-- 
View it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2416/files/82b6cfe2cfdc981cc7fcda4ecd473c8729aa6920..5965d2be5b80eea738b767a5b48c5bff50c87da3
You are receiving this because you are subscribed to this thread.

Message ID: 
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [rpm-software-management/rpm] Create content handler plugin hook (PR #2416)

2023-03-07 Thread Richard Phibel
### Description
This change creates a new `content_handler` plugin hook. This hook can be used 
by plugins to claim responsability for the package payload. The plugin will 
then be responsible for:
- reading the payload
- verifying it
- installing the files

The main motivation for this change is to enable features like 
[RPMCoW](https://fedoraproject.org/wiki/Changes/RPMCoW) where the package 
payload is not in a `cpio` format.
You can view, comment on, or merge this pull request online at:

  https://github.com/rpm-software-management/rpm/pull/2416

-- Commit Summary --

  * Create content handler plugin hook

-- File Changes --

M include/rpm/rpmte.h (62)
M include/rpm/rpmts.h (12)
M include/rpm/rpmtypes.h (10)
M lib/depends.c (16)
M lib/fsm.c (101)
M lib/fsm.h (14)
M lib/rpmplugin.h (12)
M lib/rpmplugins.c (28)
M lib/rpmplugins.h (9)
M lib/rpmte.c (38)
M lib/transaction.c (34)

-- Patch Links --

https://github.com/rpm-software-management/rpm/pull/2416.patch
https://github.com/rpm-software-management/rpm/pull/2416.diff

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2416
You are receiving this because you are subscribed to this thread.

Message ID: rpm-software-management/rpm/pull/2...@github.com
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] API improvement to accommodate for RPM CoW (PR#1470) (Discussion #2057)

2023-02-20 Thread Richard Phibel
Thanks a lot for these comments. I think I have a better idea of what I need to 
do. I will work on a new implementation.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/discussions/2057#discussioncomment-5055827
You are receiving this because you are subscribed to this thread.

Message ID: 
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [rpm-software-management/rpm] RPM with Copy on Write (PR #2378)

2023-02-01 Thread Richard Phibel
# Description
This is a refactoring of PR 
[#1470](https://github.com/rpm-software-management/rpm/pull/1470).
The RPM CoW plugin is refactored to register as owner of payloads transcoded by 
`rpm2extents` as suggested in comment 
[#2057](https://github.com/rpm-software-management/rpm/discussions/2057#discussioncomment-2897701).
# How it works
I defined 2 new fields of type `rpmPlugin` (with associated getters and 
setters) in `rpmte` structure:
- 
[`customArchiveReader`](https://github.com/rphibel/rpm/blob/8de078508954e005ba0c974389979070cfe9431d/lib/rpmte.c#L85)
- 
[`customFileInstaller`](https://github.com/rphibel/rpm/blob/8de078508954e005ba0c974389979070cfe9431d/lib/rpmte.c#L86)

When a plugin wants to register as an archive reader for a package, it sets the 
field `customArchiveReader` in the [`psm_pre` 
](https://github.com/rphibel/rpm/blob/8de078508954e005ba0c974389979070cfe9431d/plugins/reflink.c#L165)stage.
Similarly, if it wants to register as a file installer it sets the 
`customFileInstaller` field.

Then in 
[`fsm.c`](https://github.com/rphibel/rpm/blob/8de078508954e005ba0c974389979070cfe9431d/lib/fsm.c#L849),
 if these fields are set, archive reading, file installation is deferred to the 
plugin.

You can view, comment on, or merge this pull request online at:

  https://github.com/rpm-software-management/rpm/pull/2378

-- Commit Summary --

  * RPM with Copy on Write
  * RPM with Copy on Write
  * RPM CoW: use registration model for plugin

-- File Changes --

M CMakeLists.txt (5)
M build/pack.c (2)
M include/rpm/rpmcli.h (10)
M include/rpm/rpmlib.h (9)
M include/rpm/rpmpgp.h (9)
M include/rpm/rpmte.h (30)
M include/rpm/rpmtypes.h (3)
M lib/CMakeLists.txt (1)
M lib/fsm.c (138)
M lib/package.c (36)
M lib/rpmchecksig.c (116)
A lib/rpmextents.c (110)
A lib/rpmextents_internal.h (58)
M lib/rpmlead.c (43)
M lib/rpmlead.h (37)
M lib/rpmplugin.h (9)
M lib/rpmplugins.c (50)
M lib/rpmplugins.h (18)
M lib/rpmte.c (31)
M lib/transaction.c (29)
M macros.in (1)
M plugins/CMakeLists.txt (1)
A plugins/reflink.c (402)
A rpm2extents.c (701)
M rpmio/rpmpgp.c (10)
M rpmio/rpmpgp_internal.c (18)
M rpmio/rpmpgpval.h (18)
M scripts/CMakeLists.txt (1)
A scripts/rpm2extents_dump (94)
M sign/rpmgensig.c (2)
M tests/CMakeLists.txt (1)
M tests/atlocal.in (22)
A tests/rpm2extents.at (151)
M tests/rpmtests.at (1)

-- Patch Links --

https://github.com/rpm-software-management/rpm/pull/2378.patch
https://github.com/rpm-software-management/rpm/pull/2378.diff

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2378
You are receiving this because you are subscribed to this thread.

Message ID: rpm-software-management/rpm/pull/2...@github.com
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] API improvement to accommodate for RPM CoW (PR#1470) (Discussion #2057)

2023-01-23 Thread Richard Phibel
@pmatilai Hello, I was wondering if you had a chance to have a look at my 
proposal? Please let me know if this is unclear or if you need more details.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/discussions/2057#discussioncomment-4762243
You are receiving this because you are subscribed to this thread.

Message ID: 
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] API improvement to accommodate for RPM CoW (PR#1470) (Discussion #2057)

2023-01-09 Thread Richard Phibel
Hello @pmatilai,

I work at Meta with @chantra and @malmond77 . I am implementing the new API for 
the RPM CoW plugin based on your comment. This is what I have implemented so 
far:

I defined 2 new fields of type `rpmPlugin` (with associated getters and 
setters) in `rpmte` structure:
- 
[`customArchiveReader`](https://github.com/rphibel/rpm/blob/8de078508954e005ba0c974389979070cfe9431d/lib/rpmte.c#L85)
- 
[`customFileInstaller`](https://github.com/rphibel/rpm/blob/8de078508954e005ba0c974389979070cfe9431d/lib/rpmte.c#L86)

When a plugin wants to register as an archive reader for a package, it sets the 
field `customArchiveReader` in the [`psm_pre` 
](https://github.com/rphibel/rpm/blob/8de078508954e005ba0c974389979070cfe9431d/plugins/reflink.c#L165)stage.
Similarly, if it wants to register as a file installer it sets the 
`customFileInstaller` field.

Then in 
[`fsm.c`](https://github.com/rphibel/rpm/blob/8de078508954e005ba0c974389979070cfe9431d/lib/fsm.c#L849),
 if these fields are set, archive reading, file installation is deferred to the 
plugin.

Here is the code:
https://github.com/rphibel/rpm/compare/cow_denylist_rebased...cow_denylist_refactoring

Could you please let me know if this is what you had in mind?

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/discussions/2057#discussioncomment-4633129
You are receiving this because you are subscribed to this thread.

Message ID: 
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [rpm-software-management/rpm] Fix case of LIBLZMA_FOUND variable (PR #2337)

2023-01-03 Thread Richard Phibel
In pkg_check_modules command, LIBLZMA is all uppercase. So in variable 
LIBLZMA_FOUND, LIBLZMA should also be all uppercase.
You can view, comment on, or merge this pull request online at:

  https://github.com/rpm-software-management/rpm/pull/2337

-- Commit Summary --

  * Fix case of LIBLZMA_FOUND variable

-- File Changes --

M CMakeLists.txt (2)

-- Patch Links --

https://github.com/rpm-software-management/rpm/pull/2337.patch
https://github.com/rpm-software-management/rpm/pull/2337.diff

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2337
You are receiving this because you are subscribed to this thread.

Message ID: rpm-software-management/rpm/pull/2...@github.com
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint