Nothin' but Slackware

バイクとLinuxに戯れる日々

nvidia-580.105.08-fix-linux-6.18.patch

The linux Kernel 6.18.0 has been released on DEC. 01. 2025.

This is a "nvidia-580.105.08-fix-linux-6.18.patch" that I'm using against NVIDIA-Linux-x86_64-580.105.08.

nvidia-580.105.08-fix-linux-6.18.patch
[code]
diff -Nru a/kernel-open/conftest.sh b/kernel-open/conftest.sh
--- a/kernel-open/conftest.sh    2025-11-05 13:25:07.569025538 +0900
+++ b/kernel-open/conftest.sh    2025-11-05 13:17:18.791538775 +0900
@@ -4871,6 +4871,24 @@
             compile_check_conftest "$CODE" "NV_MEMORY_DEVICE_COHERENT_PRESENT" "" "types"
         ;;
 
+        get_dev_pagemap_single_arg)
+            #
+            # Determine if get_dev_pagemap() takes single argument.
+            #
+            # The get_dev_pagemap() function was updated to take only pfn argument
+            # and the lock parameter was removed in kernel v6.18.
+            #
+            CODE="
+            #include <linux/mm.h>
+            #include <linux/memremap.h>
+            void conftest_get_dev_pagemap(void) {
+                struct dev_pagemap *pgmap;
+                unsigned long pfn = 0;
+                pgmap = get_dev_pagemap(pfn);
+            }"
+
+            compile_check_conftest "$CODE" "NV_GET_DEV_PAGEMAP_SINGLE_ARG" "" "types"
+        ;;
 
         # When adding a new conftest entry, please use the correct format for
         # specifying the relevant upstream Linux kernel commit.  Please
diff -Nru a/kernel-open/nvidia-uvm/nvidia-uvm.Kbuild b/kernel-open/nvidia-uvm/nvidia-uvm.Kbuild
--- a/kernel-open/nvidia-uvm/nvidia-uvm.Kbuild    2025-11-05 13:25:58.745054536 +0900
+++ b/kernel-open/nvidia-uvm/nvidia-uvm.Kbuild    2025-11-05 13:20:37.365674825 +0900
@@ -61,6 +61,7 @@
 NV_CONFTEST_TYPE_COMPILE_TESTS += migrate_vma_added_flags
 NV_CONFTEST_TYPE_COMPILE_TESTS += migrate_device_range
 NV_CONFTEST_TYPE_COMPILE_TESTS += handle_mm_fault_has_pt_regs_arg
+NV_CONFTEST_TYPE_COMPILE_TESTS += get_dev_pagemap_single_arg
 NV_CONFTEST_TYPE_COMPILE_TESTS += mempolicy_has_unified_nodes
 NV_CONFTEST_TYPE_COMPILE_TESTS += mempolicy_has_home_node
 NV_CONFTEST_TYPE_COMPILE_TESTS += mpol_preferred_many_present
diff -Nru a/kernel-open/nvidia-uvm/uvm_va_range_device_p2p.c b/kernel-open/nvidia-uvm/uvm_va_range_device_p2p.c
--- a/kernel-open/nvidia-uvm/uvm_va_range_device_p2p.c    2025-11-05 13:27:03.729310408 +0900
+++ b/kernel-open/nvidia-uvm/uvm_va_range_device_p2p.c    2025-11-05 13:22:20.445586865 +0900
@@ -360,7 +360,11 @@
         // a reference to them, so take one now if using DEVICE_COHERENT pages.
         if (gpu->parent->cdmm_enabled) {
             get_page(page);
+#if defined(NV_GET_DEV_PAGEMAP_SINGLE_ARG)
+            get_dev_pagemap(page_to_pfn(page));
+#else
             get_dev_pagemap(page_to_pfn(page), NULL);
+#endif
         }
 #else
         // CDMM P2PDMA will never be enabled for this case


===
[NEW] 2025/12/01


nv-codec-headers 13.0.19.0 applied "missing functons patch"

Re-compile nv-codec-headers 13.0.19.0 by applying upstream's commit 876af32 diff.


nv-codec-headers.SlackBuild
[code]
#!/bin/bash

# Copyright 2022  Patrick J. Volkerding, Sebeka, MN, USA
# Copyright 2024  Heinz Wiesinger, Amsterdam, The Netherlands
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

cd $(dirname $0) ; CWD=$(pwd)

PKGNAM=nv-codec-headers
VERSION=${VERSION:-$(echo nv-codec-headers-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-2jw}

# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
  case "$(uname -m)" in
    i?86) ARCH=i686 ;;
    arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
    # Unless $ARCH is already set, use uname -m for all other archs:
    *) ARCH=$(uname -m) ;;
  esac
  export ARCH
fi

# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
  exit 0
fi

NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}

if [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=pentium4 -mtune=generic"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -march=x86-64 -mtune=generic -fPIC"
  LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

TMP=${TMP:-/tmp}
PKG=$TMP/package-$PKGNAM

rm -rf $PKG
mkdir -p $TMP $PKG

cd $TMP
rm -rf nv-codec-headers-$VERSION
tar xvf $CWD/nv-codec-headers-$VERSION.tar.?z || exit 1
cd nv-codec-headers-$VERSION || exit 1

chown -R root:root .
find . \
  \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
  -exec chmod 755 {} \+ -o \
  \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
  -exec chmod 644 {} \+

# add a few missing functions (include/ffnvcodec/{dynlink_cuda.h, dynlink_loader.h} ; commit 876af32a202d0de83bd1d36fe74ee0f7fcf86b0d
zcat $CWD/001_876af32_fix-missing-functions.patch.gz | patch -p1 --verbose || exit 1

make \
  $NUMJOBS \
  PREFIX=/usr \
  LIBDIR=/lib$LIBDIRSUFFIX \
  DESTDIR=$PKG \
  install || exit 1

mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -a README \
  $PKG/usr/doc/$PKGNAM-$VERSION
cp $CWD/001_876af32_fix-missing-functions.patch.gz $PKG/usr/doc/$PKGNAM-$VERSION
cat $CWD/${PKGNAM}.SlackBuild > $PKG/usr/doc/$PKGNAM-$VERSION/${PKGNAM}.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz


001_876af32_fix-missing-functions.patch
[code]
diff -Nru a/include/ffnvcodec/dynlink_cuda.h b/include/ffnvcodec/dynlink_cuda.h
--- a/include/ffnvcodec/dynlink_cuda.h    2025-02-01 03:18:28.000000000 +0900
+++ b/include/ffnvcodec/dynlink_cuda.h    2025-10-27 19:37:10.079498130 +0900
@@ -414,6 +414,7 @@
 #define CU_TRSF_READ_AS_INTEGER 1
 
 typedef void CUDAAPI CUstreamCallback(CUstream hStream, CUresult status, void *userdata);
+typedef void CUDAAPI CUhostFn(void *userData);
 
 typedef CUresult CUDAAPI tcuInit(unsigned int Flags);
 typedef CUresult CUDAAPI tcuDriverGetVersion(int *driverVersion);
@@ -428,6 +429,8 @@
 typedef CUresult CUDAAPI tcuDeviceGetPCIBusId(char* pciBusId, int len, CUdevice dev);
 typedef CUresult CUDAAPI tcuDeviceComputeCapability(int *major, int *minor, CUdevice dev);
 typedef CUresult CUDAAPI tcuCtxCreate_v2(CUcontext *pctx, unsigned int flags, CUdevice dev);
+typedef CUresult CUDAAPI tcuCtxSynchronize(void);
+typedef CUresult CUDAAPI tcuCtxGetStreamPriorityRange(int *leastPriority, int *greatestPriority);
 typedef CUresult CUDAAPI tcuCtxGetCurrent(CUcontext *pctx);
 typedef CUresult CUDAAPI tcuCtxSetLimit(CUlimit limit, size_t value);
 typedef CUresult CUDAAPI tcuCtxPushCurrent_v2(CUcontext pctx);
@@ -438,6 +441,10 @@
 typedef CUresult CUDAAPI tcuMemAllocManaged(CUdeviceptr *dptr, size_t bytesize, unsigned int flags);
 typedef CUresult CUDAAPI tcuMemsetD8Async(CUdeviceptr dstDevice, unsigned char uc, size_t N, CUstream hStream);
 typedef CUresult CUDAAPI tcuMemFree_v2(CUdeviceptr dptr);
+typedef CUresult CUDAAPI tcuMemHostAlloc(void **pp, size_t bytesize, unsigned int flags);
+typedef CUresult CUDAAPI tcuMemFreeHost(void *p);
+typedef CUresult CUDAAPI tcuMemAllocAsync(CUdeviceptr *dptr, size_t bytesize, CUstream hStream);
+typedef CUresult CUDAAPI tcuMemFreeAsync(CUdeviceptr dptr, CUstream hStream);
 typedef CUresult CUDAAPI tcuMemcpy(CUdeviceptr dst, CUdeviceptr src, size_t bytesize);
 typedef CUresult CUDAAPI tcuMemcpyAsync(CUdeviceptr dst, CUdeviceptr src, size_t bytesize, CUstream hStream);
 typedef CUresult CUDAAPI tcuMemcpy2D_v2(const CUDA_MEMCPY2D *pcopy);
@@ -459,6 +466,7 @@
 typedef CUresult CUDAAPI tcuDevicePrimaryCtxReset(CUdevice dev);
 
 typedef CUresult CUDAAPI tcuStreamCreate(CUstream *phStream, unsigned int flags);
+typedef CUresult CUDAAPI tcuStreamCreateWithPriority(CUstream *phStream, unsigned int flags, int priority);
 typedef CUresult CUDAAPI tcuStreamQuery(CUstream hStream);
 typedef CUresult CUDAAPI tcuStreamSynchronize(CUstream hStream);
 typedef CUresult CUDAAPI tcuStreamDestroy_v2(CUstream hStream);
@@ -471,6 +479,8 @@
 typedef CUresult CUDAAPI tcuEventRecord(CUevent hEvent, CUstream hStream);
 
 typedef CUresult CUDAAPI tcuLaunchKernel(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void** kernelParams, void** extra);
+typedef CUresult CUDAAPI tcuLaunchHostFunc(CUstream hStream, CUhostFn *fn, void *userData);
+
 typedef CUresult CUDAAPI tcuLinkCreate(unsigned int numOptions, CUjit_option* options, void** optionValues, CUlinkState* stateOut);
 typedef CUresult CUDAAPI tcuLinkAddData(CUlinkState state, CUjitInputType type, void* data, size_t size, const char* name, unsigned int numOptions, CUjit_option* options, void** optionValues);
 typedef CUresult CUDAAPI tcuLinkComplete(CUlinkState state, void** cubinOut, size_t* sizeOut);
diff -Nru a/include/ffnvcodec/dynlink_loader.h b/include/ffnvcodec/dynlink_loader.h
--- a/include/ffnvcodec/dynlink_loader.h    2025-02-01 03:18:28.000000000 +0900
+++ b/include/ffnvcodec/dynlink_loader.h    2025-10-27 19:37:32.716636236 +0900
@@ -149,6 +149,8 @@
     tcuDeviceGetPCIBusId *cuDeviceGetPCIBusId;
     tcuDeviceComputeCapability *cuDeviceComputeCapability;
     tcuCtxCreate_v2 *cuCtxCreate;
+    tcuCtxSynchronize *cuCtxSynchronize;
+    tcuCtxGetStreamPriorityRange *cuCtxGetStreamPriorityRange;
     tcuCtxGetCurrent *cuCtxGetCurrent;
     tcuCtxSetLimit *cuCtxSetLimit;
     tcuCtxPushCurrent_v2 *cuCtxPushCurrent;
@@ -159,6 +161,10 @@
     tcuMemAllocManaged *cuMemAllocManaged;
     tcuMemsetD8Async *cuMemsetD8Async;
     tcuMemFree_v2 *cuMemFree;
+    tcuMemHostAlloc *cuMemHostAlloc;
+    tcuMemFreeHost *cuMemFreeHost;
+    tcuMemAllocAsync *cuMemAllocAsync;
+    tcuMemFreeAsync *cuMemFreeAsync;
     tcuMemcpy *cuMemcpy;
     tcuMemcpyAsync *cuMemcpyAsync;
     tcuMemcpy2D_v2 *cuMemcpy2D;
@@ -180,6 +186,7 @@
     tcuDevicePrimaryCtxReset *cuDevicePrimaryCtxReset;
 
     tcuStreamCreate *cuStreamCreate;
+    tcuStreamCreateWithPriority *cuStreamCreateWithPriority;
     tcuStreamQuery *cuStreamQuery;
     tcuStreamSynchronize *cuStreamSynchronize;
     tcuStreamDestroy_v2 *cuStreamDestroy;
@@ -192,6 +199,7 @@
     tcuEventRecord *cuEventRecord;
 
     tcuLaunchKernel *cuLaunchKernel;
+    tcuLaunchHostFunc *cuLaunchHostFunc;
     tcuLinkCreate *cuLinkCreate;
     tcuLinkAddData *cuLinkAddData;
     tcuLinkComplete *cuLinkComplete;
@@ -316,6 +324,8 @@
     LOAD_SYMBOL(cuDeviceGetName, tcuDeviceGetName, "cuDeviceGetName");
     LOAD_SYMBOL(cuDeviceComputeCapability, tcuDeviceComputeCapability, "cuDeviceComputeCapability");
     LOAD_SYMBOL(cuCtxCreate, tcuCtxCreate_v2, "cuCtxCreate_v2");
+    LOAD_SYMBOL(cuCtxSynchronize, tcuCtxSynchronize, "cuCtxSynchronize");
+    LOAD_SYMBOL(cuCtxGetStreamPriorityRange, tcuCtxGetStreamPriorityRange, "cuCtxGetStreamPriorityRange");
     LOAD_SYMBOL(cuCtxGetCurrent, tcuCtxGetCurrent, "cuCtxGetCurrent");
     LOAD_SYMBOL(cuCtxSetLimit, tcuCtxSetLimit, "cuCtxSetLimit");
     LOAD_SYMBOL(cuCtxPushCurrent, tcuCtxPushCurrent_v2, "cuCtxPushCurrent_v2");
@@ -326,6 +336,10 @@
     LOAD_SYMBOL(cuMemAllocManaged, tcuMemAllocManaged, "cuMemAllocManaged");
     LOAD_SYMBOL(cuMemsetD8Async, tcuMemsetD8Async, "cuMemsetD8Async");
     LOAD_SYMBOL(cuMemFree, tcuMemFree_v2, "cuMemFree_v2");
+    LOAD_SYMBOL(cuMemHostAlloc, tcuMemHostAlloc, "cuMemHostAlloc");
+    LOAD_SYMBOL(cuMemFreeHost, tcuMemFreeHost, "cuMemFreeHost");
+    LOAD_SYMBOL(cuMemAllocAsync, tcuMemAllocAsync, "cuMemAllocAsync");
+    LOAD_SYMBOL(cuMemFreeAsync, tcuMemFreeAsync, "cuMemFreeAsync");
     LOAD_SYMBOL(cuMemcpy, tcuMemcpy, "cuMemcpy");
     LOAD_SYMBOL(cuMemcpyAsync, tcuMemcpyAsync, "cuMemcpyAsync");
     LOAD_SYMBOL(cuMemcpy2D, tcuMemcpy2D_v2, "cuMemcpy2D_v2");
@@ -347,6 +361,7 @@
     LOAD_SYMBOL(cuDevicePrimaryCtxReset, tcuDevicePrimaryCtxReset, "cuDevicePrimaryCtxReset");
 
     LOAD_SYMBOL(cuStreamCreate, tcuStreamCreate, "cuStreamCreate");
+    LOAD_SYMBOL(cuStreamCreateWithPriority, tcuStreamCreateWithPriority, "cuStreamCreateWithPriority");
     LOAD_SYMBOL(cuStreamQuery, tcuStreamQuery, "cuStreamQuery");
     LOAD_SYMBOL(cuStreamSynchronize, tcuStreamSynchronize, "cuStreamSynchronize");
     LOAD_SYMBOL(cuStreamDestroy, tcuStreamDestroy_v2, "cuStreamDestroy_v2");
@@ -359,6 +374,7 @@
     LOAD_SYMBOL(cuEventRecord, tcuEventRecord, "cuEventRecord");
 
     LOAD_SYMBOL(cuLaunchKernel, tcuLaunchKernel, "cuLaunchKernel");
+    LOAD_SYMBOL(cuLaunchHostFunc, tcuLaunchHostFunc, "cuLaunchHostFunc");
     LOAD_SYMBOL(cuLinkCreate, tcuLinkCreate, "cuLinkCreate");
     LOAD_SYMBOL(cuLinkAddData, tcuLinkAddData, "cuLinkAddData");
     LOAD_SYMBOL(cuLinkComplete, tcuLinkComplete, "cuLinkComplete");


slack-desc
[code]
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.

                |-----handy-ruler------------------------------------------------------|
nv-codec-headers: nv-codec-headers (Headers for NVidia's codec APIs)
nv-codec-headers:
nv-codec-headers: FFmpeg version of headers required to interface with NVidia's codec
nv-codec-headers: APIs.
nv-codec-headers:
nv-codec-headers:
nv-codec-headers:
nv-codec-headers:
nv-codec-headers:
nv-codec-headers:
nv-codec-headers:



===
[NEW] 2025/10/27


MEGAsync-5.14.0.2_Linux リリース

[Update: Jul. 18. 2025]
Version bump to "5.14.0.2"
------------------------------------
 - Increased the number of parallel transfers.
 - It’s now easier to add syncs during setup.
 - Added support for proxy auto-detection in Linux.
 - We’ve fixed bugs and made the app more reliable.
------------------------------------


MEGAsync.SlackBuild
[code]
#!/bin/sh

# Slackware build script for MEGASync input plugin

# Copyright 2017,2018 Felipe Bugno <capent@yahoo.com>
#
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# 2025-01-21 : 5.7.1.0 (1jw) -- version bump to 5.7.1.0 with sdk-8.0.1
# 2025-02-05 : 5.8.0.2 (1jw) -- version bump to 5.8.0.2 with sdk-8.3.1
# 2025-03-14 : 5.9.0.3 (1jw) -- version bump to 5.9.0.3 with sdk-8.6.0
# 2025-04-09 : 5.10.1.0 (1jw) -- version bump to 5.10.1.0 with sdk-9.0.2
# 2025-05-09 : 5.11.1.0 (1jw) -- version bump to 5.11.1.0 with sdk-9.2.0
# 2025-05-29 : 5.12.0.1 (1jw) -- version bump to 5.12.0.1 with sdk-9.4.0
# 2025-07-01 : 5.13.0.1 (1jw) -- version bump to 5.13.0.1 with sdk-9.6.0
# 2025-07-18 : 5.14.0.2 (1jw) -- version bump to 5.14.0.2 with sdk-9.8.0

PRGNAM=MEGAsync
VERSION=${VERSION:-
5.14.0.2}
SDK=${SDK:-
9.8.0}
BUILD=${BUILD8:-1}
TAG=${TAG:-jw}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i586" ]; then
  SLKCFLAGS="-O2 -march=i586 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION\_Linux
tar xvf $CWD/$PRGNAM-$VERSION\_Linux.tar.gz
cd $PRGNAM-$VERSION\_Linux/src/MEGASync/mega
tar --strip-components=1 -xvf $CWD/sdk-$SDK.tar.gz
cd ../../../
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
  -o -perm 511 \) -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
  -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;

cd src/MEGASync/mega
#patch -p1 < $CWD/010-megasync-freeimage-remove-obsolete-ffmpeg-macros.patch
patch -p1 < $CWD/
020-megasync-sdk-fix-cmake-dependencies-detection.patch
cd ../../../
patch -p1 < $CWD/
030-megasync-app-fix-cmake-dependencies-detection.patch

cd $TMP
rm -rf vcpkg
# Now.. we will use microsoft VCPKG build system for MEGAsync desktop apps
git clone https://github.com/microsoft/vcpkg


CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS"
export CXXFLAGS+=' -DNDEBUG'

cmake -DVCPKG_ROOT=$TMP/vcpkg  -B build -S $PRGNAM-$VERSION\_Linux -DCMAKE_BUILD_TYPE=Release \
-G 'Unix Makefiles' \
-DCMAKE_MODULE_PATH:PATH="$TMP/$PRGNAM-$VERSION\_Linux/src/MEGASync/mega/contrib/cmake/modules/packages" \
-DCMAKE_SKIP_INSTALL_RPATH:BOOL='YES' \
-DENABLE_DESIGN_TOKENS_IMPORTER:BOOL='OFF' \
-DENABLE_DESKTOP_APP_TESTS:BOOL='OFF' \
-Wno-dev

cmake --build build --target MEGAsync

#Install
DESTDIR=$PKG cmake --install build
install -d "$PKG/usr/lib${LIBDIRSUFFIX}"
# Do Not overwrite *.so of default ffmpeg-7.x's libraries.
rm $PKG/opt/megasync/lib/*.so
# Now move ffmpeg related libs to STD lib64 dir
mv $PKG/opt/megasync/lib/* $PKG/usr/lib${LIBDIRSUFFIX}/

install -D -m644 $PRGNAM-$VERSION\_Linux/LICENCE.md -t "$PKG/usr/share/licenses/megasync"
install -D -m644 $PRGNAM-$VERSION\_Linux/installer/terms.txt -t "$PKG/usr/share/licenses/megasync"
install -D -m644 $PRGNAM-$VERSION\_Linux/src/MEGASync/mega/LICENSE "$PKG/usr/share/licenses/megasync/LICENCE-SDK"
rm -d "$PKG/opt"{/megasync{/lib,},}

find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cd $TMP/$PRGNAM-$VERSION\_Linux
cp -a  README.md LICENCE.md CREDITS.md $PKG/usr/doc/$PRGNAM-$VERSION
cp $CWD/020-megasync-sdk-fix-cmake-dependencies-detection.patch \
 $CWD/030-megasync-app-fix-cmake-dependencies-detection.patch \
 $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}

MEGAsync.info
[code]
PRGNAM="MEGAsync"
VERSION="
5.14.0.2"
HOMEPAGE="
https://github.com/meganz/MEGAsync/"
DOWNLOAD="
https://github.com/meganz/MEGAsync/archive/v5.14.0.2_Linux/MEGAsync-5.14.0.2_Linux.tar.gz \
 
https://github.com/meganz/sdk/archive/v9.8.0/sdk-9.8.0.tar.gz"
MD5SUM="a8d5cc096ea63f3f7550c2ef639ef633"
       "f52f9e82822f2a0f2833c3618ac4d5b1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="FreeImage libmediainfo"
MAINTAINER=""
EMAIL=""

020-megasync-sdk-fix-cmake-dependencies-detection.patch
[code]
--- a/cmake/modules/sdklib_libraries.cmake
+++ b/cmake/modules/sdklib_libraries.cmake
@@ -91,7 +91,7 @@ macro(load_sdklib_libraries)
 
         find_package(PkgConfig REQUIRED) # For libraries loaded using pkg-config
 
-        pkg_check_modules(cryptopp REQUIRED IMPORTED_TARGET libcrypto++)
+        pkg_check_modules(cryptopp REQUIRED IMPORTED_TARGET libcryptopp)
         target_link_libraries(SDKlib PUBLIC PkgConfig::cryptopp) # TODO: Private for SDK core
 
         pkg_check_modules(sodium REQUIRED IMPORTED_TARGET libsodium)
@@ -135,7 +135,7 @@ macro(load_sdklib_libraries)
         endif()
 
         if(USE_PDFIUM)
-            pkg_check_modules(pdfium REQUIRED IMPORTED_TARGET pdfium)
+            pkg_check_modules(pdfium REQUIRED IMPORTED_TARGET libpdfium)
             target_link_libraries(SDKlib PRIVATE PkgConfig::pdfium)
             set(HAVE_PDFIUM 1)
         endif()

030-megasync-app-fix-cmake-dependencies-detection.patch
[code]
--- a/src/MEGAUpdateGenerator/CMakeLists.txt
+++ b/src/MEGAUpdateGenerator/CMakeLists.txt
@@ -15,10 +15,11 @@ target_sources(MEGAUpdateGenerator
 )
 
 # Load and link needed libraries for the CHATlib target
-find_package(cryptopp CONFIG REQUIRED)
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(cryptopp REQUIRED IMPORTED_TARGET libcryptopp)
 target_link_libraries(MEGAUpdateGenerator
     PRIVATE
-    cryptopp::cryptopp
+    PkgConfig::cryptopp
     MEGA::SDKlib
 )


slack-desc
[code]
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct.  It's also
# customary to leave one space after the ':' except on otherwise blank lines.

        |-----handy-ruler------------------------------------------------------|
MEGAsync: MEGAsync (mega cloud storage service)
MEGAsync:
MEGAsync: MEGAsync open source release for MEGA cloud storage services
MEGAsync:
MEGAsync:
MEGAsync: Compiled using default Slackware Qt4.
MEGAsync:
MEGAsync: Homepage: https://github.com/meganz/MEGAsync
MEGAsync: Service: https://mega.nz/
MEGAsync:
MEGAsync:

doinst.sh
[code]
if [ -x /usr/bin/update-desktop-database ]; then
  /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi

if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
  if [ -x /usr/bin/gtk-update-icon-cache ]; then
    /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
  fi
fi

---
[Update] Jul.25,2025

ギャラリー
  • deepl-clip.sh で簡単翻訳 [更新:2025-04-29]
  • Avidemux 2.8.2_20250323_7cf15b3
  • Avidemux 2.8.2_20250323_7cf15b3
  • Avidemux 2.8.x with Qt6 GUI
  • Avidemux 2.8.x with Qt6 GUI
  • MEGAcmd-2.0.0_Linux
  • gcolor3 with Japanese menu and LC_MESSAGES
  • avidemux2 TEST package from the latest git source (on jul.23.2024)
  • fcitx5-mozc-2.29.5135.102.1 (15jw) -- Added "merge-ut-dictionaries"