mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [ptxdist] [PATCH v2] gptfdisk: add new package
@ 2025-01-31  9:46 Jonas Rebmann
  2025-02-14  9:02 ` [ptxdist] [APPLIED] " Michael Olbrich
  0 siblings, 1 reply; 2+ messages in thread
From: Jonas Rebmann @ 2025-01-31  9:46 UTC (permalink / raw)
  To: ptxdist; +Cc: Jonas Rebmann

GPT fdisk is a set of tools to work with GUID partition tables: gdisk,
cgdisk, sgdisk and fixparts

Of particular interest to embedded devices is sgdisk, the noninteractive
tool, which, amongst other functionality, allows relocating the backup
(alternative) GPT header to the end of the disk. This may be needed
after flashing a GPT disk image created for a smaller disk size e.g. to
account for fluctuation in disk size amongst hardware revisions.

The curses based cgdisk makes use of the wide char ncurses variant. As
ptxdist currently, unlike some linux distributions, does not set up
ncursesw/ncurses.h as a symlink to ncurses.h, gptfdisk is patched to
include ncurses from the standard path.

Signed-off-by: Jonas Rebmann <jre@pengutronix.de>
---
Changes in v2:
- don't require any tool to be selected if the package is unselected
- use menuconfig submenu for gptfdisk options
- comment in menuconfig if none of the tools are selected
- Link to v1: https://lore.kernel.org/r/20250124-gptfdisk-v1-1-a612ad41fb4a@pengutronix.de
---
 ...urses-never-include-ncurses-from-ncursesw.patch | 24 +++++++
 patches/gptfdisk-1.0.10/series                     |  4 ++
 rules/gptfdisk.in                                  | 49 +++++++++++++
 rules/gptfdisk.make                                | 84 ++++++++++++++++++++++
 4 files changed, 161 insertions(+)

diff --git a/patches/gptfdisk-1.0.10/0001-gptcurses-never-include-ncurses-from-ncursesw.patch b/patches/gptfdisk-1.0.10/0001-gptcurses-never-include-ncurses-from-ncursesw.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f320e8eb1802e8b15418c5a57fa53a05d99a21c1
--- /dev/null
+++ b/patches/gptfdisk-1.0.10/0001-gptcurses-never-include-ncurses-from-ncursesw.patch
@@ -0,0 +1,24 @@
+From: Jonas Rebmann <jre@pengutronix.de>
+Date: Fri, 24 Jan 2025 15:21:29 +0100
+Subject: [PATCH] gptcurses: never include ncurses from ncursesw
+
+---
+ gptcurses.cc | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/gptcurses.cc b/gptcurses.cc
+index b47670094d73..476fc43d6cdb 100644
+--- a/gptcurses.cc
++++ b/gptcurses.cc
+@@ -23,11 +23,7 @@
+ #include <iostream>
+ #include <string>
+ #include <sstream>
+-#if defined (__APPLE__) || (__FreeBSD__)
+ #include <ncurses.h>
+-#else
+-#include <ncursesw/ncurses.h>
+-#endif
+ #include "gptcurses.h"
+ #include "support.h"
+ 
diff --git a/patches/gptfdisk-1.0.10/series b/patches/gptfdisk-1.0.10/series
new file mode 100644
index 0000000000000000000000000000000000000000..d8006ace5377ef0eeb23e2e3e4174474a53560b6
--- /dev/null
+++ b/patches/gptfdisk-1.0.10/series
@@ -0,0 +1,4 @@
+# generated by git-ptx-patches
+#tag:base --start-number 1
+0001-gptcurses-never-include-ncurses-from-ncursesw.patch
+# f271468e860c32391bf01fdd0d73b3ac  - git-ptx-patches magic
diff --git a/rules/gptfdisk.in b/rules/gptfdisk.in
new file mode 100644
index 0000000000000000000000000000000000000000..50c9d0b4c28750be629519c23ace7a522d99c804
--- /dev/null
+++ b/rules/gptfdisk.in
@@ -0,0 +1,49 @@
+## SECTION=disk_and_file
+
+menuconfig GPTFDISK
+	tristate
+	prompt "gptfdisk                      "
+	select LIBUUID
+	select LIBPOPT			if GPTFDISK_SGDISK
+	select NCURSES			if GPTFDISK_CGDISK
+	select NCURSES_WIDE_CHAR	if GPTFDISK_CGDISK
+	help
+	  GPT fdisk is a set of text-mode partitioning tools. The gdisk,
+	  cgdisk, and sgdisk programs work on Globally Unique Identifier (GUID)
+	  Partition Table (GPT) disks, rather than on the older (and once more
+	  common) Master Boot Record (MBR) partition tables.
+
+if GPTFDISK
+
+comment "At least one GPTFDISK_* option must be enabled!"
+	depends on \
+		!GPTFDISK_GDISK    && \
+		!GPTFDISK_CGDISK   && \
+		!GPTFDISK_SGDISK   && \
+		!GPTFDISK_FIXPARTS
+
+config GPTFDISK_GDISK
+	bool
+	prompt "gdisk"
+	help
+	  Interactive GUID partition table (GPT) manipulator
+
+config GPTFDISK_CGDISK
+	bool
+	prompt "cgdisk"
+	help
+	  Curses-based GUID partition table (GPT) manipulator
+
+config GPTFDISK_SGDISK
+	bool
+	prompt "sgdisk"
+	help
+	  Command-line GUID partition table (GPT) manipulator for Linux and Unix
+
+config GPTFDISK_FIXPARTS
+	bool
+	prompt "fixparts"
+	help
+ 	  MBR partition table repair utility
+
+endif
diff --git a/rules/gptfdisk.make b/rules/gptfdisk.make
new file mode 100644
index 0000000000000000000000000000000000000000..6bafcccaa02dccf508ff599dbec7bfab7a38c3ca
--- /dev/null
+++ b/rules/gptfdisk.make
@@ -0,0 +1,84 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2025 by Jonas Rebmann <jre@pengutronix.de>
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_GPTFDISK) += gptfdisk
+
+#
+# Paths and names
+#
+GPTFDISK_VERSION	:= 1.0.10
+GPTFDISK_MD5		:= 1970269eb7a97560e238611524b7797a
+GPTFDISK		:= gptfdisk-$(GPTFDISK_VERSION)
+GPTFDISK_SUFFIX		:= tar.gz
+GPTFDISK_URL		:= https://downloads.sourceforge.net/project/gptfdisk/gptfdisk/$(GPTFDISK_VERSION)/$(GPTFDISK).$(GPTFDISK_SUFFIX)
+GPTFDISK_SOURCE		:= $(SRCDIR)/$(GPTFDISK).$(GPTFDISK_SUFFIX)
+GPTFDISK_DIR		:= $(BUILDDIR)/$(GPTFDISK)
+GPTFDISK_LICENSE	:= GPL-2.0-only
+GPTFDISK_LICENSE_FILES	:= file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+GPTFDISK_TOOLS-$(PTXCONF_GPTFDISK_GDISK)	+= gdisk
+GPTFDISK_TOOLS-$(PTXCONF_GPTFDISK_CGDISK)	+= cgdisk
+GPTFDISK_TOOLS-$(PTXCONF_GPTFDISK_SGDISK)	+= sgdisk
+GPTFDISK_TOOLS-$(PTXCONF_GPTFDISK_FIXPARTS)	+= fixparts
+
+ifdef PTXCONF_GPTFDISK
+ifeq ($(strip $(GPTFDISK_TOOLS-y)),)
+$(error At least one PTXCONF_GPTFDISK_* option must be enabled)
+endif
+endif
+
+GPTFDISK_CONF_TOOL	:= NO
+
+GPTFDISK_MAKE_ENV	:= \
+	$(CROSS_ENV) \
+	PREFIX=/usr
+
+GPTFDISK_MAKE_OPT	:= \
+	TARGET=linux \
+	$(GPTFDISK_TOOLS-y)
+
+# ----------------------------------------------------------------------------
+# Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/gptfdisk.install:
+	@$(call targetinfo)
+	@$(call world/execute, GPTFDISK, \
+		install -m755 -v \
+		$(addprefix $(GPTFDISK_DIR)/,$(GPTFDISK_TOOLS-y)) \
+		$(GPTFDISK_PKGDIR)/usr/bin/)
+	@$(call touch)
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/gptfdisk.targetinstall:
+	@$(call targetinfo)
+
+	@$(call install_init, gptfdisk)
+	@$(call install_fixup, gptfdisk,PRIORITY,optional)
+	@$(call install_fixup, gptfdisk,SECTION,base)
+	@$(call install_fixup, gptfdisk,AUTHOR,"Jonas Rebmann <jre@pengutronix.de>")
+	@$(call install_fixup, gptfdisk,DESCRIPTION,"GPT disk partitioning tools")
+
+	@$(foreach tool,$(GPTFDISK_TOOLS-y), \
+		$(call install_copy, gptfdisk, 0, 0, 0755, -, /usr/bin/$(tool))$(ptx/nl))
+
+	@$(call install_finish, gptfdisk)
+
+	@$(call touch)
+
+# vim: syntax=make

---
base-commit: 1b82c74e1f1f2048cb08a381def774ea2f8e7227
change-id: 20250124-gptfdisk-b77ce7d11992

Best regards,
-- 
Jonas Rebmann <jre@pengutronix.de>




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-02-14  9:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-01-31  9:46 [ptxdist] [PATCH v2] gptfdisk: add new package Jonas Rebmann
2025-02-14  9:02 ` [ptxdist] [APPLIED] " Michael Olbrich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox