Autor Tema: p7zip con GUI x86_64 AMD  (Leído 159 veces)

Fl0ppy

  • Administrador
  • Usuario Héroe
  • *****
  • Mensajes: 8163
p7zip con GUI x86_64 AMD
« en: 12 de Septiembre de 2021, 11:07:34 pm »
Al final he conseguido compilar una versión funcional de 7-zip file manager para GNU/Linux, otras de las novedades (aparte de que funciona) es que lleva las librerias Wx integradas en el el binario

Testado bajo Linux Mint cinnamon 19.3 GLIBC 2.27, Kernel 5.4.0-81 y compilado con GCC 10.3.0

La versión compilada (adjunta) se ha probado bajo

-Debian 11, GLIBC 2.31, Kernel 5.10.0
-ArcoLinux, GLIBC 2.33 Kernel 5.14.2
-Void Linux. GLIBC, 2.32, Kernel 5.13.13

 y también funciona perfectamente  en esos :ouo:

NOTA: Si ejecutando ./7zFM os arranca y funciona bien podeis borrar los directorios de las librerias y el .sh

Adjunto versión con librerias y versión sin librerias (recomendado este último, por tema de tamaño) y las versiones estáticas de 7za, 7zr, lzma y para crear autoejecutables para GNU/Linux 7zCon.sfx, precompridos con UPX)

7za es un ejecutable independiente. 7za maneja menos formatos de archivo que 7z, pero no necesita otros.

7zr es un ejecutable independiente. 7zr maneja menos formatos de archivo que 7z, pero no necesita otros. 7zr es una "versión ligera" de 7za que solo maneja archivos 7z.

Este es el script de compilación
Código: [Seleccionar]
# Thanks to tmn505
# https://aur.archlinux.org/packages/p7zip-gui/
#
# p7zip 16.02 GUI compiler B12092021 for Debian/*buntu/mint/and other forks
#
# Tested under Linux Mint cinnamon 19.3 GLIBC 2.27 and compiled with GCC 10.3.0
#
# KAPITALSIN 2021
#
# WxWidgets are integrated in the binary files
#
glibc="$(ldd --version | awk '/ldd/{print $NF}')"

sudo apt-get install gcc g++ yasm libgtk2.0-dev libwxgtk3.0-dev

time_start=`date +%s`
wget https://fossies.org/linux/misc/p7zip_16.02_src_all.tar.xz
tar xvfa p7zip_16.02_src_all.tar.xz

cd p7zip_16.02
wget https://src.fedoraproject.org/rpms/p7zip/raw/rawhide/f/14-Fix-g++-warning.patch
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/a82b67f5d36f374afd154e7648bb13ec38a3c497/trunk/CVE-2016-9296.patch
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/a82b67f5d36f374afd154e7648bb13ec38a3c497/trunk/CVE-2017-17969.patch
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/a82b67f5d36f374afd154e7648bb13ec38a3c497/trunk/CVE-2018-5996.patch
wget https://raw.githubusercontent.com/archlinux/svntogit-packages/a82b67f5d36f374afd154e7648bb13ec38a3c497/trunk/CVE-2018-10115.patch
wget https://src.fedoraproject.org/rpms/p7zip/raw/rawhide/f/gcc10-conversion.patch

patch -p1 -i 14-Fix-g++-warning.patch
patch -p1 -i CVE-2016-9296.patch
patch -p1 -i CVE-2017-17969.patch
patch -p1 -i CVE-2018-5996.patch
patch -p1 -i CVE-2018-10115.patch
patch -p1 -i gcc10-conversion.patch

cp makefile.linux_amd64_asm makefile.machine
sed -i 's/-O -s/-O3 -s/g' makefile.machine
sed -i 's/x86_64-linux-gnu//g' CPP/7zip/*/*/*.depend
rm GUI/kde4/p7zip_compress.desktop

PATH=$PWD/wx3:$PATH
wget https://github.com/johna23-lab/filezilla/raw/main/wx3.7z
7z x wx3.7z
rm wx3.7z
cd wx3
cp -r -n /usr/include/wx-3.0/wx .
./configure --prefix=$(pwd) --enable-monolithic  --disable-shared --enable-static --enable-unicode --with-libpng=builtin   --with-libjpeg=builtin  --with-libtiff=builtin  --with-zlib=builtin --with-expat=builtin
make -j$(nproc)
cd ..

cd Utils
sed -i 's/_do_not_use//g' generate.py
./generate.py
cd ..

make -j$(nproc) 7zFM 7zG
cd bin
strip 7zFM 7zG 7z.so
mkdir p7zip.16.02.gui

echo '#!/bin/sh' > p7zip.16.02.gui/7zf.sh
echo '   BIN=./7zFM' >> p7zip.16.02.gui/7zf.sh
echo 'export LD_LIBRARY_PATH=lib/x86_64-linux-gnu:/lib64:usr/lib/x86_64-linux-gnu/' >> p7zip.16.02.gui/7zf.sh
echo 'exec $BIN $@' >> p7zip.16.02.gui/7zf.sh
chmod a+x p7zip.16.02.gui/7zf.sh

for library in $(ldd "7zFM" "7zG" "7z.so"  | cut -d '>' -f 2 | awk '{print $1}')
do
[ -f "${library}" ] && cp --verbose --parents "${library}" "p7zip.16.02.gui"
done

cp 7zFM 7zG 7z.so "p7zip.16.02.gui"
cp -r Codecs "p7zip.16.02.gui"

mv  "p7zip.16.02.gui"  "../../p7zip.16.02.gui_GLIBC_"$glibc""

echo "p7zip.16.02.gui COMPILED AT p7zip.16.02.gui_GLIBC_"$glibc""

time_end=`date +%s`
time_exec=`expr $(( $time_end - $time_start ))`
echo "EL PROCESO DE COMPILADO HA TARDADO UN TOTAL DE $(($time_exec / 60)) minutos y $(($time_exec % 60)) segundos."
Siempre que pasa igual sucede lo mismo



Fl0ppy

  • Administrador
  • Usuario Héroe
  • *****
  • Mensajes: 8163
Re:p7zip con GUI x86_64 AMD
« Respuesta #1 en: 15 de Septiembre de 2021, 04:44:59 pm »
Creados binarios estáticos de la versión oficial del 7-zip 21.03_Beta para GNU/Linux, no hay interfaz gráfica , es solo línea de comandos

Incluye:
7zz, 7zr, 7za, lzma, 7zCon

-7zz es una versión completa independiente de 7-Zip que admite todos los formatos.
-7za es un ejecutable independiente. 7za maneja menos formatos de archivo que 7z, pero no necesita otros.
-7zr es un ejecutable independiente. 7zr maneja menos formatos de archivo que 7z, pero no necesita otros. 7zr es una "versión ligera" de 7za que solo maneja archivos 7z.
-lzma comprime y descomprime ficheros .lzma
-7zCon es para hacer ficheros 7z autoextraibles (SFX)


7-Zip 21.03 beta was released.
Siempre que pasa igual sucede lo mismo