diff --git a/Project/BuildAllFromSource/build b/Project/BuildAllFromSource/build index 611564324..19ca1146f 100755 --- a/Project/BuildAllFromSource/build +++ b/Project/BuildAllFromSource/build @@ -14,24 +14,11 @@ elif qmake-qt5 --version >/dev/null 2>&1 ; then BINQMAKE=qmake-qt5 elif qmake5 --version >/dev/null 2>&1 ; then BINQMAKE=qmake5 -elif qmake-qt4 --version >/dev/null 2>&1 ; then - BINQMAKE=qmake-qt4 -elif qmake4 --version >/dev/null 2>&1 ; then - BINQMAKE=qmake4 -elif $HOME/Qt/5.3/clang_64/bin/qmake --version >/dev/null 2>&1 ; then - BINQMAKE=$HOME/Qt/5.3/clang_64/bin/qmake -elif $HOME/Qt/5.4/clang_64/bin/qmake --version >/dev/null 2>&1 ; then - BINQMAKE=$HOME/Qt/5.3/clang_64/bin/qmake else echo qmake not found exit fi -if [ ! $(which cmake) ] ; then - echo cmake not found - exit -fi - SCRIPT_DIR=$(cd $(dirname "$0") && pwd) echo "SCRIPT_DIR: " + $SCRIPT_DIR diff --git a/Project/BuildAllFromSource/build.bat b/Project/BuildAllFromSource/build.bat index 31fbd02a4..5c7c767b7 100755 --- a/Project/BuildAllFromSource/build.bat +++ b/Project/BuildAllFromSource/build.bat @@ -4,20 +4,25 @@ rem **************************************************************************** rem * build.bat - Batch script for building Windows version of QCTools * rem * * rem *Script requirements: * -rem * - Microsoft Visual Studio 2015 at the default place * +rem * - Microsoft Visual Studio 2019 at the default place * rem * - qctools_AllInclusive source tree * -rem * - Qt binaries tree corresponding to the requested build type (static or shared, x86 or x64) * -rem * in ..\..\..\Qt * +rem * - Qt bin directory corresponding to the requested build type (static or shared, x86 or x64) * +rem * in the PATH * rem * - Cygwin directory with bash, sed, make and diffutils in the PATH * rem * - yasm.exe in the PATH if not provided by Cygwin * rem * Options: * rem * - /static - build statically linked binary * rem * - /target x86|x64 - target arch (default x86) * +rem * - /nogui - build only qcli * +rem * - /prebuild_ffmpeg - assume that ffmpeg is already builds * rem *********************************************************************************************** rem *** Init *** set ARCH=x86 set STATIC= +set NOGUI= +set NO_BUILD_FFMPEG= +set QMAKEOPTS= set OLD_CD="%CD%" set OLD_PATH=%PATH% @@ -32,6 +37,8 @@ rem *** Parse command line *** :cmdline if not "%1"=="" ( if /I "%1"=="/static" set STATIC=1 + if /I "%1"=="/nogui" set NOGUI=1 + if /I "%1"=="/prebuild_ffmpeg" set NO_BUILD_FFMPEG=1 if /I "%1"=="/target" ( set ARCH=%2 shift @@ -45,67 +52,78 @@ if not "%ARCH%"=="x86" if not "%ARCH%"=="x64" ( goto:clean ) -if "%ARCH%"=="x86" set PLATFORM=Win32 -if "%ARCH%"=="x64" set PLATFORM=x64 - -rem *** Get VC tools path *** -call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %ARCH% - -rem *** Build zlib *** -if "%ARCH%"=="x86" ( - cd "%BUILD_DIR%\zlib\contrib\masmx86" - del *.obj *.lst - rem sed from cygwin - sed -i "s/ml \/coff/ml \/safeseh \/coff/g" bld_ml32.bat - call bld_ml32.bat -) else ( - cd "%BUILD_DIR%\zlib\contrib\masmx64" - del *.obj *.lst - call bld_ml64.bat -) - -cd "%BUILD_DIR%\zlib\contrib\vstudio\vc14" if defined STATIC ( - sed -i "s/>MultiThreadedDLLMultiThreadedMultiThreadedMultiThreadedDLL/dev/null 2>&1 ; then - #Qt 5.2 can not well detect the platform version for 10.9 then FFmpeg static link fails - MAJOR_MAC_VERSION=$(sw_vers -productVersion | awk -F '.' '{print $1 "." $2}') - $BINQMAKE QMAKE_MAC_SDK=macosx$MAJOR_MAC_VERSION -else - $BINQMAKE -fi +rm -fr qctools/Project/QtCreator/build +mkdir qctools/Project/QtCreator/build +pushd qctools/Project/QtCreator/build >/dev/null 2>&1 +$BINQMAKE .. DEFINES+=QT_AVPLAYER_MULTIMEDIA +sed -i'' 's/-framework QtAVPlayer//g' qctools-gui/Makefile.* make -cd ../../.. +popd >/dev/null 2>&1 -echo QCTools binary is in qctools/Project/QtCreator +echo QCTools binary is in qctools/Project/QtCreator/build/qctools-gui diff --git a/Project/BuildAllFromSource/init.sh b/Project/BuildAllFromSource/init.sh index f395d60c4..e0abec61f 100755 --- a/Project/BuildAllFromSource/init.sh +++ b/Project/BuildAllFromSource/init.sh @@ -1,5 +1,16 @@ #! /bin/bash +if qmake --version >/dev/null 2>&1 ; then + BINQMAKE=qmake +elif qmake-qt5 --version >/dev/null 2>&1 ; then + BINQMAKE=qmake-qt5 +elif qmake5 --version >/dev/null 2>&1 ; then + BINQMAKE=qmake5 +else + echo qmake not found + exit +fi + echo "PWD: " + $PWD START_DIR=$(cd $(dirname "$0") && pwd) @@ -10,5 +21,4 @@ echo "SCRIPT_DIR: " + $SCRIPT_DIR echo "INSTALL_DIR: " + $INSTALL_DIR echo "START_DIR: " + $START_DIR -BINQMAKE=qmake echo "BINQMAKE: " + $BINQMAKE diff --git a/Project/BuildAllFromSource/init_ffmpeg.sh b/Project/BuildAllFromSource/init_ffmpeg.sh index 4623d532f..cf5305958 100755 --- a/Project/BuildAllFromSource/init_ffmpeg.sh +++ b/Project/BuildAllFromSource/init_ffmpeg.sh @@ -3,9 +3,8 @@ echo "PWD: " + $PWD _install_yasm(){ - wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz - tar -zxvf yasm-1.3.0.tar.gz - rm yasm-1.3.0.tar.gz + wget -q http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz + tar -zxf yasm-1.3.0.tar.gz mv yasm-1.3.0 yasm } @@ -13,39 +12,61 @@ if [ ! -d ffmpeg ] ; then git clone --depth 1 git://source.ffmpeg.org/ffmpeg.git ffmpeg fi - cd ffmpeg - FFMPEG_CONFIGURE_OPTS=(--enable-gpl --enable-version3 --disable-securetransport --disable-videotoolbox --enable-shared --disable-static --disable-doc --disable-ffplay --disable-ffprobe --disable-debug --disable-lzma --disable-iconv --enable-pic) +if [ ! -d freetype ] ; then + curl -LO https://download.savannah.gnu.org/releases/freetype/freetype-2.10.0.tar.bz2 + tar -xf freetype-2.10.0.tar.bz2 + mv freetype-2.10.0 freetype +fi - if sw_vers >/dev/null 2>&1 ; then - FFMPEG_CONFIGURE_OPTS+=(--extra-cflags="-mmacosx-version-min=10.8" --extra-ldflags="-mmacosx-version-min=10.8") - fi +if [ ! -d harfbuzz ] ; then + curl -LO https://github.com/harfbuzz/harfbuzz/releases/download/8.2.2/harfbuzz-8.2.2.tar.xz + tar -Jxf harfbuzz-8.2.2.tar.xz + rm harfbuzz-8.2.2.tar.xz + mv harfbuzz-8.2.2 harfbuzz +fi - chmod u+x configure - chmod u+x version.sh - if yasm --version >/dev/null 2>&1 ; then - echo "FFMPEG_CONFIGURE_OPTS = ${FFMPEG_CONFIGURE_OPTS[@]}" - ./configure "${FFMPEG_CONFIGURE_OPTS[@]}" - if [ "$?" -ne 0 ] ; then #on some distro, yasm version is too old - cd "$INSTALL_DIR" - if [ ! -d yasm ] ; then - _install_yasm - fi - cd yasm/ - ./configure --prefix=`pwd`/usr - make - make install - cd "${INSTALL_DIR}/ffmpeg" - FFMPEG_CONFIGURE_OPTS+=(--x86asmexe=../yasm/usr/bin/yasm) - echo "FFMPEG_CONFIGURE_OPTS = ${FFMPEG_CONFIGURE_OPTS[@]}" - ./configure "${FFMPEG_CONFIGURE_OPTS[@]}" - fi - else +cd freetype +chmod u+x configure +if sw_vers >/dev/null 2>&1 ; then +./configure --prefix="$(pwd)/usr" --without-harfbuzz --without-zlib --without-bzip2 --without-png --enable-static --disable-shared CFLAGS=-mmacosx-version-min=10.12 LDFLAGS=-mmacosx-version-min=10.12 +else +./configure --prefix="$(pwd)/usr" --without-harfbuzz --without-zlib --without-bzip2 --without-png --enable-static --disable-shared +fi +make +make install +cd .. + +cd harfbuzz +mkdir build +cd build +if sw_vers >/dev/null 2>&1 ; then +CFLAGS=-mmacosx-version-min=10.12 LDFLAGS=-mmacosx-version-min=10.12 PKG_CONFIG_PATH=$PWD/../../freetype/usr/lib/pkgconfig meson setup --prefix $(pwd)/../usr --default-library=static -Dglib=disabled -Dgobject=disabled -Dcairo=disabled -Dchafa=disabled -Dicu=disabled -Dgraphite=disabled -Dgraphite2=disabled -Dgdi=disabled -Ddirectwrite=disabled -Dcoretext=disabled -Dwasm=disabled -Dtests=disabled -Dintrospection=disabled -Ddocs=disabled -Ddoc_tests=false -Dutilities=disabled .. +else +PKG_CONFIG_PATH=$PWD/../../freetype/usr/lib/pkgconfig meson setup --prefix $(pwd)/../usr --default-library=static -Dglib=disabled -Dgobject=disabled -Dcairo=disabled -Dchafa=disabled -Dicu=disabled -Dgraphite=disabled -Dgraphite2=disabled -Dgdi=disabled -Ddirectwrite=disabled -Dcoretext=disabled -Dwasm=disabled -Dtests=disabled -Dintrospection=disabled -Ddocs=disabled -Ddoc_tests=false -Dutilities=disabled .. +fi +ninja +ninja install +cd .. +cd .. + +cd ffmpeg +FFMPEG_CONFIGURE_OPTS=(--enable-gpl --enable-version3 --disable-autodetect --disable-programs --disable-securetransport --disable-videotoolbox --enable-static --disable-shared --disable-doc --disable-debug --disable-lzma --disable-iconv --enable-pic --prefix="$(pwd)" --enable-libfreetype --enable-libharfbuzz --extra-cflags="-I../freetype/usr/include/freetype2" --extra-cflags="-I../harfbuzz/usr/include/harfbuzz" --extra-libs="../freetype/usr/lib/libfreetype.a" --extra-libs="../harfbuzz/usr/lib/libharfbuzz.a") +if sw_vers >/dev/null 2>&1 ; then + FFMPEG_CONFIGURE_OPTS+=(--extra-cflags="-mmacosx-version-min=10.12" --extra-ldflags="-mmacosx-version-min=10.12") +fi + +chmod u+x configure +chmod u+x version.sh +if yasm --version >/dev/null 2>&1 ; then + echo "FFMPEG_CONFIGURE_OPTS = ${FFMPEG_CONFIGURE_OPTS[@]}" + ./configure "${FFMPEG_CONFIGURE_OPTS[@]}" + if [ "$?" -ne 0 ] ; then #on some distro, yasm version is too old cd "$INSTALL_DIR" if [ ! -d yasm ] ; then _install_yasm fi cd yasm/ - ./configure --prefix=`pwd`/usr + ./configure --prefix="$(pwd)/usr" make make install cd "${INSTALL_DIR}/ffmpeg" @@ -53,5 +74,20 @@ fi echo "FFMPEG_CONFIGURE_OPTS = ${FFMPEG_CONFIGURE_OPTS[@]}" ./configure "${FFMPEG_CONFIGURE_OPTS[@]}" fi - make +else cd "$INSTALL_DIR" + if [ ! -d yasm ] ; then + _install_yasm + fi + cd yasm/ + ./configure --prefix=`pwd`/usr + make + make install + cd "${INSTALL_DIR}/ffmpeg" + FFMPEG_CONFIGURE_OPTS+=(--x86asmexe=../yasm/usr/bin/yasm) + echo "FFMPEG_CONFIGURE_OPTS = ${FFMPEG_CONFIGURE_OPTS[@]}" + ./configure "${FFMPEG_CONFIGURE_OPTS[@]}" +fi +make +make install +cd "$INSTALL_DIR" diff --git a/Project/BuildAllFromSource/init_qwt.sh b/Project/BuildAllFromSource/init_qwt.sh index bde800f68..7e15efe9d 100755 --- a/Project/BuildAllFromSource/init_qwt.sh +++ b/Project/BuildAllFromSource/init_qwt.sh @@ -3,12 +3,13 @@ echo "PWD: " + $PWD if [ ! -d qwt ] ; then - wget https://github.com/ElderOrb/qwt/archive/v6.1.5.zip - unzip v6.1.5.zip - mv qwt-6.1.5 qwt - rm v6.1.5.zip + wget wget -q https://github.com/ElderOrb/qwt/archive/master.zip + unzip master.zip + mv qwt-master qwt + rm master.zip fi cd qwt +export QWT_STATIC=1 QWT_NO_SVG=1 QWT_NO_OPENGL=1 QWT_NO_DESIGNER=1 $BINQMAKE make cd "$INSTALL_DIR" diff --git a/Project/GNU/GUI/qctools.metainfo.xml b/Project/GNU/GUI/qctools.metainfo.xml new file mode 100644 index 000000000..9df5dc1f5 --- /dev/null +++ b/Project/GNU/GUI/qctools.metainfo.xml @@ -0,0 +1,60 @@ + + + + qctools.desktop + CC-BY-3.0 + GPL-3.0+ + QCTools + Quality Control Tools for Video Preservation + +

QCTools is a software tool that helps users analyze and understand their digitized video files through use of audiovisual analytics and filtering to help users detect corruptions or compromises in the results of analog video digitization or in born-digital video.

+
+ + video + audio + quality + checker + + + + https://mediaarea.net/bundles/qctools/img/QCTools_Linux_Main_en.png + + + https://mediaarea.net/bundles/qctools/img/QCTools_Linux_Files_en.png + + + https://mediaarea.net/bundles/qctools/img/QCTools_Linux_Filters_en.png + + + + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + + https://mediaarea.net/QCTools + https://mediaarea.net/QCTools/How_To_Use + https://github.com/bavc/qctools/issues + info@mediaarea.net + MediaArea.net SARL + + + + +
diff --git a/Project/Mac/Make_xcarchive.sh b/Project/Mac/Make_xcarchive.sh new file mode 100755 index 000000000..a191d4906 --- /dev/null +++ b/Project/Mac/Make_xcarchive.sh @@ -0,0 +1,74 @@ +APPNAME=$1 +VERSION=$2 +BUNDLEID=$3 +TEAMID=$4 + +SIGNATURE="MediaArea.net" + +DATE=$(date -u +'%s') + +cp -r ../QtCreator/qctools-gui/$APPNAME.app . || exit 1 + +macdeployqt $APPNAME.app -no-strip -appstore-compliant +rm -rf $APPNAME.app/Contents/PlugIns/sqldrivers/{libqsqlmysql.dylib,libqsqlodbc.dylib,libqsqlpsql.dylib} + +dsymutil $APPNAME.app/Contents/MacOS/$APPNAME -o $APPNAME.app.dSYM + +for FRAMEWORK in $(ls $APPNAME.app/Contents/Frameworks | grep framework | sed 's/\.framework//') ; do + pushd $APPNAME.app/Contents/Frameworks/$FRAMEWORK.framework + + rm -fr _CodeSignature + rm -fr Versions/5/_CodeSignature + plutil -replace CFBundleIdentifier -string "$BUNDLEID" Resources/Info.plist + popd + + # codesign --force --verbose --sign "3rd Party Mac Developer Application: $SIGNATURE" -i $BUNDLEID $APPNAME.app/Contents/Frameworks/$FRAMEWORK.framework/Versions/5/$FRAMEWORK +done + +#find $APPNAME.app/Contents/PlugIns -name "*.dylib" -exec codesign --force --verbose --sign "3rd Party Mac Developer Application: $SIGNATURE" -i $BUNDLEID '{}' \; + +codesign --deep --force --verbose --sign "3rd Party Mac Developer Application: $SIGNATURE" --entitlements $APPNAME.entitlements $APPNAME.app + +productbuild --component $APPNAME.app /Applications --sign "3rd Party Mac Developer Installer: $SIGNATURE" $APPNAME-$VERSION.pkg + +rm -fr $APPNAME.xcarchive +mkdir -p $APPNAME.xcarchive{/Products/Applications,/dSYMs} +mv $APPNAME.app.dSYM $APPNAME.xcarchive/dSYMs +mv $APPNAME.app $APPNAME.xcarchive/Products/Applications + +cat > $APPNAME.xcarchive/Info.plist < + + + + ApplicationProperties + + ApplicationPath + Applications/$APPNAME.app + CFBundleIdentifier + $BUNDLEID + CFBundleShortVersionString + $VERSION + CFBundleVersion + 1.3.1 + IconPaths + + Applications/$APPNAME.app/Contents/Resources/Logo.icns + + SigningIdentity + 3rd Party Mac Developer Application: $SIGNATURE ($TEAMID) + + ArchiveVersion + 2 + CreationDate + $(date -u -j -f '%s' +'%Y-%m-%dT%H:%M:%SZ' $DATE) + Name + $APPNAME + SchemeName + $APPNAME + + +EOF + +mkdir -p $HOME/Library/Developer/Xcode/Archives/$(date -u -j -f '%s' +'%Y-%m-%d' $DATE) +cp -a $APPNAME.xcarchive $HOME/Library/Developer/Xcode/Archives/$(date -u -j -f '%s' +'%Y-%m-%d' $DATE)/"$APPNAME $(date -u -j -f '%s' +'%d-%m-%Y %H.%M' $DATE).xcarchive" diff --git a/Project/Mac/QCTools.entitlements b/Project/Mac/QCTools.entitlements new file mode 100644 index 000000000..a0463869a --- /dev/null +++ b/Project/Mac/QCTools.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + + diff --git a/Project/Mac/mkdmg_qcli b/Project/Mac/mkdmg_qcli new file mode 100755 index 000000000..f783f1528 --- /dev/null +++ b/Project/Mac/mkdmg_qcli @@ -0,0 +1,67 @@ +#!/bin/sh +APPNAME="qcli" +SIGNATURE="MediaArea.net" + +DMG="tmp-${APPNAME}.dmg" +FILES="tmp-${APPNAME}" + +# Create the package +rm -rf "${FILES}_root" +rm -rf "${FILES}" +rm -f "${APPNAME}.dmg" +rm -f "${DMG}" + +mkdir "${FILES}" +mkdir "${FILES}/.background" + +mkdir -p "${FILES}_root/usr/local/bin" + +cp -R "../QtCreator/build/qctools-cli/${APPNAME}" "${FILES}_root/usr/local/bin" + +codesign --deep --options=runtime -f -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}_root/usr/local/bin/${APPNAME}" +pkgbuild --root "${FILES}_root" --identifier "net.mediaarea.${APPNAME}.mac" --sign "Developer ID Installer: ${SIGNATURE}" --version "$(<../version.txt)" "${FILES}/${APPNAME}.pkg" +codesign --deep --options=runtime -f -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}/${APPNAME}.pkg" + +cp ../../License.html "${FILES}/License.html" +cp ../../History.txt "${FILES}/History.txt" +cp Logo_White.icns "${FILES}/.background/Logo_White.icns" + +# Create the disk image +hdiutil create "$DMG" -ov -fs HFS+ -format UDRW -volname "${APPNAME}" -srcfolder "${FILES}" + +DEVICE=$(hdiutil attach -readwrite -noverify "${DMG}" | egrep '^/dev/' | sed 1q | awk '{print $1}') +sleep 2 + +pushd /Volumes/"${APPNAME}" +rm -f .DS_Store +popd + +echo ' + tell application "Finder" + tell disk "'${APPNAME}'" + open + set current view of container window to icon view + set toolbar visible of container window to false + set the bounds of container window to {400, 100, 962, 600} + set viewOptions to the icon view options of container window + set arrangement of viewOptions to not arranged + set icon size of viewOptions to 72 + set background picture of viewOptions to file ".background:Logo_White.icns" + set position of item "'${APPNAME}'.pkg" of container window to {125, 175} + set position of item "License.html" of container window to {450, 225} + set position of item "History.txt" of container window to {450, 325} + close + end tell + end tell +' | osascript + +hdiutil detach "${DEVICE}" +sleep 2 + +# convert to compressed image, delete temp image +hdiutil convert "$DMG" -format UDBZ -o "${APPNAME}.dmg" +codesign --deep --options=runtime -f -s "Developer ID Application: ${SIGNATURE}" --verbose "${APPNAME}.dmg" + +rm -rf "${FILES}_root" +rm -rf "${FILES}" +rm -f "${DMG}" diff --git a/Project/Mac/mkdmg_qctools b/Project/Mac/mkdmg_qctools new file mode 100755 index 000000000..b845cce83 --- /dev/null +++ b/Project/Mac/mkdmg_qctools @@ -0,0 +1,66 @@ +#!/bin/sh +APPNAME="QCTools" +SIGNATURE="MediaArea.net" +BUNDLEID="net.mediaarea.qctools.mac" + +DMG="tmp-${APPNAME}.dmg" +FILES="tmp-${APPNAME}" + +# Create the package +rm -rf "${FILES}" +rm -f "${DMG}" +rm -f "${APPNAME}.dmg" + +mkdir "${FILES}" +mkdir "${FILES}/.background" +cp -R "../QtCreator/build/qctools-gui/${APPNAME}.app" "${FILES}/" +rm -fr "${FILES}/${APPNAME}.app/Contents/Frameworks" +rm -fr "${FILES}/${APPNAME}.app/Contents/Library" + +codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" -i "${BUNDLEID}" --verbose "${FILES}/${APPNAME}.app/Contents/MacOS/${APPNAME}" +codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}/${APPNAME}.app" + +cp ../../License.html "${FILES}/License.html" +cp ../../History.txt "${FILES}/History.txt" +cp Logo_White.icns "${FILES}/.background/Logo_White.icns" + +# Create the disk image +hdiutil create "$DMG" -ov -fs HFS+ -format UDRW -volname "${APPNAME}" -srcfolder "${FILES}" + +DEVICE=$(hdiutil attach -readwrite -noverify "${DMG}" | egrep '^/dev/' | sed 1q | awk '{print $1}') +sleep 2 + +pushd /Volumes/"${APPNAME}" +ln -s /Applications +rm -f .DS_Store +popd + +echo ' + tell application "Finder" + tell disk "'${APPNAME}'" + open + set current view of container window to icon view + set toolbar visible of container window to false + set the bounds of container window to {400, 100, 962, 600} + set viewOptions to the icon view options of container window + set arrangement of viewOptions to not arranged + set icon size of viewOptions to 72 + set background picture of viewOptions to file ".background:Logo_White.icns" + set position of item "'${APPNAME}'.app" of container window to {125, 175} + set position of item "Applications" of container window to {275, 200} + set position of item "License.html" of container window to {450, 175} + set position of item "History.txt" of container window to {450, 275} + close + end tell + end tell +' | osascript + +hdiutil detach "${DEVICE}" +sleep 2 + +# convert to compressed image, delete temp image +hdiutil convert "$DMG" -format UDBZ -o "${APPNAME}.dmg" +codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" -i "${BUNDLEID}" --verbose "${APPNAME}.dmg" + +rm -rf "${FILES}" +rm -f "$DMG" diff --git a/Source/Install/QCTools.nsi b/Source/Install/QCTools.nsi index 992c15c06..df1fbca92 100644 --- a/Source/Install/QCTools.nsi +++ b/Source/Install/QCTools.nsi @@ -74,6 +74,9 @@ ShowUnInstDetails nevershow Function .onInit ${If} ${RunningX64} SetRegView 64 + ${Else} + MessageBox MB_OK|MB_ICONSTOP 'You are trying to install the 64-bit version of ${PRODUCT_NAME} on 32-bit Windows.$\r$\nPlease download and use the 32-bit version instead.$\r$\nClick OK to quit Setup.' + Quit ${EndIf} FunctionEnd @@ -83,35 +86,69 @@ Section "SectionPrincipale" SEC01 CreateShortCut "$SMPROGRAMS\QCTools.lnk" "$INSTDIR\QCTools.exe" "" "$INSTDIR\QCTools.exe" 0 "" "" "QCTools" SetOutPath "$INSTDIR" !ifndef STATIC - File "..\..\Project\MSVC2015\Release\QCTools.exe" + File "..\..\Project\QtCreator\build\qctools-gui\release\QCTools.exe" + File "..\..\Project\QtCreator\build\qctools-cli\release\qcli.exe" !else - File "..\..\Project\MSVC2015\StaticRelease\QCTools.exe" + File "..\..\Project\QtCreator\build\qctools-gui\StaticRelease\QCTools.exe" + File "..\..\Project\QtCreator\build\qctools-cli\StaticRelease\qcli.exe" !endif File "..\..\History.txt" File "..\..\License.html" !ifndef STATIC - File "..\..\..\ffmpeg\libavcodec\avcodec-*.dll" - File "..\..\..\ffmpeg\libavdevice\avdevice-*.dll" - File "..\..\..\ffmpeg\libavfilter\avfilter-*.dll" - File "..\..\..\ffmpeg\libavformat\avformat-*.dll" - File "..\..\..\ffmpeg\libavutil\avutil-*.dll" - File "..\..\..\ffmpeg\libpostproc\postproc-*.dll" - File "..\..\..\ffmpeg\libswresample\swresample-*.dll" - File "..\..\..\ffmpeg\libswscale\swscale-*.dll" - File "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT\concrt140.dll" - File "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT\msvcp140.dll" - File "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT\vccorlib140.dll" - File "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT\vcruntime140.dll" - File "..\..\..\Qt\bin\Qt5Core.dll" - File "..\..\..\Qt\bin\Qt5Gui.dll" - File "..\..\..\Qt\bin\Qt5Widgets.dll" + File "..\..\..\ffmpeg\bin\avdevice-*.dll" + File "..\..\..\ffmpeg\bin\avcodec-*.dll" + File "..\..\..\ffmpeg\bin\avfilter-*.dll" + File "..\..\..\ffmpeg\bin\avformat-*.dll" + File "..\..\..\ffmpeg\bin\avutil-*.dll" + File "..\..\..\ffmpeg\bin\postproc-*.dll" + File "..\..\..\ffmpeg\bin\swresample-*.dll" + File "..\..\..\ffmpeg\bin\swscale-*.dll" + File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.28.29910\X64\Microsoft.VC142.CRT\concrt140.dll" + File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.28.29910\X64\Microsoft.VC142.CRT\msvcp140.dll" + File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.28.29910\X64\Microsoft.VC142.CRT\msvcp140_1.dll" + File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.28.29910\X64\Microsoft.VC142.CRT\msvcp140_2.dll" + File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.28.29910\X64\Microsoft.VC142.CRT\msvcp140_atomic_wait.dll" + File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.28.29910\X64\Microsoft.VC142.CRT\msvcp140_codecvt_ids.dll" + File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.28.29910\X64\Microsoft.VC142.CRT\vccorlib140.dll" + File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.28.29910\X64\Microsoft.VC142.CRT\vcruntime140.dll" + File "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.28.29910\X64\Microsoft.VC142.CRT\vcruntime140_1.dll" + ;File "..\..\Project\QtCreator\build\qctools-gui\release\QtAVPlayer.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\Qt5Core.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\Qt5Gui.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\Qt5Network.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\Qt5Multimedia.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\Qt5MultimediaWidgets.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\Qt5Qml.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\Qt5Svg.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\Qt5Widgets.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\d3dcompiler_47.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\libEGL.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\libGLESV2.dll" + SetOutPath "$INSTDIR\audio" + File "..\..\Project\QtCreator\build\qctools-gui\release\audio\qtaudio_wasapi.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\audio\qtaudio_windows.dll" + SetOutPath "$INSTDIR\bearer" + File "..\..\Project\QtCreator\build\qctools-gui\release\bearer\qgenericbearer.dll" + SetOutPath "$INSTDIR\iconengines" + File "..\..\Project\QtCreator\build\qctools-gui\release\iconengines\qsvgicon.dll" SetOutPath "$INSTDIR\imageformats" - File "..\..\..\Qt\plugins\imageformats\qjpeg.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\imageformats\qjpeg.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\imageformats\qsvg.dll" + SetOutPath "$INSTDIR\mediaservice" + File "..\..\Project\QtCreator\build\qctools-gui\release\mediaservice\dsengine.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\mediaservice\wmfengine.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\mediaservice\qtmedia_audioengine.dll" SetOutPath "$INSTDIR\platforms" - File "..\..\..\Qt\plugins\platforms\qwindows.dll" + File "..\..\Project\QtCreator\build\qctools-gui\release\platforms\qwindows.dll" + SetOutPath "$INSTDIR\styles" + File "..\..\Project\QtCreator\build\qctools-gui\release\styles\qwindowsvistastyle.dll" + !endif # Create files WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" + + # Delete files that might be present from older installation + Delete "$INSTDIR\freetype.dll" SectionEnd Section -Post @@ -138,28 +175,57 @@ Section Uninstall Delete "$INSTDIR\${PRODUCT_NAME}.url" Delete "$INSTDIR\uninst.exe" Delete "$INSTDIR\QCTools.exe" + Delete "$INSTDIR\qcli.exe" Delete "$INSTDIR\History.txt" Delete "$INSTDIR\License.html" !ifndef STATIC - Delete "$INSTDIR\avcodec-*.dll" Delete "$INSTDIR\avdevice-*.dll" + Delete "$INSTDIR\avcodec-*.dll" Delete "$INSTDIR\avfilter-*.dll" Delete "$INSTDIR\avformat-*.dll" Delete "$INSTDIR\avutil-*.dll" Delete "$INSTDIR\postproc-*.dll" Delete "$INSTDIR\swresample-*.dll" Delete "$INSTDIR\swscale-*.dll" - Delete "$INSTDIR\imageformats\qjpeg.dll" - Delete "$INSTDIR\platforms\qwindows.dll" - Delete "$INSTDIR\Qt5Core.dll" - Delete "$INSTDIR\Qt5Gui.dll" - Delete "$INSTDIR\Qt5Widgets.dll" Delete "$INSTDIR\concrt140.dll" Delete "$INSTDIR\msvcp140.dll" + Delete "$INSTDIR\msvcp140_1.dll" + Delete "$INSTDIR\msvcp140_2.dll" + Delete "$INSTDIR\msvcp140_atomic_wait.dll" + Delete "$INSTDIR\msvcp140_codecvt_ids.dll" Delete "$INSTDIR\vccorlib140.dll" Delete "$INSTDIR\vcruntime140.dll" + Delete "$INSTDIR\vcruntime140_1.dll" + Delete "$INSTDIR\QtAVPlayer.dll" + Delete "$INSTDIR\Qt5Core.dll" + Delete "$INSTDIR\Qt5Gui.dll" + Delete "$INSTDIR\Qt5Network.dll" + Delete "$INSTDIR\Qt5Multimedia.dll" + Delete "$INSTDIR\Qt5MultimediaWidgets.dll" + Delete "$INSTDIR\Qt5Qml.dll" + Delete "$INSTDIR\Qt5Svg.dll" + Delete "$INSTDIR\Qt5Widgets.dll" + Delete "$INSTDIR\d3dcompiler_47.dll" + Delete "$INSTDIR\libEGL.dll" + Delete "$INSTDIR\libGLESV2.dll" + Delete "$INSTDIR\audio\qtaudio_wasapi.dll" + Delete "$INSTDIR\audio\qtaudio_windows.dll" + Delete "$INSTDIR\bearer\qgenericbearer.dll" + Delete "$INSTDIR\mediaservice\dsengine.dll" + Delete "$INSTDIR\mediaservice\wmfengine.dll" + Delete "$INSTDIR\mediaservice\qtmedia_audioengine.dll" + Delete "$INSTDIR\imageformats\qjpeg.dll" + Delete "$INSTDIR\imageformats\qsvg.dll" + Delete "$INSTDIR\platforms\qwindows.dll" + Delete "$INSTDIR\iconengines\qsvgicon.dll" + Delete "$INSTDIR\styles\qwindowsvistastyle.dll" + RMDir "$INSTDIR\audio" + RMDir "$INSTDIR\bearer" + RMDir "$INSTDIR\mediaservice" + RMDir "$INSTDIR\iconengines" RMDir "$INSTDIR\imageformats" RMDir "$INSTDIR\platforms" + RMDir "$INSTDIR\styles" !endif RMDir "$INSTDIR" Delete "$SMPROGRAMS\QCTools.lnk" diff --git a/debian/compat b/debian/compat index 7ed6ff82d..ec635144f 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -5 +9 diff --git a/debian/control b/debian/control index c4f82dbad..48d63e0de 100644 --- a/debian/control +++ b/debian/control @@ -1,7 +1,7 @@ Source: qctools Priority: optional Maintainer: MediaArea.net SARL -Build-Depends: debhelper (>= 5), debhelper (>= 5), libqt4-dev, libqt4-opengl-dev, zlib1g-dev, libbz2-dev, pkg-config, cmake, yasm +Build-Depends: debhelper (>= 9), qtbase5-dev, qtdeclarative5-dev, libqt5svg5-dev, libqt5xmlpatterns5-dev, qtmultimedia5-dev, qtquickcontrols2-5-dev, libqt5opengl5-dev, qtchooser, libegl1-mesa-dev, libxv-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-xfixes0-dev, libxcb-shape0-dev, zlib1g-dev, libbz2-dev, pkg-config, yasm Standards-Version: 3.7.3 Section: utils Homepage: http://www.bavc.org/qctools @@ -9,7 +9,7 @@ Homepage: http://www.bavc.org/qctools Package: qctools Section: utils Architecture: any -Depends: libqt4-opengl +Depends: ${shlibs:Depends} Description: QCTools . QCTools (Quality Control Tools for Video Preservation) is a free and open source software tool @@ -42,3 +42,40 @@ Description: QCTools the digital object, and the associated catalog record. . This package contains the debugging symbols. + +Package: qcli +Section: utils +Architecture: any +Depends: ${shlibs:Depends} +Description: QCTools Command Line Interface + . + QCTools (Quality Control Tools for Video Preservation) is a free and open source software tool + that helps users analyze and understand their digitized video files through use of audiovisual analytics and filtering + to help users detect corruptions or compromises in the results of analog video digitization or in born-digital video. + The goal of the project is to cut down the time it takes to perform high-quality video preservation + and direct time towards preservation issues that are solvable - for example, identifying tapes + that would benefit from a second transfer, saving not only the precious time of preservationists + and institutional resources, but giving collections a necessary advantage in the bigger race against time + to preserve their significant cultural artifacts. QCTools incorporates archival standards and best practices + for reformatting and capturing metadata that enables the long-term preservation of and access to the original artifact, + the digital object, and the associated catalog record. + +Package: qcli-dbg +Section: debug +Architecture: any +Priority: extra +Depends: qctools (= ${binary:Version}) +Description: QCTools Command Line Interface + . + QCTools (Quality Control Tools for Video Preservation) is a free and open source software tool + that helps users analyze and understand their digitized video files through use of audiovisual analytics and filtering + to help users detect corruptions or compromises in the results of analog video digitization or in born-digital video. + The goal of the project is to cut down the time it takes to perform high-quality video preservation + and direct time towards preservation issues that are solvable - for example, identifying tapes + that would benefit from a second transfer, saving not only the precious time of preservationists + and institutional resources, but giving collections a necessary advantage in the bigger race against time + to preserve their significant cultural artifacts. QCTools incorporates archival standards and best practices + for reformatting and capturing metadata that enables the long-term preservation of and access to the original artifact, + the digital object, and the associated catalog record. + . + This package contains the debugging symbols. diff --git a/debian/qcli.dirs b/debian/qcli.dirs new file mode 100644 index 000000000..bf0aee198 --- /dev/null +++ b/debian/qcli.dirs @@ -0,0 +1,2 @@ +usr/bin +usr/share/doc/qcli diff --git a/debian/qcli.install b/debian/qcli.install new file mode 100644 index 000000000..541e7843c --- /dev/null +++ b/debian/qcli.install @@ -0,0 +1,2 @@ +usr/bin/qcli +usr/share/doc/qcli/* diff --git a/debian/qctools.dirs b/debian/qctools.dirs new file mode 100644 index 000000000..cec7b8f9b --- /dev/null +++ b/debian/qctools.dirs @@ -0,0 +1,9 @@ +usr/bin +usr/share/doc/qctools +usr/share/applications +usr/share/apps/konqueror/servicemenus +usr/share/kde4/services/ServiceMenus +usr/share/kservices5/ServiceMenus +usr/share/pixmaps +usr/share/icons/hicolor/256x256/apps +usr/share/appdata diff --git a/debian/qctools.install b/debian/qctools.install new file mode 100644 index 000000000..c77ca4053 --- /dev/null +++ b/debian/qctools.install @@ -0,0 +1,9 @@ +usr/bin/QCTools +usr/share/doc/qctools/* +usr/share/applications/* +usr/share/apps/konqueror/servicemenus/* +usr/share/kde4/services/ServiceMenus/* +usr/share/kservices5/ServiceMenus/* +usr/share/pixmaps/* +usr/share/icons/hicolor/256x256/apps/* +usr/share/appdata/* diff --git a/debian/rules b/debian/rules index c52e4a274..3f16d0736 100644 --- a/debian/rules +++ b/debian/rules @@ -3,6 +3,7 @@ # Uncomment this to turn on verbose mode. export DH_VERBOSE=1 +export QT_SELECT=qt5 configure: configure-stamp configure-stamp: @@ -36,28 +37,36 @@ install: build dh_clean -k dh_installdirs - # Add here commands to install the package into debian/qctools - install -dm 755 $(CURDIR)/debian/qctools/usr/bin - install -m 755 qctools/Project/QtCreator/QCTools $(CURDIR)/debian/qctools/usr/bin - #cd qctools/Project/QtCreator && $(MAKE) install DESTDIR=$(CURDIR)/debian/qctools - - install -dm 755 $(CURDIR)/debian/qctools/usr/share/doc/qctools - install -m 644 qctools/History.txt $(CURDIR)/debian/qctools/usr/share/doc/qctools/History.txt - install -m 644 qctools/License.html $(CURDIR)/debian/qctools/usr/share/doc/qctools - - install -dm 755 $(CURDIR)/debian/qctools/usr/share/pixmaps - install -m 644 qctools/Source/Resource/Logo.png $(CURDIR)/debian/qctools/usr/share/pixmaps/qctools.xpm - install -dm 755 $(CURDIR)/debian/qctools/usr/share/icons/hicolor - install -m 644 qctools/Source/Resource/Logo.png $(CURDIR)/debian/qctools/usr/share/icons/hicolor/qctools.png - install -dm 755 $(CURDIR)/debian/qctools/usr/share/icons/hicolor/256x256/apps - install -m 644 qctools/Source/Resource/Logo.png $(CURDIR)/debian/qctools/usr/share/icons/hicolor/256x256/apps/qctools.png - - install -dm 755 $(CURDIR)/debian/qctools/usr/share/applications - install -m 644 qctools/Project/GNU/GUI/qctools.desktop $(CURDIR)/debian/qctools/usr/share/applications - install -dm 755 $(CURDIR)/debian/qctools/usr/share/apps/konqueror/servicemenus/ - install -m 644 qctools/Project/GNU/GUI/qctools.kde3.desktop $(CURDIR)/debian/qctools/usr/share/apps/konqueror/servicemenus/qctools.desktop - install -dm 755 $(CURDIR)/debian/qctools/usr/share/kde4/services/ServiceMenus/ - install -m 644 qctools/Project/GNU/GUI/qctools.kde4.desktop $(CURDIR)/debian/qctools/usr/share/kde4/services/ServiceMenus/qctools.desktop + # Add here commands to install the package into debian/tmp + install -dm 755 $(CURDIR)/debian/tmp/usr/bin + install -m 755 qctools/Project/QtCreator/build/qctools-gui/QCTools $(CURDIR)/debian/tmp/usr/bin + install -m 755 qctools/Project/QtCreator/build/qctools-cli/qcli $(CURDIR)/debian/tmp/usr/bin + + install -dm 755 $(CURDIR)/debian/tmp/usr/share/doc/qctools + install -m 644 qctools/History.txt $(CURDIR)/debian/tmp/usr/share/doc/qctools + install -m 644 qctools/License.html $(CURDIR)/debian/tmp/usr/share/doc/qctools + + install -dm 755 $(CURDIR)/debian/tmp/usr/share/doc/qcli + install -m 644 qctools/History.txt $(CURDIR)/debian/tmp/usr/share/doc/qcli + install -m 644 qctools/License.html $(CURDIR)/debian/tmp/usr/share/doc/qcli + + install -dm 755 $(CURDIR)/debian/tmp/usr/share/pixmaps + install -m 644 qctools/Source/Resource/Logo.png $(CURDIR)/debian/tmp/usr/share/pixmaps/qctools.xpm + install -dm 755 $(CURDIR)/debian/tmp/usr/share/icons/hicolor + install -m 644 qctools/Source/Resource/Logo.png $(CURDIR)/debian/tmp/usr/share/icons/hicolor/qctools.png + install -dm 755 $(CURDIR)/debian/tmp/usr/share/icons/hicolor/256x256/apps + install -m 644 qctools/Source/Resource/Logo.png $(CURDIR)/debian/tmp/usr/share/icons/hicolor/256x256/apps/qctools.png + + install -dm 755 $(CURDIR)/debian/tmp/usr/share/applications + install -m 644 qctools/Project/GNU/GUI/qctools.desktop $(CURDIR)/debian/tmp/usr/share/applications + install -dm 755 $(CURDIR)/debian/tmp/usr/share/apps/konqueror/servicemenus/ + install -m 644 qctools/Project/GNU/GUI/qctools.kde3.desktop $(CURDIR)/debian/tmp/usr/share/apps/konqueror/servicemenus/qctools.desktop + install -dm 755 $(CURDIR)/debian/tmp/usr/share/kde4/services/ServiceMenus/ + install -m 644 qctools/Project/GNU/GUI/qctools.kde4.desktop $(CURDIR)/debian/tmp/usr/share/kde4/services/ServiceMenus/qctools.desktop + install -dm 755 $(CURDIR)/debian/tmp/usr/share/kservices5/ServiceMenus/ + install -m 644 qctools/Project/GNU/GUI/qctools.kde4.desktop $(CURDIR)/debian/tmp/usr/share/kservices5/ServiceMenus/qctools.desktop + install -dm 755 $(CURDIR)/debian/tmp/usr/share/appdata + install -m 644 qctools/Project/GNU/GUI/qctools.metainfo.xml $(CURDIR)/debian/tmp/usr/share/appdata/qctools.appdata.xml # Build architecture-independent files here. binary-indep: build install @@ -67,7 +76,7 @@ binary-indep: build install binary-arch: build install dh_testdir dh_testroot - dh_install --sourcedir=debian/qctools + dh_install --sourcedir=debian/tmp dh_installchangelogs dh_installdocs dh_installexamples @@ -83,7 +92,8 @@ binary-arch: build install # dh_installinfo dh_installman dh_link - dh_strip --dbg-package=qctools-dbg + dh_strip -p qctools --dbg-package=qctools-dbg + dh_strip -p qcli --dbg-package=qctools-dbg dh_compress dh_fixperms # dh_perl diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 000000000..163aaf8d8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt)