commit:     8020431557bdce0741db6a6c4af831b41b5d1d00
Author:     Vitaly Zdanevich <zdanevich.vitaly <AT> ya <DOT> ru>
AuthorDate: Sun Mar 24 13:47:56 2024 +0000
Commit:     Vitaly Zdanevich <zdanevich.vitaly <AT> ya <DOT> ru>
CommitDate: Sun Mar 24 13:47:56 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=80204315

sys-boot/ventoy-bin: new package

Signed-off-by: Vitaly Zdanevich <zdanevich.vitaly <AT> ya.ru>

 sys-boot/ventoy-bin/Manifest                       |   1 +
 sys-boot/ventoy-bin/files/sanitize.patch           | 163 +++++++++++++++++++++
 sys-boot/ventoy-bin/files/ventoy                   |   4 +
 sys-boot/ventoy-bin/files/ventoy-extend-persistent |   3 +
 sys-boot/ventoy-bin/files/ventoy-persistent        |   3 +
 sys-boot/ventoy-bin/files/ventoy.desktop           |   9 ++
 sys-boot/ventoy-bin/files/ventoy.install           |  17 +++
 sys-boot/ventoy-bin/files/ventoygui                |   9 ++
 sys-boot/ventoy-bin/files/ventoyplugson            |   4 +
 sys-boot/ventoy-bin/files/ventoyweb                |   4 +
 sys-boot/ventoy-bin/metadata.xml                   |  11 ++
 sys-boot/ventoy-bin/ventoy-bin-1.0.97.ebuild       |  86 +++++++++++
 12 files changed, 314 insertions(+)

diff --git a/sys-boot/ventoy-bin/Manifest b/sys-boot/ventoy-bin/Manifest
new file mode 100644
index 0000000000..f0af723d69
--- /dev/null
+++ b/sys-boot/ventoy-bin/Manifest
@@ -0,0 +1 @@
+DIST ventoy-1.0.97-linux.tar.gz 19964906 BLAKE2B 
c1f7235838ed5fe55028424dd160d4322b8fe96f99404149cf3c25f00afe06dd9d35970f6cbd2b8f04432e8380b412495eae18b2f02a24d0003c63a644be6315
 SHA512 
af6d4a0c3c06009de3fd55377656d678ab037cc0b808421269551891502de32605ed3e17012395aa6ed58ca9c74bd52b19ed7fe43eda39a78b2c42cca1cd9b5f

diff --git a/sys-boot/ventoy-bin/files/sanitize.patch 
b/sys-boot/ventoy-bin/files/sanitize.patch
new file mode 100644
index 0000000000..ed98be7aa7
--- /dev/null
+++ b/sys-boot/ventoy-bin/files/sanitize.patch
@@ -0,0 +1,163 @@
+Author: DuckSoft <realducks...@gmail.com>
+
+I just cannot stand such a dirty package. 
+Let me do some optimisations.
+
+If you are interested to improve this patch, welcome to mail me.
+
+diff -rup old/tool/ventoy_lib.sh new/tool/ventoy_lib.sh
+--- tool/ventoy_lib.sh 2021-12-02 16:59:42.148650182 +0100
++++ tool/ventoy_lib.sh 2021-12-02 17:01:17.214720518 +0100
+@@ -29,7 +29,7 @@ vterr() {
+ }
+ 
+ vtdebug() {
+-    echo "$*" >> ./log.txt
++    echo "$*" >>/var/log/ventoy.log
+ }
+ 
+ vtoy_gen_uuid() {
+@@ -52,30 +52,6 @@ vtoy_gen_uuid() {
+ 
+ check_tool_work_ok() {
+     
+-    if echo 1 | hexdump > /dev/null; then
+-        vtdebug "hexdump test ok ..."
+-    else
+-        vtdebug "hexdump test fail ..."
+-        ventoy_false
+-        return
+-    fi
+-   
+-    if mkexfatfs -V > /dev/null; then
+-        vtdebug "mkexfatfs test ok ..."
+-    else
+-        vtdebug "mkexfatfs test fail ..."
+-        ventoy_false
+-        return
+-    fi
+-    
+-    if vtoycli fat -T; then
+-        vtdebug "vtoycli fat test ok ..."
+-    else
+-        vtdebug "vtoycli fat test fail ..."
+-        ventoy_false
+-        return
+-    fi
+-    
+     vtdebug "tool check success ..."
+     ventoy_true
+ }
+@@ -311,7 +287,7 @@ format_ventoy_disk_mbr() {
+     else
+     vtdebug "format disk by fdisk ..."
+     
+-fdisk $DISK >>./log.txt 2>&1 <<EOF
++fdisk $DISK >>/var/log/ventoy.log 2>&1 <<EOF
+ o
+ n
+ p
+diff -rup old/tool/VentoyWorker.sh new/tool/VentoyWorker.sh
+--- tool/VentoyWorker.sh       2021-12-02 16:59:31.485642239 +0100
++++ tool/VentoyWorker.sh       2021-12-02 17:02:00.326752183 +0100
+@@ -105,7 +105,7 @@ vtdebug "MODE=$MODE FORCE=$FORCE RESERVE
+ if check_tool_work_ok; then
+     vtdebug "check tool work ok"
+ else
+-    vterr "Some tools can not run on current system. Please check log.txt for 
details."
++    vterr "Some tools can not run on current system. Please check 
/var/log/ventoy.log for details."
+     exit 1
+ fi
+ 
+diff -rup old/Ventoy2Disk.sh new/Ventoy2Disk.sh
+--- Ventoy2Disk.sh     2021-12-02 16:59:05.205622608 +0100
++++ Ventoy2Disk.sh     2021-12-02 17:03:29.037816991 +0100
+@@ -32,48 +32,4 @@ echo "      https://www.ventoy.net";
+ echo '**********************************************'
+ echo ''
+ 
+-
+-if ! [ -f ./boot/boot.img ]; then
+-    if [ -d ./grub ]; then
+-        echo "Don't run Ventoy2Disk.sh here, please download the released 
install package, and run the script in it."
+-    else
+-        echo "Please run under the correct directory!" 
+-    fi
+-    exit 1
+-fi
+-
+-echo "############# Ventoy2Disk $* [$TOOLDIR] ################" >> ./log.txt
+-date >> ./log.txt
+-
+-#decompress tool
+-echo "decompress tools" >> ./log.txt
+-cd ./tool/$TOOLDIR
+-
+-ls *.xz > /dev/null 2>&1
+-if [ $? -eq 0 ]; then
+-    [ -f ./xzcat ] && chmod +x ./xzcat
+-
+-    for file in $(ls *.xz); do
+-        echo "decompress $file" >> ./log.txt
+-        xzcat $file > ${file%.xz}
+-        [ -f ./${file%.xz} ] && chmod +x ./${file%.xz}
+-        [ -f ./$file ] && rm -f ./$file
+-    done
+-fi
+-
+-cd ../../
+-chmod +x -R ./tool/$TOOLDIR
+-
+-
+-if [ -f /bin/bash ]; then
+-    /bin/bash ./tool/VentoyWorker.sh $*
+-else
+-    ash ./tool/VentoyWorker.sh $*
+-fi
+-
+-if [ -n "$OLDDIR" ]; then 
+-    CURDIR=$(pwd)
+-    if [ "$CURDIR" != "$OLDDIR" ]; then
+-        cd "$OLDDIR"
+-    fi
+-fi
++./tool/VentoyWorker.sh $*
+diff -rup old/VentoyPlugson.sh new/VentoyPlugson.sh
+--- VentoyPlugson.sh   2022-12-24 06:00:51.000000000 -0700
++++ VentoyPlugson.sh   2022-12-24 08:18:59.154268575 -0700
+@@ -34,8 +34,6 @@ if echo $machine | grep -E -q 'aarch64|a
+     TOOLDIR=aarch64
+ elif echo $machine | grep -E -q 'x86_64|amd64'; then
+     TOOLDIR=x86_64
+-elif echo $machine | grep -E -q 'mips64'; then
+-    TOOLDIR=mips64el
+ elif echo $machine | grep -E -q 'i[3-6]86'; then
+     TOOLDIR=i386
+ else
+diff -rup old/VentoyWeb.sh new/VentoyWeb.sh
+--- VentoyWeb.sh       2021-12-02 16:58:51.885612627 +0100
++++ VentoyWeb.sh       2021-12-02 17:04:43.437871014 +0100
+@@ -15,12 +15,6 @@ print_err() {
+     echo ""
+ }
+ 
+-uid=$(id -u)
+-if [ $uid -ne 0 ]; then
+-    print_err "Please use sudo or run the script as root."
+-    exit 1
+-fi
+-
+ OLDDIR=$(pwd)
+ 
+ if uname -m | egrep -q 'aarch64|arm64'; then
+@@ -85,8 +79,8 @@ if ps -ef | grep "V2DServer.*$HOST.*$POR
+     exit 1
+ fi
+ 
+-LOGFILE=log.txt
+-#delete the log.txt if it's more than 8MB
++LOGFILE=/var/log/ventoy.log
++#delete the ventoy.log if it's more than 8MB
+ if [ -f $LOGFILE ]; then
+     logsize=$(stat -c '%s' $LOGFILE)
+     if [ $logsize -gt 8388608 ]; then

diff --git a/sys-boot/ventoy-bin/files/ventoy b/sys-boot/ventoy-bin/files/ventoy
new file mode 100644
index 0000000000..b6feeaa81b
--- /dev/null
+++ b/sys-boot/ventoy-bin/files/ventoy
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd /opt/ventoy || exit 1
+exec ./Ventoy2Disk.sh "$@"

diff --git a/sys-boot/ventoy-bin/files/ventoy-extend-persistent 
b/sys-boot/ventoy-bin/files/ventoy-extend-persistent
new file mode 100644
index 0000000000..9616aa3a3d
--- /dev/null
+++ b/sys-boot/ventoy-bin/files/ventoy-extend-persistent
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /opt/ventoy/ExtendPersistentImg.sh "$@"

diff --git a/sys-boot/ventoy-bin/files/ventoy-persistent 
b/sys-boot/ventoy-bin/files/ventoy-persistent
new file mode 100644
index 0000000000..c955fb6f15
--- /dev/null
+++ b/sys-boot/ventoy-bin/files/ventoy-persistent
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /opt/ventoy/CreatePersistentImg.sh "$@"

diff --git a/sys-boot/ventoy-bin/files/ventoy.desktop 
b/sys-boot/ventoy-bin/files/ventoy.desktop
new file mode 100644
index 0000000000..f74c7739cf
--- /dev/null
+++ b/sys-boot/ventoy-bin/files/ventoy.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Icon=ventoy
+Name=Ventoy
+Exec=ventoygui
+Terminal=false
+Hidden=false
+Categories=Utility
+Comment=Ventoy2Disk GUI

diff --git a/sys-boot/ventoy-bin/files/ventoy.install 
b/sys-boot/ventoy-bin/files/ventoy.install
new file mode 100644
index 0000000000..7ff7012f41
--- /dev/null
+++ b/sys-boot/ventoy-bin/files/ventoy.install
@@ -0,0 +1,17 @@
+post_install() {
+  printf "$(tput setaf 4)  ->$(tput sgr0; tput bold) %s$(tput sgr0)\n" \
+    'NOTE: You can create persistence images for ventoy with the 
"ventoy-persistent" command,'
+  printf "$(tput setaf 4)  ->$(tput sgr0; tput bold) %s$(tput sgr0)\n" \
+    '      and losslessly expand persistence ".dat" files using 
"ventoy-extend-persistent",'
+  printf "$(tput setaf 4)  ->$(tput sgr0; tput bold) %s$(tput sgr0)\n" \
+    '      which are shortcuts to "/opt/ventoy/CreatePersistentImg.sh" and'
+  printf "$(tput setaf 4)  ->$(tput sgr0; tput bold) %s$(tput sgr0)\n" \
+    '      "/opt/ventoy/ExtendPersistentImg.sh", respectively.'
+  printf "$(tput setaf 4)  ->$(tput sgr0; tput bold) %s$(tput sgr0)\n" \
+    '      (See https://www.ventoy.net/en/plugin_persistence.html for 
documentation.)'
+}
+
+post_remove() {
+  # Remove log file
+  rm -rf /opt/ventoy/
+}

diff --git a/sys-boot/ventoy-bin/files/ventoygui 
b/sys-boot/ventoy-bin/files/ventoygui
new file mode 100644
index 0000000000..887535f72f
--- /dev/null
+++ b/sys-boot/ventoy-bin/files/ventoygui
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+cd /opt/ventoy || exit 1
+
+if [ "$(uname -m)" = "x86_64" ]; then
+  ./VentoyGUI.x86_64 "$@"
+elif [ "$(uname -m)" = "aarch64" ]; then
+  ./VentoyGUI.aarch64 "$@"
+fi

diff --git a/sys-boot/ventoy-bin/files/ventoyplugson 
b/sys-boot/ventoy-bin/files/ventoyplugson
new file mode 100644
index 0000000000..f1e7b2d362
--- /dev/null
+++ b/sys-boot/ventoy-bin/files/ventoyplugson
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd /opt/ventoy || exit 1
+exec ./VentoyPlugson.sh "$@"

diff --git a/sys-boot/ventoy-bin/files/ventoyweb 
b/sys-boot/ventoy-bin/files/ventoyweb
new file mode 100644
index 0000000000..fefe649136
--- /dev/null
+++ b/sys-boot/ventoy-bin/files/ventoyweb
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd /opt/ventoy || exit 1
+exec ./VentoyWeb.sh "$@"

diff --git a/sys-boot/ventoy-bin/metadata.xml b/sys-boot/ventoy-bin/metadata.xml
new file mode 100644
index 0000000000..10fe5c7b5c
--- /dev/null
+++ b/sys-boot/ventoy-bin/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <name>ston</name>
+               <email>ston....@qq.com</email>
+       </maintainer>
+       <upstream>
+               <remote-id type="github">ventoy/Ventoy</remote-id>
+       </upstream>
+</pkgmetadata>

diff --git a/sys-boot/ventoy-bin/ventoy-bin-1.0.97.ebuild 
b/sys-boot/ventoy-bin/ventoy-bin-1.0.97.ebuild
new file mode 100644
index 0000000000..e791c835df
--- /dev/null
+++ b/sys-boot/ventoy-bin/ventoy-bin-1.0.97.ebuild
@@ -0,0 +1,86 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop xdg
+
+DESCRIPTION="Creator of bootable USBs, with ability to copy ISOs, persistence 
storage"
+HOMEPAGE="http://www.ventoy.net";
+SRC_URI="https://github.com/ventoy/Ventoy/releases/download/v${PV}/ventoy-${PV}-linux.tar.gz";
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RESTRICT="strip mirror"
+
+DEPEND="
+       sys-fs/dosfstools
+       sys-fs/exfat-utils
+       sys-block/parted
+"
+RDEPEND="${DEPEND}"
+
+S=${WORKDIR}/ventoy-${PV}
+
+CARCH="x86_64"
+
+src_prepare() {
+       # Decompress tools
+       pushd tool/$CARCH || die
+       for file in *.xz; do
+               xzcat "$file" >"${file%.xz}" || die
+               chmod +x "${file%.xz}" || die
+       done
+
+       # Cleanup .xz crap
+       rm -fv ./*.xz || die
+       popd || die
+
+       # Apply sanitize patch
+       eapply -p0 "${FILESDIR}/sanitize.patch"
+
+       # Log location
+       sed -i 's|log\.txt|/var/log/ventoy.log|g' WebUI/static/js/languages.js 
tool/languages.json || die
+
+       # Non-POSIX compliant scripts
+       sed -i 's|bin/sh|usr/bin/env bash|g' 
tool/{ventoy_lib.sh,VentoyWorker.sh} || die
+
+       # Clean up unused binaries
+       # Preserving mkexfatfs and mount.exfat-fuse because exfatprogs is 
incompatible
+       for binary in xzcat hexdump; do
+               rm -fv tool/$CARCH/$binary || die
+       done
+       default
+}
+
+src_install() {
+       insopts -m0644
+       insinto /opt/ventoy/boot/
+       doins boot/*
+       insinto /opt/ventoy/ventoy/
+       doins ventoy/*
+       insopts -m0755
+       insinto /opt/ventoy/tool/
+       doins tool/*.{cer,glade,json,sh,xz}
+       insinto /opt/ventoy/tool/$CARCH/
+       doins tool/$CARCH/*
+       insinto /opt/ventoy/
+       doins ./*.sh plugin WebUI "VentoyGUI.$CARCH"
+
+       # Install .desktop
+       insopts -m0644
+       insinto /usr/share/pixmaps/
+       newins WebUI/static/img/VentoyLogo.png ventoy.png
+       domenu "${FILESDIR}/ventoy.desktop"
+
+       # Link system binaries
+       for binary in xzcat hexdump; do
+               dosym -r /usr/bin/$binary /opt/ventoy/tool/$CARCH/$binary
+       done
+
+       dobin "${FILESDIR}"/ventoy{,gui,web,plugson,-{,extend-}persistent}
+
+       rm "${D}"/opt/ventoy/tool/x86_64/Ventoy2Disk.gtk2 || die
+}

Reply via email to