Erstellt vor 2 Monaten

Geschlossen vor 8 Wochen

Zuletzt geändert vor 5 Wochen

#2970 closed defect (fixed)

freetz_functions: Verwendung von tar inkonsistent bzw. inkompatibel ab Version 1.30

Erstellt von: f_666 Verantwortlicher: er13
Priorität: normal Meilenstein: freetz-next
Komponente: build-system Version: devel
Stichworte: tar collect_pkg_files freetz_functions Beobachter:
Product Id: Firmware Version:

Beschreibung

In der Datei tools/freetz_functions gibt es zur Berechnung des benötigten Speicherplatzes eines Paketes die Funktion collect_pkg_files.
Diese Funktion ruft tar auf, und nur tar, nicht "$TAR" oder "$TAR_GNU". Es wird also tar vom Hostsystem benutzt.
Ab tar Version 1.30 funktioniert der Aufruf, so wie er in der Funktion collect_pkg_files gemacht wird, nicht mehr:

tar: The following options were used after any non-optional arguments in archive create or update mode.  These options are positional and affect only arguments that follow them.  Please, rearrange them properly.
tar: --exclude-from ‘../.exclude’ has no effect
tar: Exiting with failure status due to previous errors

Siehe https://www.gnu.org/software/tar/manual/html_node/Position_002dSensitive-Options.html.

Der angehängte Patch macht zwei Dinge:

  • Benutzen von $TAR_GNU anstatt des Host tars
  • Ändern der Parameterreihenfolge, so dass es auch mit tar ab Version 1.30 funktioniert

Weitere inkompatible Aufrufe von tar habe ich in Freetz nicht gefunden.

Anhänge (2)

tar_1.30_fix.diff (498 Byte) - hinzugefügt von f_666 vor 2 Monaten.
toolchain_tar_fix.patch (746 Byte) - hinzugefügt von f_666 vor 5 Wochen.

Alle Anhänge herunterladen als: .zip

Änderungshistorie (6)

Geändert vor 2 Monaten durch f_666

comment:1 Geändert vor 8 Wochen durch er13

  • Lösung auf fixed gesetzt
  • Status von new nach closed geändert
  • Verantwortlicher auf er13 gesetzt

In 14762:

collect_pkg_files-function:

  • use tar provided by Freetz instead of that of the host system
  • reorder options to be compatible with tar versions ≥ 1.30
  • by f_666, closes #2970

comment:2 Geändert vor 5 Wochen durch f_666

In der Datei toolchain/make/toolchain-common.in im Target TOOLCHAIN_CREATE_TARBALL ist noch ein zur neuen Tar Version inkompatibler Aufruf.

Der angehängte Patch behebt das.

Geändert vor 5 Wochen durch f_666

comment:3 Geändert vor 5 Wochen durch er13

In 14827:

tar: fix yet another tar ≥ 1.30 incompatibility (by f-666)

refs #2970

comment:4 Geändert vor 5 Wochen durch shirocco88

so wie es aussieht gibt es noch weitere Skripte, die nicht zur neuen Tar Version bzw. deren Syntax passen:

http://freetz.org/browser/trunk/include/make/020-helper-functions.mk
SNIP
# $1: from dir
# $2: to dir
# $3: (optional) tar parameters specifying files to be copied, default all except for version control and freetz build-system related files
define COPY_USING_TAR

$(TAR) -C $(strip $(2)) -cf - \

—exclude=.svn \
—exclude=.gitignore \
—exclude=.build-prereq-checked \
—exclude=.unpacked \
—exclude=.configured \
—exclude=.compiled \
—exclude=.installed \
$(if $(strip $(3)),$(strip $(3)),.) \

| $(TAR) -xf - -C $(strip $(2));

endef

Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.