Improve excludelist generation (fixes #274)
This commit is contained in:
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Download excludelist
|
|
||||||
blacklisted=($(wget --quiet https://raw.githubusercontent.com/probonopd/AppImages/master/excludelist -O - | sort | uniq | grep -v "^#.*" | grep "[^-\s]"))
|
|
||||||
|
|
||||||
# Create array
|
|
||||||
for item in ${blacklisted[@]:0:${#blacklisted[@]}-1}; do
|
|
||||||
echo -ne '\\"'$item'\\" << '
|
|
||||||
done
|
|
||||||
echo -ne '\\"'${blacklisted[-1]}'\\"'
|
|
||||||
Executable
+42
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# download excludelist
|
||||||
|
blacklisted=($(wget --quiet https://raw.githubusercontent.com/probonopd/AppImages/master/excludelist -O - | sort | uniq | grep -v "^#.*" | grep "[^-\s]"))
|
||||||
|
|
||||||
|
# sanity check
|
||||||
|
if [ "$blacklisted" == "" ]; then
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
filename=$(readlink -f $(dirname "$0"))/linuxdeployqt/excludelist.h
|
||||||
|
|
||||||
|
# overwrite existing source file
|
||||||
|
cat > "$filename" <<EOF
|
||||||
|
/*
|
||||||
|
* List of libraries to exclude for different reasons.
|
||||||
|
*
|
||||||
|
* Automatically generated from
|
||||||
|
* https://raw.githubusercontent.com/probonopd/AppImages/master/excludelist
|
||||||
|
*
|
||||||
|
* This file shall be committed by the developers occassionally,
|
||||||
|
* otherwise systems without access to the internet won't be able to build
|
||||||
|
* fully working versions of linuxdeployqt.
|
||||||
|
*
|
||||||
|
* See https://github.com/probonopd/linuxdeployqt/issues/274 for more
|
||||||
|
* information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
|
static const QStringList generatedExcludelist = {
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Create array
|
||||||
|
for item in ${blacklisted[@]:0:${#blacklisted[@]}-1}; do
|
||||||
|
echo -e ' "'"$item"'",' >> "$filename"
|
||||||
|
done
|
||||||
|
echo -e ' "'"${blacklisted[-1]}"'"' >> "$filename"
|
||||||
|
|
||||||
|
echo "};" >> "$filename"
|
||||||
@@ -9,14 +9,15 @@ add_definitions("-DBUILD_NUMBER=\"${BUILD_NUMBER}\"")
|
|||||||
find_package(Qt5 REQUIRED COMPONENTS Core)
|
find_package(Qt5 REQUIRED COMPONENTS Core)
|
||||||
|
|
||||||
# update excludelist
|
# update excludelist
|
||||||
|
message(STATUS "Updating excludelist...")
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/../excludelist.sh
|
COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/../generate-excludelist.sh
|
||||||
OUTPUT_VARIABLE EXCLUDELIST
|
OUTPUT_VARIABLE EXCLUDELIST
|
||||||
TIMEOUT 10
|
TIMEOUT 10
|
||||||
RESULT_VARIABLE EXCLUDELIST_RESULT
|
RESULT_VARIABLE EXCLUDELIST_RESULT
|
||||||
)
|
)
|
||||||
if(NOT EXCLUDELIST_RESULT EQUAL 0)
|
if(NOT EXCLUDELIST_RESULT EQUAL 0)
|
||||||
message(FATAL_ERROR "Failed to fetch and generate excludelist")
|
message(WARNING "Updating excludelist failed, using outdated copy")
|
||||||
endif()
|
endif()
|
||||||
mark_as_advanced(EXCLUDELIST EXCLUDELIST_RESULT)
|
mark_as_advanced(EXCLUDELIST EXCLUDELIST_RESULT)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* List of libraries to exclude for different reasons.
|
||||||
|
*
|
||||||
|
* Automatically generated from
|
||||||
|
* https://raw.githubusercontent.com/probonopd/AppImages/master/excludelist
|
||||||
|
*
|
||||||
|
* This file shall be committed by the developers occassionally,
|
||||||
|
* otherwise systems without access to the internet won't be able to build
|
||||||
|
* fully working versions of linuxdeployqt.
|
||||||
|
*
|
||||||
|
* See https://github.com/probonopd/linuxdeployqt/issues/274 for more
|
||||||
|
* information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
|
static const QStringList generatedExcludelist = {
|
||||||
|
"ld-linux.so.2",
|
||||||
|
"ld-linux-x86-64.so.2",
|
||||||
|
"libanl.so.1",
|
||||||
|
"libasound.so.2",
|
||||||
|
"libBrokenLocale.so.1",
|
||||||
|
"libcidn.so.1",
|
||||||
|
"libcom_err.so.2",
|
||||||
|
"libcrypt.so.1",
|
||||||
|
"libc.so.6",
|
||||||
|
"libdl.so.2",
|
||||||
|
"libdrm.so.2",
|
||||||
|
"libexpat.so.1",
|
||||||
|
"libfontconfig.so.1",
|
||||||
|
"libfreetype.so.6",
|
||||||
|
"libgcc_s.so.1",
|
||||||
|
"libgdk_pixbuf-2.0.so.0",
|
||||||
|
"libgio-2.0.so.0",
|
||||||
|
"libglib-2.0.so.0",
|
||||||
|
"libGL.so.1",
|
||||||
|
"libgobject-2.0.so.0",
|
||||||
|
"libgpg-error.so.0",
|
||||||
|
"libharfbuzz.so.0",
|
||||||
|
"libICE.so.6",
|
||||||
|
"libjack.so.0",
|
||||||
|
"libkeyutils.so.1",
|
||||||
|
"libm.so.6",
|
||||||
|
"libmvec.so.1",
|
||||||
|
"libnsl.so.1",
|
||||||
|
"libnss_compat.so.2",
|
||||||
|
"libnss_db.so.2",
|
||||||
|
"libnss_dns.so.2",
|
||||||
|
"libnss_files.so.2",
|
||||||
|
"libnss_hesiod.so.2",
|
||||||
|
"libnss_nisplus.so.2",
|
||||||
|
"libnss_nis.so.2",
|
||||||
|
"libp11-kit.so.0",
|
||||||
|
"libpango-1.0.so.0",
|
||||||
|
"libpangocairo-1.0.so.0",
|
||||||
|
"libpangoft2-1.0.so.0",
|
||||||
|
"libpthread.so.0",
|
||||||
|
"libresolv.so.2",
|
||||||
|
"librt.so.1",
|
||||||
|
"libSM.so.6",
|
||||||
|
"libstdc++.so.6",
|
||||||
|
"libthread_db.so.1",
|
||||||
|
"libusb-1.0.so.0",
|
||||||
|
"libutil.so.1",
|
||||||
|
"libuuid.so.1",
|
||||||
|
"libX11.so.6",
|
||||||
|
"libxcb.so.1",
|
||||||
|
"libz.so.1"
|
||||||
|
};
|
||||||
@@ -38,18 +38,12 @@ DEFINES += LINUXDEPLOYQT_VERSION="'\"$(shell cd $$PWD && git describe --tags $(s
|
|||||||
contains(DEFINES, EXCLUDELIST.*) {
|
contains(DEFINES, EXCLUDELIST.*) {
|
||||||
message("EXCLUDELIST specified, to use the most recent exclude list, please run qmake without EXCLUDELIST definition and with internet.")
|
message("EXCLUDELIST specified, to use the most recent exclude list, please run qmake without EXCLUDELIST definition and with internet.")
|
||||||
} else {
|
} else {
|
||||||
message("Creating exclude list.")
|
message("Updating exclude list...")
|
||||||
|
|
||||||
# check whether command _would_ run successfully
|
# check whether command _would_ run successfully
|
||||||
EXCLUDELIST_GENERATION_WORKS = FALSE
|
EXCLUDELIST_GENERATION_WORKS = FALSE
|
||||||
system($$_PRO_FILE_PWD_/../excludelist.sh): EXCLUDELIST_GENERATION_WORKS = TRUE
|
system($$_PRO_FILE_PWD_/../generate-excludelist.sh): EXCLUDELIST_GENERATION_WORKS = TRUE
|
||||||
isEqual(EXCLUDELIST_GENERATION_WORKS, FALSE) {
|
isEqual(EXCLUDELIST_GENERATION_WORKS, FALSE) {
|
||||||
error("Generating excludelist failed")
|
warning("Updating excludelist failed, using outdated copy")
|
||||||
}
|
}
|
||||||
|
|
||||||
EXCLUDELIST = $$system($$_PRO_FILE_PWD_/../excludelist.sh)
|
|
||||||
isEmpty(EXCLUDELIST) {
|
|
||||||
error("Generated excludelist is empty")
|
|
||||||
}
|
|
||||||
DEFINES += EXCLUDELIST=\""$$EXCLUDELIST"\"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
#include "shared.h"
|
#include "shared.h"
|
||||||
|
#include "excludelist.h"
|
||||||
|
|
||||||
QString appBinaryPath;
|
QString appBinaryPath;
|
||||||
bool runStripEnabled = true;
|
bool runStripEnabled = true;
|
||||||
@@ -465,20 +466,13 @@ LibraryInfo parseLddLibraryLine(const QString &line, const QString &appDirPath,
|
|||||||
This is more suitable for bundling in a way that is portable between different distributions and target systems.
|
This is more suitable for bundling in a way that is portable between different distributions and target systems.
|
||||||
Along the way, this also takes care of non-Qt libraries.
|
Along the way, this also takes care of non-Qt libraries.
|
||||||
|
|
||||||
The excludelist can be updated by running
|
The excludelist can be updated by running the bundled script generate-excludelist.sh
|
||||||
#/bin/bash
|
|
||||||
blacklisted=$(wget https://raw.githubusercontent.com/probonopd/AppImages/master/excludelist -O - | sort | uniq | grep -v "^#.*" | grep "[^-\s]")
|
|
||||||
for item in $blacklisted; do
|
|
||||||
echo -ne '"'$item'" << '
|
|
||||||
done
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QStringList excludelist;
|
// copy generated excludelist
|
||||||
#ifndef EXCLUDELIST
|
QStringList excludelist = generatedExcludelist;
|
||||||
#error "EXCLUDELIST not defined! Please have your build system download run excludelist.sh and add -DEXCLUDE_LIST=<result>"
|
|
||||||
#else
|
// append exclude libs
|
||||||
excludelist << EXCLUDELIST;
|
|
||||||
#endif
|
|
||||||
excludelist += excludeLibs;
|
excludelist += excludeLibs;
|
||||||
|
|
||||||
LogDebug() << "excludelist:" << excludelist;
|
LogDebug() << "excludelist:" << excludelist;
|
||||||
|
|||||||
Reference in New Issue
Block a user