Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 629538 - sys-apps/portage: support for uniform .xpak suffix for binary packages
Summary: sys-apps/portage: support for uniform .xpak suffix for binary packages
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Binary packages support (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on: 672672
Blocks:
  Show dependency tree
 
Reported: 2017-09-01 13:15 UTC by Francesco Turco
Modified: 2022-07-19 00:34 UTC (History)
6 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Francesco Turco 2017-09-01 13:15:20 UTC
I use sys-apps/portage-2.3.8 and I enabled the BINPKG_COMPRESS="xz" option in make.conf, but Portage still creates .tbz2 binary packages instead of .txz ones (or .tar.xz). Can suffixes be customized according to the compression algorithm being used?

Example:
$ file /var/portage/packages/media-sound/pulseaudio-10.0.tbz2 
/var/portage/packages/media-sound/pulseaudio-10.0.tbz2: XZ compressed data

Reproducible: Always




$ emerge --info
Portage 2.3.8 (python 3.6.1-final-0, default/linux/amd64/17.0/desktop/gnome/systemd, gcc-7.2.0, glibc-2.25-r4, 4.12.9-gnu x86_64)
=================================================================
System uname: Linux-4.12.9-gnu-x86_64-Intel-R-_Core-TM-2_Duo_CPU_E8400_@_3.00GHz-with-gentoo-2.4.1
KiB Mem:     8108104 total,    249748 free
KiB Swap:    8386556 total,   8385580 free
Timestamp of repository gentoo: Thu, 31 Aug 2017 07:44:04 +0000
Head commit of repository gentoo: a0f56bde9040ab718ea70fe99f98ca39bbd8cad3

Head commit of repository bitcoin: 167967937c3508c3245b34f8119e396f6e881c8a

Timestamp of repository frabjous: Thu, 31 Aug 2017 14:03:25 +0000
Head commit of repository frabjous: 1d2a60165a0ac917b5071de5a00310f66dbac554

Timestamp of repository octopus: Sun, 27 Aug 2017 08:15:47 +0000
Head commit of repository octopus: b1095c418fef6254601b758a9ecba030680a40df

Timestamp of repository qt: Sun, 27 Aug 2017 06:03:24 +0000
Head commit of repository qt: fad838d15796eb5176fd10f073bb974d65d94a18

Timestamp of repository wichtounet: Mon, 28 Aug 2017 06:03:24 +0000
Head commit of repository wichtounet: aeff0558faec528bf26aa25a4f19fc91d9ba5be3

sh bash 4.4_p12
ld GNU ld (Gentoo 2.28.1 p1.0) 2.28.1
app-shells/bash:          4.4_p12::gentoo
dev-lang/perl:            5.24.2::gentoo
dev-lang/python:          2.7.13::gentoo, 3.5.3::gentoo, 3.6.1-r1::gentoo
dev-util/cmake:           3.9.1::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.4.1-r1::gentoo
sys-apps/sandbox:         2.10-r4::gentoo
sys-devel/autoconf:       2.13::gentoo, 2.69-r4::gentoo
sys-devel/automake:       1.13.4-r1::gentoo, 1.15.1-r1::gentoo
sys-devel/binutils:       2.28.1::gentoo
sys-devel/gcc:            7.2.0::gentoo
sys-devel/gcc-config:     1.8-r1::gentoo
sys-devel/libtool:        2.4.6-r4::gentoo
sys-devel/make:           4.2.1-r1::gentoo
sys-kernel/linux-headers: 4.11::gentoo (virtual/os-headers)
sys-libs/glibc:           2.25-r4::gentoo
Repositories:

gentoo
    location: /var/portage/repos/gentoo
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/gentoo
    priority: -1000

bitcoin
    location: /var/portage/repos/bitcoin
    sync-type: git
    sync-uri: https://gitlab.com/bitcoin/gentoo
    masters: gentoo
    priority: 0

frabjous
    location: /var/portage/repos/frabjous
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/frabjous
    masters: gentoo
    priority: 0

octopus
    location: /var/portage/repos/octopus
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/octopus
    masters: gentoo
    priority: 0

qt
    location: /var/portage/repos/qt
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/qt
    masters: gentoo
    priority: 0

wichtounet
    location: /var/portage/repos/wichtounet
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/wichtounet
    masters: gentoo
    priority: 0

fturco
    location: /var/portage/repos/fturco
    masters: gentoo
    priority: 1000

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=native -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/chromium/policies/managed/chrome-gnome-shell.json /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/opt/chrome/policies/managed/chrome-gnome-shell.json /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -march=native -pipe"
DISTDIR="/var/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs buildpkg config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync multilib-strict news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://mirror.switch.ch/ftp/mirror/gentoo/"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j2"
PKGDIR="/var/portage/packages"
PORTAGE_COMPRESS="xz"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="X aac acl acpi alsa amd64 bash-completion berkdb bzip2 cairo cdda cdparanoia cdr clamav cli colord cracklib crypt css cups curl cxx dbus dri dvd dvdr eds emacs encode evo exif expat ffmpeg firefox flac fontconfig ftp gd gif gimp git glamor gmp gnome gnome-keyring gnome-online-accounts gnutls gphoto2 gstreamer gtk gzip hddtemp iconv icu ieee1394 imagemagick imap introspection ipv6 javascript jpeg lame latex lcms ldap libass libcaca libffi libnotify libsecret lm_sensors lua lzma lzo mad matroska mime modules mp3 mp4 mplayer mtp musicbrainz nautilus ncurses networkmanager nls nptl ogg opengl openmp opus pam pango pcre pdf perl png policykit pulseaudio python qt3support qt5 readline rss ruby samba scanner sdl seccomp session slang smp sound spell sqlite ssl startup-notification svg systemd tcpd theora tiff tracker truetype udev udisks unicode upower usb v4l vala videos vnc vorbis webkit wifi x264 xcb xft xml xmlrpc xv zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 sse4_1 ssse3" CURL_SSL="openssl" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="pc" INPUT_DEVICES="libinput" KERNEL="linux" L10N="en en-US" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en en_US" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6" POSTGRES_TARGETS="postgres9_5" PYTHON_SINGLE_TARGET="python3_6" PYTHON_TARGETS="python2_7 python3_5 python3_6" QEMU_SOFTMMU_TARGETS="x86_64 i386" RUBY_TARGETS="ruby24" USERLAND="GNU" VIDEO_CARDS="intel i915 nouveau" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Mike Gilbert gentoo-dev 2017-09-01 17:57:33 UTC
A few options here:

1. Make the suffix configurable.
2. Choose a new compression-agnostic suffix.
3. Do nothing and accept that the .tbz2 suffix is not meaningful.
Comment 2 Zac Medico gentoo-dev 2017-09-01 18:30:18 UTC
My preference is use the .xpak suffix uniformly, regardless of the compression type. This is why FEATURES=binpkg-multi-instance uses the .xpak suffix. This is possible because every compression format has a unique file header.

When Manuel Rüger was working on BINPKG_COMPRESS support, he as also working on migrating the .tbz2 suffix to .xpak, but we haven't merged a patch for that yet.
Comment 3 R030t1 2017-09-02 03:06:19 UTC
I would prefer the packages end in the selected format's suffix because shell autocompletion relies heavily on file suffixes, and an incorrect format will preclude being able to select a package with a press of the tab key.

Moreover, I think a better reason to use the proper suffix is because it is more precise. Are there technical hurdles to adding the proper suffix?
Comment 4 Zac Medico gentoo-dev 2017-09-02 03:17:41 UTC
These files are not proper tarballs, since they have an xpak trailer. You can think of it as being analogous to the rpm format, which also supports multiple forms of compression for the payload.
Comment 5 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-07-19 00:34:42 UTC
I feel like this is essentially solved by https://www.gentoo.org/glep/glep-0078.html#the-container-format.