gitlab-ci, build/windows: Make Packaging scripts compatible with CI-Cross job

The CI crossbuild job now use the same main script (and the same
sub-scripts of linking and debug generation) of the native CI for
packaging. These unified scripts greatly facilitates maintenance.

The crossbuild deps script is now more consistent in relation to the
native one. As this is polished, the cross one is now polished too.

A crossroad gimp build script was created with a more clear code.

Also, finally make the script for packaging only, removing build step
stuff that shoudn't be here (glib-schemas generation) since this causes
disparity with the Local native build; and adding some packaging
decisions that shoudn't be in the installer scripts (eg. specific
folders of ghostscript, glib; no share/themes), which also facillitates
INNO (and future MSIX) maintenance.
This commit is contained in:
Bruno Lopes 2023-12-25 08:43:36 -03:00 committed by Jehan
parent 8b9aa1e7ca
commit af79bbe028
5 changed files with 233 additions and 312 deletions

View File

@ -395,14 +395,17 @@ deps-win-x64-cross:
# adds a local/ folder to the install prefix of setup.py. This environment # adds a local/ folder to the install prefix of setup.py. This environment
# variable overrides this behavior. # variable overrides this behavior.
DEB_PYTHON_INSTALL_LAYOUT: "deb" DEB_PYTHON_INSTALL_LAYOUT: "deb"
APT_CACHE: "${CI_PROJECT_DIR}/apt-cache"
cache: cache:
paths: paths:
- .cache/crossroad/ - .cache/crossroad/
- apt-cache - apt-cache
before_script: before_script:
- apt-get update - apt-get update
- apt-get install -y --no-install-recommends wine wine64 - mkdir -p "$APT_CACHE"
- apt-get install -y --no-install-recommends -o dir::cache::archives="$APT_CACHE"
wine
wine64
- git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/crossroad/crossroad.git - git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/crossroad/crossroad.git
- cd crossroad - cd crossroad
- ./setup.py install --prefix=`pwd`/../.local - ./setup.py install --prefix=`pwd`/../.local
@ -416,7 +419,8 @@ deps-win-x64-cross:
expire_in: 2 hours expire_in: 2 hours
paths: paths:
- .local/ - .local/
- _deps/ - _deps/_babl/_build-x64/
- _deps/_gegl/_build-x64/
needs: ["image-win-x64-cross"] needs: ["image-win-x64-cross"]
gimp-win-x64-cross: gimp-win-x64-cross:
@ -440,20 +444,15 @@ gimp-win-x64-cross:
- apt-cache - apt-cache
script: script:
- export PATH="`pwd`/.local/bin:$PATH" - export PATH="`pwd`/.local/bin:$PATH"
- mkdir _build && cd _build - crossroad w64 gimp --run="build/windows/gitlab-ci/2_build-gimp-crossroad.sh"
- echo 'crossroad meson setup ..
-Dgi-docgen=disabled && ninja && ninja install &&
cp -fr $CROSSROAD_PREFIX/ ../gimp-prefix/
' |
crossroad w64 gimp --run="-"
needs: ["deps-win-x64-cross"] needs: ["deps-win-x64-cross"]
artifacts: artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}" name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
when: always when: always
expire_in: 1 day expire_in: 1 day
paths: paths:
- _build/ - _build-x64/
- gimp-prefix/ - _install-x64/
packaging-win-x64-nightly: packaging-win-x64-nightly:
rules: rules:
@ -465,73 +464,27 @@ packaging-win-x64-nightly:
dependencies: dependencies:
- gimp-win-x64-cross - gimp-win-x64-cross
variables: variables:
GIMP_PREFIX: "gimp-prefix" BUILD_TYPE: "CI_CROSS"
GIMP_DISTRIB: "gimp-w64" CROSSROAD_PLATFORM: "w64"
artifacts: artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}" name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
when: always when: always
expire_in: 2 days expire_in: 2 days
paths: paths:
- gimp-w64 - gimp-x64
script: - done-dll.list
before_script:
- apt-get update - apt-get update
- apt-get install -y --no-install-recommends - apt-get install -y --no-install-recommends
python3 binutils-mingw-w64-x86-64 file binutils
libglib2.0-bin binutils-mingw-w64-x86-64
file
# Package ressources. libglib2.0-bin
- mkdir -p ${GIMP_DISTRIB} python3
- cp -fr ${GIMP_PREFIX}/etc ${GIMP_DISTRIB} script:
- cp -fr ${GIMP_PREFIX}/include ${GIMP_DISTRIB} - bash -x build/windows/gitlab-ci/3_package-gimp-uni_base.sh
- cp -fr ${GIMP_PREFIX}/share ${GIMP_DISTRIB} - cd gimp-x64
- bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh
# Package executables.
- mkdir ${GIMP_DISTRIB}/bin
- cp -fr ${GIMP_PREFIX}/bin/gimp*.exe ${GIMP_DISTRIB}/bin/
# Add a wrapper at tree root, less messy than having to look for the
# binary inside bin/, in the middle of all the DLLs.
- echo "bin\gimp-2.99.exe" > ${GIMP_DISTRIB}/gimp.cmd
# Package library data and modules.
- mkdir ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/gimp ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/gio ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/gdk-pixbuf-2.0 ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/gegl-0.4 ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/babl-0.1 ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/girepository-1.0 ${GIMP_DISTRIB}/lib/
# Remove files for older GIMP
- rm -fr ${GIMP_DISTRIB}/lib/gimp/2.0/
# Generate share/glib-2.0/schemas/gschemas.compiled
- glib-compile-schemas --targetdir=${GIMP_DISTRIB}/share/glib-2.0/schemas ${GIMP_DISTRIB}/share/glib-2.0/schemas
# Package needed DLLs only
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-console-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-test-clipboard-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimptool-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list
- for dll in ${GIMP_DISTRIB}/lib/babl-0.1/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gegl-0.4/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gio/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/plug-ins/*/*.exe; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win64-nightly-dll.list;
done
needs: ["gimp-win-x64-cross"] needs: ["gimp-win-x64-cross"]
## WINDOWS 32-bit CI (cross-build crossroad) ## ## WINDOWS 32-bit CI (cross-build crossroad) ##
@ -551,6 +504,10 @@ deps-win-x86-cross:
- .cache/crossroad/ - .cache/crossroad/
- apt-cache - apt-cache
before_script: before_script:
- apt-get update
- mkdir -p "$APT_CACHE"
- apt-get install -y --no-install-recommends -o dir::cache::archives="$APT_CACHE"
wine
- git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/crossroad/crossroad.git - git clone --depth=${GIT_DEPTH} https://gitlab.freedesktop.org/crossroad/crossroad.git
- cd crossroad - cd crossroad
- ./setup.py install --prefix=`pwd`/../.local - ./setup.py install --prefix=`pwd`/../.local
@ -564,7 +521,8 @@ deps-win-x86-cross:
expire_in: 2 hours expire_in: 2 hours
paths: paths:
- .local/ - .local/
- _deps/ - _deps/_babl/_build-x86/
- _deps/_gegl/_build-x86/
needs: ["image-win-x86-cross"] needs: ["image-win-x86-cross"]
gimp-win-x86-cross: gimp-win-x86-cross:
@ -575,6 +533,7 @@ gimp-win-x86-cross:
image: $CI_REGISTRY_IMAGE:build-win32-latest image: $CI_REGISTRY_IMAGE:build-win32-latest
dependencies: dependencies:
- deps-win-x86-cross - deps-win-x86-cross
- deps-win-x64-cross
variables: variables:
XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/" XDG_CACHE_HOME: "$CI_PROJECT_DIR/.cache/"
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/" XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
@ -584,20 +543,15 @@ gimp-win-x86-cross:
- apt-cache - apt-cache
script: script:
- export PATH="`pwd`/.local/bin:$PATH" - export PATH="`pwd`/.local/bin:$PATH"
- mkdir _build && cd _build - crossroad w32 gimp --run="build/windows/gitlab-ci/2_build-gimp-crossroad.sh"
- echo 'crossroad meson setup .. needs: ["deps-win-x86-cross", "deps-win-x64-cross"]
-Dwmf=disabled -Dmng=disabled -Dgi_docgen=false && ninja && ninja install &&
cp -fr $CROSSROAD_PREFIX/ ../gimp-prefix/
' |
crossroad w32 gimp --run="-"
needs: ["deps-win-x86-cross"]
artifacts: artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}" name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
when: always when: always
expire_in: 1 day expire_in: 1 day
paths: paths:
- _build/ - _build-x86/
- gimp-prefix/ - _install-x86/
packaging-win-x86-nightly: packaging-win-x86-nightly:
rules: rules:
@ -606,80 +560,30 @@ packaging-win-x86-nightly:
stage: packaging stage: packaging
dependencies: dependencies:
- gimp-win-x86-cross - gimp-win-x86-cross
- deps-win-x64-cross
variables: variables:
GIMP_PREFIX: "gimp-prefix" BUILD_TYPE: "CI_CROSS"
GIMP_DISTRIB: "gimp-w32" CROSSROAD_PLATFORM: "w32"
XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/" XDG_DATA_HOME: "$CI_PROJECT_DIR/.local/share/"
artifacts: artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}" name: "${CI_JOB_NAME}-${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}"
when: always when: always
expire_in: 2 days expire_in: 2 days
paths: paths:
- gimp-w32 - gimp-x86
script: - done-dll.list
before_script:
- apt-get update - apt-get update
- apt-get install -y --no-install-recommends - apt-get install -y --no-install-recommends
python3 binutils-mingw-w64-i686 file binutils
libglib2.0-bin binutils-mingw-w64-i686
file
# Package ressources. libglib2.0-bin
- mkdir -p ${GIMP_DISTRIB} python3
- cp -fr ${GIMP_PREFIX}/etc ${GIMP_DISTRIB} script:
- cp -fr ${GIMP_PREFIX}/include ${GIMP_DISTRIB} - bash -x build/windows/gitlab-ci/3_package-gimp-uni_base.sh
- cp -fr ${GIMP_PREFIX}/ssl ${GIMP_DISTRIB} - cd gimp-x86
- cp -fr ${GIMP_PREFIX}/share ${GIMP_DISTRIB} - bash -x ../build/windows/gitlab-ci/3_package-gimp-uni_sym.sh
needs: ["gimp-win-x86-cross"]
# Package executables.
- mkdir ${GIMP_DISTRIB}/bin
- cp -fr ${GIMP_PREFIX}/bin/gimp*.exe ${GIMP_DISTRIB}/bin/
# Add a wrapper at tree root, less messy than having to look for the
# binary inside bin/, in the middle of all the DLLs.
- echo "bin\gimp-2.99.exe" > ${GIMP_DISTRIB}/gimp.cmd
# Package library data and modules.
- mkdir ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/gimp ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/gio ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/gdk-pixbuf-2.0 ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/gegl-0.4 ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/babl-0.1 ${GIMP_DISTRIB}/lib/
- cp -fr ${GIMP_PREFIX}/lib/girepository-1.0 ${GIMP_DISTRIB}/lib/
# I fail to install wine32 inside the Gitlab runner. So instead, I
# just reuse the loaders.cache generated in the deps-win64 job as
# they should be the same (text format).
- cp ${XDG_DATA_HOME}/crossroad/roads/w64/gimp/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache ${GIMP_DISTRIB}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
# Generate share/glib-2.0/schemas/gschemas.compiled
- glib-compile-schemas --targetdir=${GIMP_DISTRIB}/share/glib-2.0/schemas ${GIMP_DISTRIB}/share/glib-2.0/schemas
# Package needed DLLs only.
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-console-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-test-clipboard-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list
- python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimptool-2.99.exe ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list
- for dll in ${GIMP_DISTRIB}/lib/babl-0.1/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gegl-0.4/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gio/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
done
- for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/plug-ins/*/*.exe; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list win32-nightly-dll.list;
done
needs: ["gimp-win-x86-cross", "deps-win-x64-cross"]
## WINDOWS Aarch64 CI (native MSYS2) ## ## WINDOWS Aarch64 CI (native MSYS2) ##
@ -1052,7 +956,7 @@ cppcheck:
- apt-get install -y cppcheck - apt-get install -y cppcheck
script: script:
- cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2 - cppcheck -q -j8 --enable=all --force --output-file=cppcheck.xml --xml --xml-version=2
-i _build -i _deps -i gimp-prefix -i .local -i .cache . -i _build-x64 -i _build-x86 -i _deps -i _install-x64 -i _install-x86 -i .local -i .cache .
- mkdir report - mkdir report
- cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report - cppcheck-htmlreport --source-dir=. --title=gimp --file=cppcheck.xml --report-dir=report
artifacts: artifacts:

View File

@ -1,21 +1,35 @@
if [[ "x$CROSSROAD_PLATFORM" = "xw64" ]]; then
export ARTIFACTS_SUFFIX="-x64"
else # [[ "x$CROSSROAD_PLATFORM" = "xw32" ]];
export ARTIFACTS_SUFFIX="-x86"
fi
# Install the required (pre-built) packages for babl and GEGL
crossroad source msys2 crossroad source msys2
crossroad install cairo \
graphviz \
json-glib \
lcms2
# Clone babl and GEGL (follow master branch)
mkdir _deps && cd _deps mkdir _deps && cd _deps
git clone --depth 1 https://gitlab.gnome.org/GNOME/babl.git _babl
git clone --depth 1 https://gitlab.gnome.org/GNOME/gegl.git _gegl
# babl # Build babl and GEGL
mkdir _babl/_build${ARTIFACTS_SUFFIX}/ && cd _babl/_build${ARTIFACTS_SUFFIX}/
crossroad meson setup .. -Denable-gir=false \
-Dlibdir=lib
ninja && ninja install
crossroad install lcms2 && \ mkdir ../../_gegl/_build${ARTIFACTS_SUFFIX}/ && cd ../../_gegl/_build${ARTIFACTS_SUFFIX}/
git clone --depth 1 https://gitlab.gnome.org/GNOME/babl.git && cd babl && \ crossroad meson setup .. -Dintrospection=false \
crossroad meson setup _build/ -Denable-gir=false -Dlibdir=lib && \ -Dlibdir=lib \
ninja -C _build install || exit 1 -Dsdl2=disabled
cd .. ninja && ninja install
cd ../../
# GEGL
crossroad install cairo graphviz json-glib && \
git clone --depth 1 https://gitlab.gnome.org/GNOME/gegl.git && cd gegl && \
crossroad meson setup _build/ -Dintrospection=false -Dsdl2=disabled -Dlibdir=lib && \
ninja -C _build install || exit 1
cd ..
# Install the required (pre-built) packages for GIMP # Install the required (pre-built) packages for GIMP
export DEPS_PATH="../build/windows/gitlab-ci/all-deps-uni.txt" export DEPS_PATH="../build/windows/gitlab-ci/all-deps-uni.txt"

View File

@ -0,0 +1,18 @@
if [[ "x$CROSSROAD_PLATFORM" = "xw64" ]]; then
export ARTIFACTS_SUFFIX="-x64"
export MESON_OPTIONS=""
else # [[ "x$CROSSROAD_PLATFORM" = "xw32" ]];
export ARTIFACTS_SUFFIX="-x86"
export MESON_OPTIONS="-Dwmf=disabled -Dmng=disabled"
fi
# Build GIMP
mkdir _build${ARTIFACTS_SUFFIX} && cd _build${ARTIFACTS_SUFFIX}
crossroad meson setup .. -Dgi-docgen=disabled \
-Djavascript=disabled $MESON_OPTIONS
ninja && ninja install
cd ..
# Copy the required packages and (part of) GIMP from the deps artifact
cp -fr $CROSSROAD_PREFIX/ _install${ARTIFACTS_SUFFIX}/

View File

@ -1,89 +1,100 @@
#!/bin/bash #!/bin/bash
# $MINGW_PACKAGE_PREFIX is defined by MSYS2. # $MSYSTEM_CARCH and $MINGW_PACKAGE_PREFIX are defined by MSYS2.
# https://github.com/msys2/MSYS2-packages/blob/master/filesystem/msystem # https://github.com/msys2/MSYS2-packages/blob/master/filesystem/msystem
set -e set -e
if [[ "$MSYSTEM" == "MINGW32" ]]; then if [[ "$MSYSTEM_CARCH" == "aarch64" ]]; then
export ARTIFACTS_SUFFIX="-w32" export ARTIFACTS_SUFFIX="-a64"
export MSYS_PREFIX="/c/msys64/mingw32/" export MSYS_PREFIX="c:/msys64${MSYSTEM_PREFIX}"
export PATH="/mingw32/bin:$PATH" export GIMP_DISTRIB=`realpath ./gimp-a64`
export GIMP_DISTRIB=`realpath ./gimp-w32` elif [[ "$CROSSROAD_PLATFORM" == "w64" ]] || [[ "$MSYSTEM_CARCH" == "x86_64" ]]; then
elif [[ "$MSYSTEM" == "MINGW64" ]]; then export ARTIFACTS_SUFFIX="-x64"
export ARTIFACTS_SUFFIX="-w64" export MSYS_PREFIX="c:/msys64${MSYSTEM_PREFIX}"
export MSYS_PREFIX="/c/msys64/mingw64/" export GIMP_DISTRIB=`realpath ./gimp-x64`
export PATH="/mingw64/bin:$PATH" else # [[ "$CROSSROAD_PLATFORM" == "w32" ]] || [[ "$MSYSTEM_CARCH" == "i686" ]];
export GIMP_DISTRIB=`realpath ./gimp-w64` export ARTIFACTS_SUFFIX="-x86"
else # [[ "$MSYSTEM" == "CLANGARM64" ]]; export MSYS_PREFIX="c:/msys64${MSYSTEM_PREFIX}"
export ARTIFACTS_SUFFIX="-arm64" export GIMP_DISTRIB=`realpath ./gimp-x86`
export MSYS_PREFIX="/c/msys64/clangarm64/"
export PATH="/clangarm64/bin:$PATH"
export GIMP_DISTRIB=`realpath ./gimp-arm64`
fi fi
# Update everything
if [[ "$BUILD_TYPE" != "CI_CROSS" ]]; then
# Install the required (pre-built) packages again
pacman --noconfirm -Suy pacman --noconfirm -Suy
# Install the required (pre-built) packages again
export DEPS_PATH="build/windows/gitlab-ci/all-deps-uni.txt" export DEPS_PATH="build/windows/gitlab-ci/all-deps-uni.txt"
sed -i "s/DEPS_ARCH_/${MINGW_PACKAGE_PREFIX}-/g" $DEPS_PATH sed -i "s/DEPS_ARCH_/${MINGW_PACKAGE_PREFIX}-/g" $DEPS_PATH
export GIMP_DEPS=`cat $DEPS_PATH` export GIMP_DEPS=`cat $DEPS_PATH`
pacman --noconfirm -S --needed base-devel $GIMP_DEPS pacman --noconfirm -S --needed base-devel $GIMP_DEPS
fi
# Package deps and GIMP files
export GIMP_PREFIX="`realpath ./_install`${ARTIFACTS_SUFFIX}" export GIMP_PREFIX="`realpath ./_install`${ARTIFACTS_SUFFIX}"
export PATH="$GIMP_PREFIX/bin:$PATH" export PATH="$GIMP_PREFIX/bin:$PATH"
if [[ "$BUILD_TYPE" == "CI_CROSS" ]]; then
export MSYS_PREFIX="$GIMP_PREFIX"
fi
# Package ressources. ## Copy a previously built wrapper at tree root, less messy than
## having to look inside bin/, in the middle of all the DLLs.
## This utility also configure the interpreters.
## Then, copy a built README that make clear the utility of .cmd.
mkdir -p ${GIMP_DISTRIB} mkdir -p ${GIMP_DISTRIB}
cp -fr ${GIMP_PREFIX}/etc ${GIMP_DISTRIB} cp -fr ${GIMP_PREFIX}/*.cmd ${GIMP_DISTRIB}/
cp -fr ${GIMP_PREFIX}/include ${GIMP_DISTRIB} cp -fr ${GIMP_PREFIX}/*.txt ${GIMP_DISTRIB}/
#cp -fr ${GIMP_PREFIX}/ssl ${GIMP_DISTRIB}
cp -fr ${GIMP_PREFIX}/share ${GIMP_DISTRIB}
# Package executables.
mkdir ${GIMP_DISTRIB}/bin
cp -fr ${GIMP_PREFIX}/bin/gimp*.exe ${GIMP_DISTRIB}/bin/
# With the native Windows build, it's directly in bin/ ## Modules.
#mkdir ${GIMP_DISTRIB}/libexec mkdir ${GIMP_DISTRIB}/etc
#cp -fr ${GIMP_PREFIX}/libexec/gimp*.exe ${GIMP_DISTRIB}/libexec/ cp -fr ${MSYS_PREFIX}/etc/fonts/ ${GIMP_DISTRIB}/etc/
cp -fr ${GIMP_PREFIX}/etc/gimp/ ${GIMP_DISTRIB}/etc/
cp -fr ${MSYS_PREFIX}/etc/gtk-*/ ${GIMP_DISTRIB}/etc/
# Add a wrapper at tree root, less messy than having to look for the
# binary inside bin/, in the middle of all the DLLs.
echo "bin\gimp-2.99.exe" > ${GIMP_DISTRIB}/gimp.cmd
# Package library data and modules. ## Headers.
cp -fr ${MSYS_PREFIX}/etc/fonts ${GIMP_DISTRIB}/etc/ mkdir ${GIMP_DISTRIB}/include
cp -fr ${MSYS_PREFIX}/etc/gtk-3.0 ${GIMP_DISTRIB}/etc/ cp -fr ${GIMP_PREFIX}/include/babl-*/ ${GIMP_DISTRIB}/include/
cp -fr ${GIMP_PREFIX}/include/gegl-*/ ${GIMP_DISTRIB}/include/
cp -fr ${GIMP_PREFIX}/include/gimp-*/ ${GIMP_DISTRIB}/include/
mkdir ${GIMP_DISTRIB}/lib/
cp -fr ${GIMP_PREFIX}/lib/gimp ${GIMP_DISTRIB}/lib/
cp -fr ${GIMP_PREFIX}/lib/gegl-0.4 ${GIMP_DISTRIB}/lib/
cp -fr ${GIMP_PREFIX}/lib/babl-0.1 ${GIMP_DISTRIB}/lib/
cp -fr ${MSYS_PREFIX}/lib/girepository-1.0 ${GIMP_DISTRIB}/lib/ ## Library data.
cp -fr ${GIMP_PREFIX}/lib/girepository-1.0/* ${GIMP_DISTRIB}/lib/girepository-1.0/ mkdir ${GIMP_DISTRIB}/lib
cp -fr ${GIMP_PREFIX}/lib/babl-*/ ${GIMP_DISTRIB}/lib/
cp -fr ${MSYS_PREFIX}/lib/gdk-pixbuf-*/ ${GIMP_DISTRIB}/lib/
cp -fr ${GIMP_PREFIX}/lib/gegl-*/ ${GIMP_DISTRIB}/lib/
cp -fr ${GIMP_PREFIX}/lib/gimp/ ${GIMP_DISTRIB}/lib/
cp -fr ${MSYS_PREFIX}/lib/gio/ ${GIMP_DISTRIB}/lib/
cp -fr ${MSYS_PREFIX}/lib/gio ${GIMP_DISTRIB}/lib/ aList=$(find ${GIMP_DISTRIB}/lib/ -iname '*.a') && aArray=($aList)
cp -fr ${MSYS_PREFIX}/lib/gdk-pixbuf-2.0 ${GIMP_DISTRIB}/lib/ for a in "${aArray[@]}"; do
cp -fr ${MSYS_PREFIX}/lib/gtk-3.0 ${GIMP_DISTRIB}/lib/ rm $a
done
rm ${GIMP_DISTRIB}/lib/gegl-*/*.json
cp -fr ${MSYS_PREFIX}/lib/python3.11 ${GIMP_DISTRIB}/lib/
cp -fr ${MSYS_PREFIX}/share/ghostscript ${GIMP_DISTRIB}/share/ ## Resources.
cp -fr ${MSYS_PREFIX}/share/glib-2.0 ${GIMP_DISTRIB}/share/ mkdir ${GIMP_DISTRIB}/share
cp -fr ${MSYS_PREFIX}/share/libthai ${GIMP_DISTRIB}/share/ cp -fr ${MSYS_PREFIX}/share/ghostscript/ ${GIMP_DISTRIB}/share/
cp -fr ${MSYS_PREFIX}/share/libwmf ${GIMP_DISTRIB}/share/ rm -r ${GIMP_DISTRIB}/share/ghostscript/*/doc
cp -fr ${MSYS_PREFIX}/share/mypaint-data ${GIMP_DISTRIB}/share/ cp -fr ${GIMP_PREFIX}/share/gimp/ ${GIMP_DISTRIB}/share/
cp -fr ${MSYS_PREFIX}/share/poppler ${GIMP_DISTRIB}/share/ export GLIB_PATH=`echo ${MSYS_PREFIX}/share/glib-*/schemas`
GLIB_PATH=$(sed "s|${MSYS_PREFIX}/||g" <<< $GLIB_PATH)
mkdir -p ${GIMP_DISTRIB}/${GLIB_PATH}
cp -fr ${MSYS_PREFIX}/share/glib-*/schemas/ ${GIMP_DISTRIB}/share/glib-*/
cp -fr ${MSYS_PREFIX}/share/lua/ ${GIMP_DISTRIB}/share/ ### Adwaita can be used as the base icon set.
cp -fr ${MSYS_PREFIX}/lib/lua/ ${GIMP_DISTRIB}/lib/ mkdir -p ${GIMP_DISTRIB}/share/icons
cp -fr ${MSYS_PREFIX}/share/icons/Adwaita/ ${GIMP_DISTRIB}/share/icons/
cp -fr ${GIMP_PREFIX}/share/icons/hicolor/ ${GIMP_DISTRIB}/share/icons/
# XXX Are these themes really needed? cp -fr ${MSYS_PREFIX}/share/libthai/ ${GIMP_DISTRIB}/share/
cp -fr ${MSYS_PREFIX}/share/themes ${GIMP_DISTRIB}/share/ cp -fr ${MSYS_PREFIX}/share/libwmf/ ${GIMP_DISTRIB}/share/
# Only copy from langs supported in GIMP. ### Only copy from langs supported in GIMP.
cp -fr ${GIMP_PREFIX}/share/locale/ ${GIMP_DISTRIB}/share/
for dir in ${GIMP_DISTRIB}/share/locale/*/; do for dir in ${GIMP_DISTRIB}/share/locale/*/; do
lang=`basename "$dir"`; lang=`basename "$dir"`;
# TODO: ideally we could be a bit more accurate and copy only the # TODO: ideally we could be a bit more accurate and copy only the
@ -95,93 +106,70 @@ for dir in ${GIMP_DISTRIB}/share/locale/*/; do
fi fi
done; done;
# Only one iso-codes file is useful. mkdir -p ${GIMP_DISTRIB}/share/man/man1
mkdir -p ${GIMP_DISTRIB}/share/man/man5
cp -fr ${GIMP_PREFIX}/share/man/man1/gimp* ${GIMP_DISTRIB}/share/man/man1/
cp -fr ${GIMP_PREFIX}/share/man/man5/gimp* ${GIMP_DISTRIB}/share/man/man5/
mkdir ${GIMP_DISTRIB}/share/metainfo
cp -fr ${GIMP_PREFIX}/share/metainfo/org.gimp*.xml ${GIMP_DISTRIB}/share/metainfo/
cp -fr ${MSYS_PREFIX}/share/mypaint-data/ ${GIMP_DISTRIB}/share/
cp -fr ${MSYS_PREFIX}/share/poppler/ ${GIMP_DISTRIB}/share/
### Only one iso-codes file is useful.
mkdir -p ${GIMP_DISTRIB}/share/xml/iso-codes mkdir -p ${GIMP_DISTRIB}/share/xml/iso-codes
cp -fr ${MSYS_PREFIX}/share/xml/iso-codes/iso_639.xml ${GIMP_DISTRIB}/share/xml/iso-codes/ cp -fr ${MSYS_PREFIX}/share/xml/iso-codes/iso_639.xml ${GIMP_DISTRIB}/share/xml/iso-codes/
# Adwaita can be used as the base icon set.
cp -fr ${MSYS_PREFIX}/share/icons/Adwaita ${GIMP_DISTRIB}/share/icons/
# Gdbus is needed to avoid warnings in CMD. ## Executables and DLLs.
cp -fr ${MSYS_PREFIX}/bin/gdbus.exe ${GIMP_DISTRIB}/bin
# XXX Why are these for exactly? ### We save the list of already copied DLLs to keep a state between 3_package-gimp-uni_dep runs.
cp -fr ${MSYS_PREFIX}/bin/gspawn*.exe ${GIMP_DISTRIB}/bin/
# We save the list of already copied DLLs to keep a state between dll_link runs.
rm -f done-dll.list rm -f done-dll.list
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gspawn-win*-helper.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX} ${GIMP_DISTRIB} --output-dll-list done-dll.list ### Minimal executables for the 'bin' folder
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gspawn-win*-helper-console.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list mkdir ${GIMP_DISTRIB}/bin
binArray=("${MSYS_PREFIX}/bin/bzip2.exe"
"${MSYS_PREFIX}/bin/dot.exe"
"${MSYS_PREFIX}/bin/gdbus.exe"
"${MSYS_PREFIX}/bin/gdk-pixbuf-query-loaders.exe"
"${GIMP_PREFIX}/bin/gimp*.exe"
"${MSYS_PREFIX}/bin/gspawn*.exe")
for exe in "${binArray[@]}"; do
cp -fr $exe ${GIMP_DISTRIB}/bin/
done
# XXX Does not look like it's needed anymore. Check? ## Optional executables, .DLLs and resources for GObject Introspection support
cp -fr ${MSYS_PREFIX}/bin/gdk-pixbuf-query-loaders.exe ${GIMP_DISTRIB}/bin/ if [[ "$BUILD_TYPE" != "CI_CROSS" ]]; then
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gdk-pixbuf-query-loaders.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list cp -fr ${MSYS_PREFIX}/bin/libgirepository-*.dll ${GIMP_DISTRIB}/bin/
python3 build/windows/gitlab-ci/3_package-gimp-uni_dep.py ${GIMP_DISTRIB}/bin/libgirepository-*.dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
cp -fr ${MSYS_PREFIX}/lib/girepository-*/ ${GIMP_DISTRIB}/lib/
cp -fr ${GIMP_PREFIX}/lib/girepository-*/* ${GIMP_DISTRIB}/lib/girepository-*/
cp -fr ${GIMP_PREFIX}/share/gir-*/ ${GIMP_DISTRIB}/share/
# XXX Why is bzip2.exe needed?
cp -fr ${MSYS_PREFIX}/bin/bzip2.exe ${GIMP_DISTRIB}/bin/
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/bzip2.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
# Executables for supported interpreters.
cp -fr ${MSYS_PREFIX}/bin/pythonw.exe ${GIMP_DISTRIB}/bin/
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/pythonw.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
cp -fr ${MSYS_PREFIX}/bin/python3w.exe ${GIMP_DISTRIB}/bin/
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/python3w.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
cp -fr ${MSYS_PREFIX}/bin/python3.exe ${GIMP_DISTRIB}/bin/
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/python3.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
if [[ "$MSYSTEM" == "CLANGARM64" ]]; then
cp -fr ${MSYS_PREFIX}/bin/lua5.1.exe ${GIMP_DISTRIB}/bin/
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/lua5.1.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
else
cp -fr ${MSYS_PREFIX}/bin/luajit.exe ${GIMP_DISTRIB}/bin/ cp -fr ${MSYS_PREFIX}/bin/luajit.exe ${GIMP_DISTRIB}/bin/
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/luajit.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list cp -fr ${MSYS_PREFIX}/lib/lua/ ${GIMP_DISTRIB}/lib/
cp -fr ${MSYS_PREFIX}/share/lua/ ${GIMP_DISTRIB}/share/
cp -fr ${MSYS_PREFIX}/bin/python*.exe ${GIMP_DISTRIB}/bin/
cp -fr ${MSYS_PREFIX}/lib/python*/ ${GIMP_DISTRIB}/lib/
cp -fr ${GIMP_PREFIX}/share/vala/ ${GIMP_DISTRIB}/share/
else
# Just to ensure there is no introspected files that will output annoying warnings
# This is needed because meson.build files can have flaws
goiList=$(find ${GIMP_DISTRIB} \( -iname '*.lua' -or -iname '*.py' -or -iname '*.scm' -or -iname '*.vala' \)) && goiArray=($goiList)
for goi in "${goiArray[@]}"; do
rm $goi
done
fi fi
# Executable for "gegl:introspect" from graphviz package. ### Needed DLLs for the executables in the 'bin' folder
cp -fr ${MSYS_PREFIX}/bin/dot.exe ${GIMP_DISTRIB}/bin/ binList=$(find ${GIMP_DISTRIB}/bin/ -iname '*.exe') && binArray=($binList)
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/dot.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list for bin in "${binArray[@]}"; do
python3 build/windows/gitlab-ci/3_package-gimp-uni_dep.py $bin ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list;
# Generate share/glib-2.0/schemas/gschemas.compiled
glib-compile-schemas --targetdir=${GIMP_DISTRIB}/share/glib-2.0/schemas ${GIMP_DISTRIB}/share/glib-2.0/schemas
# Package needed DLLs only
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-2.99.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-console-2.99.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-debug-resume.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-debug-tool-2.99.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimp-test-clipboard-2.99.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/gimptool-2.99.exe ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list
for dll in ${GIMP_DISTRIB}/lib/babl-0.1/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list;
done
for dll in ${GIMP_DISTRIB}/lib/gegl-0.4/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list;
done
for dll in ${GIMP_DISTRIB}/lib/gio/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list;
done
for dll in ${GIMP_DISTRIB}/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list;
done
for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/modules/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list;
done
for dll in ${GIMP_DISTRIB}/lib/gimp/2.99/plug-ins/*/*.exe; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list;
done done
# Libraries for GObject Introspection. ### Needed DLLs for the executables and DLLs in the 'lib' sub-folders
libList=$(find ${GIMP_DISTRIB}/lib/ \( -iname '*.dll' -or -iname '*.exe' \)) && libArray=($libList)
cp -fr ${MSYS_PREFIX}/bin/libgirepository-1.0-1.dll ${GIMP_DISTRIB}/bin/ for lib in "${libArray[@]}"; do
python3 build/windows/gitlab-ci/dll_link.py ${GIMP_DISTRIB}/bin/libgirepository-1.0-1.dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list python3 build/windows/gitlab-ci/3_package-gimp-uni_dep.py $lib ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list;
done
for dll in ${GIMP_DISTRIB}/lib/python3.11/site-packages/*/*.dll; do
python3 build/windows/gitlab-ci/dll_link.py $dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list;
done

View File

@ -7,23 +7,20 @@ else
export OBJCOPY_OPTIONS="-v" export OBJCOPY_OPTIONS="-v"
fi fi
if [ -z "$1" ]
then # Generate .debug
find . \( -iname '*.dll' -or -iname '*.exe' -or -iname '*.pyd' \) -type f -exec objcopy ${OBJCOPY_OPTIONS} --only-keep-debug '{}' '{}'.debug \; find . \( -iname '*.dll' -or -iname '*.exe' -or -iname '*.pyd' \) -type f -exec objcopy ${OBJCOPY_OPTIONS} --only-keep-debug '{}' '{}'.debug \;
find . \( -iname '*.dll' -or -iname '*.exe' -or -iname '*.pyd' \) -type f -exec objcopy ${OBJCOPY_OPTIONS} --add-gnu-debuglink='{}'.debug '{}' --strip-unneeded \; find . \( -iname '*.dll' -or -iname '*.exe' -or -iname '*.pyd' \) -type f -exec objcopy ${OBJCOPY_OPTIONS} --add-gnu-debuglink='{}'.debug '{}' --strip-unneeded \;
find . -iname '*.debug' -exec "$0" {} +
else # Copy .debug to .debug folder
while [ -n "$1" ] dbgList=$(find . -iname '*.debug') && dbgArray=($dbgList)
do for dbg in "${dbgArray[@]}"; do
FP="$1" FP="$dbg" 0> /dev/null
NAME="${FP##*/}" NAME="${FP##*/}" 0> /dev/null
DIR="${FP%/*}" DIR="${FP%/*}" 0> /dev/null
echo "$FP -> $DIR/.debug" echo "$FP -> $DIR/.debug" 0> /dev/null
if [ ! -d "$DIR/.debug" ] if [ ! -d "$DIR/.debug" ]; then
then mkdir "$DIR/.debug"
mkdir "$DIR/.debug" fi
fi mv "$FP" "$DIR/.debug"
mv "$FP" "$DIR/.debug" done
shift
done
fi