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 <[email protected]> --- ...urses-never-include-ncurses-from-ncursesw.patch | 24 +++++++ patches/gptfdisk-1.0.10/series | 4 ++ rules/gptfdisk.in | 42 +++++++++++ rules/gptfdisk.make | 82 ++++++++++++++++++++++ 4 files changed, 152 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 <[email protected]> +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..6632effd34e7ad30f06cc93f3f57b8b3ceffc9a3 --- /dev/null +++ b/rules/gptfdisk.in @@ -0,0 +1,42 @@ +## SECTION=disk_and_file + +config 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 + +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..29455dc9332bbe33ac14afb37c170dab2ceeb35e --- /dev/null +++ b/rules/gptfdisk.make @@ -0,0 +1,82 @@ +# -*-makefile-*- +# +# Copyright (C) 2025 by Jonas Rebmann <[email protected]> +# +# 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 + +ifeq ($(strip $(GPTFDISK_TOOLS-y)),) +$(error At least one PTXCONF_GPTFDISK_* option must be enabled) +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 <[email protected]>") + @$(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 <[email protected]>
