Preserve only necessary metadata during install

"cp -a" tries to preserve all attributes if possible. This implies
preserving mode, any ACL, xattr permissions, and security context.

In some cases (such as fakeroot), it is not possible to preserve that
all attributes are preserved.

  cp: failed to preserve ownership for /tmp/.pkgmk/pkg/usr/share/kbd/keymaps/i386/qwertz/sr-latin.map.gz: Operation not supported

To avoid this, we will require that only the necessary attributes be
preserved. It is important for us to preserve the simlinks.

Signed-off-by: Alexey Gladkov <legion@kernel.org>
This commit is contained in:
Alexey Gladkov 2025-09-10 10:45:25 +02:00
parent 5264edbf92
commit db82eb6f86
No known key found for this signature in database
GPG Key ID: A45ABA544CFFD434

View File

@ -44,21 +44,21 @@ endif
install-consolefonts: $(SRC_FONTDIR) $(SRC_PARTIALDIR)
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(FONTDIR)
cp -a -- $(SRC_FONTDIR)/* $(DESTDIR)$(datadir)/$(FONTDIR)/
cp -dPR -- $(SRC_FONTDIR)/* $(DESTDIR)$(datadir)/$(FONTDIR)/
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(FONTDIR)/$(PARTIALDIR)
cp -a -- $(SRC_PARTIALDIR)/* $(DESTDIR)$(datadir)/$(FONTDIR)/$(PARTIALDIR)/
cp -dPR -- $(SRC_PARTIALDIR)/* $(DESTDIR)$(datadir)/$(FONTDIR)/$(PARTIALDIR)/
install-consoletrans:
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(TRANSDIR)
cp -a -- $(srcdir)/$(TRANSDIR)/* $(DESTDIR)$(datadir)/$(TRANSDIR)/
cp -dPR -- $(srcdir)/$(TRANSDIR)/* $(DESTDIR)$(datadir)/$(TRANSDIR)/
install-unimaps:
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(UNIMAPDIR)
cp -a -- $(srcdir)/$(UNIMAPDIR)/* $(DESTDIR)$(datadir)/$(UNIMAPDIR)/
cp -dPR -- $(srcdir)/$(UNIMAPDIR)/* $(DESTDIR)$(datadir)/$(UNIMAPDIR)/
install-keymaps: $(SRC_KEYMAPDIR)
mkdir -p -m 755 -- $(DESTDIR)$(datadir)/$(KEYMAPDIR)
cp -ar -- $(SRC_KEYMAPDIR)/* $(DESTDIR)$(datadir)/$(KEYMAPDIR)/
cp -dPR -- $(SRC_KEYMAPDIR)/* $(DESTDIR)$(datadir)/$(KEYMAPDIR)/
cd "$(DESTDIR)$(datadir)/$(KEYMAPDIR)"; \
for f in $(IGNORE_KEYMAPS); do ! test -e "$$f" || rm -f -- "$$f"; done
rm -f $(DESTDIR)$(datadir)/$(KEYMAPDIR)/ppc