Compare commits

...

4 Commits

Author SHA1 Message Date
Stéphane Lesimple
5b82ec64bc release patchlevel3 2020-09-01 22:16:50 +02:00
Stéphane Lesimple
9fed89dbcf chore: automatically build & upload release assets 2020-09-01 22:16:02 +02:00
Stéphane Lesimple
22b2aba490 fix: windows: flavor in build.h was always UNKNOWN 2020-09-01 12:52:35 +02:00
Stéphane Lesimple
0598fad827 fix: windows: config file couldn't be written
now cfg and log file will be in the same directory than the exe (portable mode)
2020-09-01 12:52:35 +02:00
8 changed files with 384 additions and 37 deletions

315
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,315 @@
on:
release:
types: [published]
name: Upload Release Asset
jobs:
linux64-cli:
name: Linux64 CLI static
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: install prerequisites
run: sudo apt update && sudo apt install -y libglib2.0-dev ghostscript man jq
- name: configure
run: CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc) && make static && mv -f dvdisaster-static dvdisaster
- name: check executable
run: |
./dvdisaster --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster && file dvdisaster | grep -q 'ELF 64' && file dvdisaster | grep -q 'statically linked'
- name: build dist
id: dist
run: |
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-linux64-static-cli-only.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win64-gui:
name: Windows64 GUI
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: false
install: git diffutils make pkg-config mingw-w64-x86_64-gtk2 mingw-w64-x86_64-glib2 mingw-w64-x86_64-gcc mingw-w64-x86_64-ghostscript mingw-w64-x86_64-jq mingw-w64-x86_64-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster.exe && file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: build dist
id: dist
run: |
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-win64.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
mkdir -p dist/lib dist/locale dist/share/themes
cp -vr locale/*/ dist/locale/
cp -vr $MINGW_PREFIX/share/themes/MS-Windows dist/share/themes/
cp -vr $MINGW_PREFIX/lib/gtk-2.0 dist/lib/
find dist -type f -name "*.a" -delete
rm -rf dist/lib/gtk-2.0/include
ntldd -R dvdisaster
for i in $(ntldd -R dvdisaster | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
do
test -e $MINGW_PREFIX/bin/$i && cp -va $MINGW_PREFIX/bin/$i dist/
done
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win32-gui:
name: Windows32 GUI
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: false
install: git diffutils make pkg-config mingw-w64-i686-gtk2 mingw-w64-i686-glib2 mingw-w64-i686-gcc mingw-w64-i686-ghostscript mingw-w64-i686-jq mingw-w64-i686-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster.exe && file dvdisaster.exe | grep -q '386, for MS Windows'
- name: build dist
id: dist
run: |
set -x
set +o pipefail
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-win32.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
mkdir -p dist/lib dist/locale dist/share/themes
cp -vr locale/*/ dist/locale/
cp -vr $MINGW_PREFIX/share/themes/MS-Windows dist/share/themes/
cp -vr $MINGW_PREFIX/lib/gtk-2.0 dist/lib/
find dist -type f -name "*.a" -delete
rm -rf dist/lib/gtk-2.0/include
ntldd -R dvdisaster
for i in $(ntldd -R dvdisaster | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
do
test -e $MINGW_PREFIX/bin/$i && cp -va $MINGW_PREFIX/bin/$i dist/
done
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win64-cli:
name: Windows64 CLI
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: false
install: git diffutils make pkg-config mingw-w64-x86_64-glib2 mingw-w64-x86_64-gcc mingw-w64-x86_64-ghostscript mingw-w64-x86_64-jq mingw-w64-x86_64-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster.exe && file dvdisaster.exe | grep -q 'x86-64, for MS Windows'
- name: build dist
id: dist
run: |
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-win64-cli-only.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
mkdir -p dist/locale
cp -vr locale/*/ dist/locale/
ntldd -R dvdisaster
for i in $(ntldd -R dvdisaster | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
do
test -e $MINGW_PREFIX/bin/$i && cp -va $MINGW_PREFIX/bin/$i dist/
done
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip
win32-cli:
name: Windows32 CLI
runs-on: windows-2016
defaults:
run:
shell: msys2 {0}
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW32
update: false
install: git diffutils make pkg-config mingw-w64-i686-glib2 mingw-w64-i686-gcc mingw-w64-i686-ghostscript mingw-w64-i686-jq mingw-w64-i686-ntldd-git man zip
- run: git config --global core.autocrlf input
shell: bash
- uses: actions/checkout@v2
- name: configure
run: CLI_ONLY=1 ./configure
- name: make
run: nproc && make -j$(nproc)
- name: check executable
run: |
./dvdisaster.exe --version && ./dvdisaster --version | grep -q -e UNKNOWN -e dirty || true
file dvdisaster.exe && file dvdisaster.exe | grep -q '386, for MS Windows'
- name: build dist
id: dist
run: |
archive=dvdisaster-$(echo "${{ github.ref }}" | grep -Eo '[^/]+$')-win32-cli-only.zip
upload_url=$(jq -r '.release.upload_url' < $GITHUB_EVENT_PATH)
echo "Archive name is $archive"
echo "Upload URL is $upload_url"
echo "::set-output name=archive::$archive"
echo "::set-output name=upload_url::$upload_url"
mkdir dist
mkdir -p dist/locale
cp -vr locale/*/ dist/locale/
ntldd -R dvdisaster
for i in $(ntldd -R dvdisaster | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
do
test -e $MINGW_PREFIX/bin/$i && cp -va $MINGW_PREFIX/bin/$i dist/
done
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
mv dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
mv dist ${archive/.zip/}
zip -9r $archive ${archive/.zip/}
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.dist.outputs.upload_url }}
asset_path: ./${{ steps.dist.outputs.archive }}
asset_name: ${{ steps.dist.outputs.archive }}
asset_content_type: application/zip

View File

@@ -1,5 +1,9 @@
# dvdisaster changelog -*-text-*-
0.79.6.patchlevel-3 01-09-2020 *UNOFFICIAL*
- fix: windows: flavor in build version was always 'UNKNOWN'
- fix: windows: the config & log files were not written properly
0.79.6.patchlevel-2 30-08-2020 *UNOFFICIAL*
- fix: Adjust BDXL_QL_SIZE and rollback BD_SL_SIZE to upstream version*
- feat: add --no-bdr-defect-management to produce bigger augmented images with RS03

View File

@@ -336,26 +336,5 @@ srcdist: INSTALL distclean manual manualclean
@cd .. ; tar -c -j -X $(PKGNAME)/NODIST -f $(TAR_PREFIX)/$(PKGNAME).tar.bz2 $(PKGNAME)
@cd .. ; gpg --homedir .gnupg --default-key 758BCC23 --detach-sign --output $(TAR_PREFIX)/$(PKGNAME).tar.bz2.gpg --armor $(TAR_PREFIX)/$(PKGNAME).tar.bz2
MINGWROOT = $(shell dirname $(CC))/..
windist:
rm -rf dist
mkdir -p dist/lib dist/locale dist/share/themes
for i in libatk-1.0-*.dll libbrotlicommon.dll libbrotlidec.dll libbz2-*.dll libcairo-*.dll libdatrie-*.dll libexpat-*.dll libffi-*.dll libfontconfig-*.dll libfreetype-*.dll libfribidi-*.dll libgcc_s_*.dll libgdk_pixbuf-2.0-*.dll libgdk-win32-2.0-*.dll libgio-2.0-*.dll libglib-2.0-*.dll libgmodule-2.0-*.dll libgobject-2.0-*.dll libgraphite2.dll libgtk-win32-2.0-*.dll libharfbuzz-*.dll libiconv-*.dll libintl-*.dll libpango-1.0-*.dll libpangocairo-1.0-*.dll libpangoft2-1.0-*.dll libpangowin32-1.0-*.dll libpcre-*.dll libpixman-1-*.dll libpng16-*.dll libssp-*.dll libstdc++-*.dll libthai-*.dll libwinpthread-*.dll zlib1.dll; \
do cp -v $(MINGWROOT)/bin/$$i dist/ ; done
cp -v dvdisaster.exe dist/
cp -vr locale/*/ dist/locale/
cp -vr $(MINGWROOT)/share/themes/MS-Windows dist/share/themes/
cp -vr $(MINGWROOT)/lib/gtk-2.0 dist/lib/
find dist -type f -name "*.a" -delete
windistcli:
rm -rf dist
mkdir -p dist/locale
for i in libglib-2.0-*.dll libiconv-*.dll libintl-*.dll libpcre-*.dll libwinpthread-*.dll; \
do cp -v $(MINGWROOT)/bin/$$i dist/ ; done
cp -v dvdisaster.exe dist/
cp -vr locale/*/ dist/locale/
find dist -type f -name "*.a" -delete
static: dvdisaster
$(CC) $(LOPTS) $(OFILES) $(LIBS) -pthread -static -o dvdisaster-static

View File

@@ -28,6 +28,33 @@
#define Verbose(format, ...)
#endif
#ifdef SYS_MINGW
#include <windows.h>
/* safety margin in case we're getting UTF path names */
#define WIN_MAX_PATH (4*MAX_PATH)
/*
* Find the place of our executable
* (Windows only)
*/
static char* get_exe_path()
{ char path[WIN_MAX_PATH];
int n = GetModuleFileNameA(NULL, path, WIN_MAX_PATH);
if(n>0 && n<WIN_MAX_PATH-1)
{ char *backslash = strrchr(path, '\\');
if(backslash) *backslash=0;
return g_strdup(path);
}
return g_strdup(".");
}
#endif
/***
*** Locate the binary and documentation directory
***/
@@ -36,9 +63,9 @@ static void get_base_dirs()
{
/*** Unless completely disabled through a configure option, the
source directory is supposed to hold the most recent files,
so try this first. */
so try this first (never under Windows). */
#ifdef WITH_EMBEDDED_SRC_PATH_YES
#if defined(WITH_EMBEDDED_SRC_PATH_YES) && !defined(SYS_MINGW)
if(DirStat(SRCDIR))
{ Closure->binDir = g_strdup(SRCDIR);
Closure->docDir = g_strdup_printf("%s/documentation",SRCDIR);
@@ -50,26 +77,40 @@ static void get_base_dirs()
/*** Otherwise try the installation directory.
On Unices this is a hardcoded directory. */
#if defined(SYS_LINUX) || defined(SYS_FREEBSD) || defined(SYS_KFREEBSD) || \
defined(SYS_NETBSD) || defined(SYS_HURD) || defined(SYS_UNKNOWN)
#ifndef SYS_MINGW
if(DirStat(BINDIR))
Closure->binDir = g_strdup(BINDIR);
if(DirStat(DOCDIR))
Closure->docDir = g_strdup(DOCDIR);
Verbose("Using hardcoded BINDIR = %s, DOCDIR = %s\n", BINDIR, DOCDIR);
#else
Closure->binDir = get_exe_path();
/* We'll just put the 2 PDF in the same dir, portable mode */
Closure->docDir = g_strdup(Closure->binDir);
Verbose("Using path from get_exe_path() = %s\n", Closure->binDir);
#endif
/*** The location of the dotfile depends on the operating system.
Under Unix the users home directory is used. */
#ifdef WITH_EMBEDDED_SRC_PATH_YES
#if defined(WITH_EMBEDDED_SRC_PATH_YES) && !defined(SYS_MINGW)
find_dotfile:
#endif /* WITH_EMBEDDED_SRC_PATH_YES */
#ifndef SYS_MINGW
Closure->homeDir = g_strdup(g_getenv("HOME"));
#else
Closure->homeDir = g_strdup(Closure->binDir); /* portable mode */
#endif
if(!Closure->dotFile) /* may have been set by the --resource-file option */
#ifndef SYS_MINGW
Closure->dotFile = g_strdup_printf("%s/.dvdisaster", Closure->homeDir);
#else
/* Windows doesn't really love dotfiles */
Closure->dotFile = g_strdup_printf("%s/dvdisaster.cfg", Closure->homeDir);
#endif
Verbose("\nUsing file locations:\n"
"- Homedir: %s\n"

4
configure vendored
View File

@@ -3,8 +3,8 @@
# Load the shell functions needed for the rest of this script.
BASH_BASED_CONFIGURE=./scripts/bash-based-configure
REQUIRED_CFLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I."
RECOMMENDED_CFLAGS="-DPATCHLEVEL=2 -O2 -fomit-frame-pointer -Wall -Wno-deprecated-declarations -Wno-stringop-truncation"
REQUIRED_CFLAGS="-DPATCHLEVEL=3 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I."
RECOMMENDED_CFLAGS="-O2 -fomit-frame-pointer -Wall -Wno-deprecated-declarations -Wno-stringop-truncation"
DEBUG_CFLAGS="-ggdb -Wall"
if [ "$CLI_ONLY" = 1 ]; then

View File

@@ -29,7 +29,11 @@
void DefaultLogFile()
{
#ifndef SYS_MINGW
Closure->logFile = g_strdup_printf("%s/.dvdisaster.log", g_getenv("HOME"));
#else
Closure->logFile = g_strdup_printf("%s/dvdisaster.log", Closure->homeDir); /* portable mode */
#endif
}
/*

View File

@@ -1,17 +1,21 @@
#!/usr/bin/env bash
build=$(grep BUILDNUM $1 2>/dev/null | cut -d\ -f3)
build=$((build+1))
flavor=$(grep FLAVOR $1 2>/dev/null | cut -d\ -f3)
if [ -z "$flavor" ]; then
flavor=UNKNOWN
fi
echo "#define FLAVOR $flavor" >$1
cat >$1 <<EOF
#ifdef CLI
#define FLAVOR CLI
#else
#define FLAVOR GUI
#endif
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
EOF
echo "#define BUILDNUM $build" >>$1
if git describe >/dev/null 2>/dev/null; then
gitver=$(git describe --tags --dirty)
echo "#define BUILD \"$gitver-$flavor-speed47.build$build\"" >>$1
echo "#define BUILD \"$gitver-\" TOSTRING(FLAVOR) \"-speed47.build$build\"" >>$1
else
echo "#define BUILD \"$flavor-speed47.build$build\"" >>$1
echo "#define BUILD TOSTRING(FLAVOR) \"-speed47.build$build\"" >>$1
fi
date=$(date +"%d.%m.%y (%A, %H:%M)")
echo "#define BDATE \"$date\"" >>$1

View File

@@ -81,7 +81,7 @@ static gboolean expose_cb(GtkWidget *widget, GdkEventExpose *event, gpointer dat
AboutText(box, _("<b>Unofficial version.</b>\n\n"
"This is a modified version of the last <b>0.79.6</b> upstream pre-release.\n"
"<b>Patchlevel 2</b> adds support for a full CLI version, BD-R TL/QL,\n"
"<b>Patchlevel 3</b> adds support for a full CLI version, BD-R TL/QL,\n"
"a Windows build and an option to produce bigger BD-R RS03 images.\n"
"See the About box and changelog for more information.\n"
"The warning message from the pre-release version is retained below.\n"));