[meta-filesystems][PATCH 1/2] exfatprogs: add new recipe


Christophe Vu-Brugier
 

From: Christophe Vu-Brugier <christophe.vu-brugier@...>

exfatprogs provides utilities to create, modify, and check exFAT file
systems on Linux. The developers of exfatprogs also maintain the Linux
kernel exFAT driver.

exfatprogs has replaced exfat-utils in Debian bookworm.

References:
* https://github.com/exfatprogs/exfatprogs/
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1002871

Signed-off-by: Christophe Vu-Brugier <christophe.vu-brugier@...>
---
.../exfatprogs/exfatprogs_1.2.0.bb | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 meta-filesystems/recipes-utils/exfatprogs/exfatprogs_1.2.0.bb

diff --git a/meta-filesystems/recipes-utils/exfatprogs/exfatprogs_1.2.0.bb b/meta-filesystems/recipes-utils/exfatprogs/exfatprogs_1.2.0.bb
new file mode 100644
index 000000000..0b26a215b
--- /dev/null
+++ b/meta-filesystems/recipes-utils/exfatprogs/exfatprogs_1.2.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "exFAT filesystem userspace utilities"
+DESCRIPTION = "\
+As new exfat filesystem is merged into linux-5.7 kernel, exfatprogs is \
+created as an official userspace utilities that contain all of the standard \
+utilities for creating and fixing and debugging exfat filesystem in linux \
+system. The goal of exfatprogs is to provide high performance and quality \
+at the level of exfat utilities in windows. And this software is licensed \
+under the GNU General Public License Version 2."
+HOMEPAGE = "https://github.com/${BPN}/${BPN}"
+SECTION = "universe/otherosfs"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz"
+SRC_URI[sha256sum] = "56d9a49465deafc367d428afc71c8098705a30ee19a3cdf3c5320650b8880742"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+UPSTREAM_CHECK_REGEX = "${BPN}-(?P<pver>\d+(\.\d+)+)"
+
+inherit autotools
+
+RCONFLICTS:${PN} = "exfat-utils"
+RREPLACES:${PN} = "exfat-utils"
--
2.39.2


Martin Jansa
 

Do we need
RPROVIDES:${PN} = "exfat-utils"
as well?

It used to be necessary for automatic update from one package to its replacement at least with opkg (I haven't tried on target migrations for quite some time now).

On Tue, Mar 28, 2023 at 8:48 AM Christophe Vu-Brugier <cvubrugier@...> wrote:
From: Christophe Vu-Brugier <christophe.vu-brugier@...>

exfatprogs provides utilities to create, modify, and check exFAT file
systems on Linux. The developers of exfatprogs also maintain the Linux
kernel exFAT driver.

exfatprogs has replaced exfat-utils in Debian bookworm.

References:
 * https://github.com/exfatprogs/exfatprogs/
 * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1002871

Signed-off-by: Christophe Vu-Brugier <christophe.vu-brugier@...>
---
 .../exfatprogs/exfatprogs_1.2.0.bb            | 23 +++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 meta-filesystems/recipes-utils/exfatprogs/exfatprogs_1.2.0.bb

diff --git a/meta-filesystems/recipes-utils/exfatprogs/exfatprogs_1.2.0.bb b/meta-filesystems/recipes-utils/exfatprogs/exfatprogs_1.2.0.bb
new file mode 100644
index 000000000..0b26a215b
--- /dev/null
+++ b/meta-filesystems/recipes-utils/exfatprogs/exfatprogs_1.2.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "exFAT filesystem userspace utilities"
+DESCRIPTION = "\
+As new exfat filesystem is merged into linux-5.7 kernel, exfatprogs is \
+created as an official userspace utilities that contain all of the standard \
+utilities for creating and fixing and debugging exfat filesystem in linux \
+system. The goal of exfatprogs is to provide high performance and quality \
+at the level of exfat utilities in windows. And this software is licensed \
+under the GNU General Public License Version 2."
+HOMEPAGE = "https://github.com/${BPN}/${BPN}"
+SECTION = "universe/otherosfs"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz"
+SRC_URI[sha256sum] = "56d9a49465deafc367d428afc71c8098705a30ee19a3cdf3c5320650b8880742"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+UPSTREAM_CHECK_REGEX = "${BPN}-(?P<pver>\d+(\.\d+)+)"
+
+inherit autotools
+
+RCONFLICTS:${PN} = "exfat-utils"
+RREPLACES:${PN} = "exfat-utils"
--
2.39.2





Christophe Vu-Brugier
 

Hi Martin,

Thank you for your code review.

Martin Jansa wrote :
Do we need
RPROVIDES:${PN} = "exfat-utils"
as well?

I hesitated on this one.

While exfatprogs provides the same tools as exfat-utils, there are a few differences.
 1. In exfat-utils, `mkfs.exfat` is a symlink to `mkexfatfs` ; exfatprogs does not provide `mkexfatfs`.
 2. Some options have different names. For instance, exfat-utils uses "-n" to set the volume label whereas exfatprogs uses "-L" (like e2fsprogs, xfsprogs).

How do we convey the message that "exfatprogs replaces exfat-utils but is not 100% compatible"?

Also, I believe that exfatprogs is better than exfat-utils.
For instance, exfatprogs correctly format drives whose sector size is 4096 bytes whereas exfat-utils does not.

With best regards,

--
Christophe Vu-Brugier



Martin Jansa
 

On Tue, Mar 28, 2023 at 3:25 PM Christophe Vu-Brugier <cvubrugier@...> wrote:
While exfatprogs provides the same tools as exfat-utils, there are a few differences.
 1. In exfat-utils, `mkfs.exfat` is a symlink to `mkexfatfs` ; exfatprogs does not provide `mkexfatfs`.
 2. Some options have different names. For instance, exfat-utils uses "-n" to set the volume label whereas exfatprogs uses "-L" (like e2fsprogs, xfsprogs).

How do we convey the message that "exfatprogs replaces exfat-utils but is not 100% compatible"?

Also, I believe that exfatprogs is better than exfat-utils.
For instance, exfatprogs correctly format drives whose sector size is 4096 bytes whereas exfat-utils does not.

In 2/2 you've removed exfat-utils so users of exfat-utils will have to deal with this one way or another.

Otherwise existing images will stay "stuck" with some old version of exfat-utils and package manager won't "update" them to exfatprogs.

So it might be tricky, but if you're confident enough to remove the recipe and to set RREPLACES/RCONFLICTS in package, then I think RPROVIDES doesn't make it more dangerous :) - probably less, because on target update on older image will end with the same exfatprogs as freshly baked image.

Regards,