diff --git a/.travis.yml b/.travis.yml index 20f8f49c6..8f31d894e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,5 +16,5 @@ install: - docker build -t calamares . script: - - docker run -v $PWD:/src --tmpfs /build:rw,size=65536k calamares bash -lc "cd /build && cmake -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON /src && make -j2 && make install DESTDIR=/build/INSTALL_ROOT" + - docker run -v $PWD:/src --tmpfs /build:rw,size=65536k -e SRCDIR=/src -e BUILDDIR=/build calamares "/src/ci/travis.sh" diff --git a/CMakeModules/IncludeKPMCore.cmake b/CMakeModules/IncludeKPMCore.cmake deleted file mode 100644 index b06299d91..000000000 --- a/CMakeModules/IncludeKPMCore.cmake +++ /dev/null @@ -1,17 +0,0 @@ -# Shared CMake core for finding KPMCore -# -# This is wrapped into a CMake include file because there's a bunch of -# pre-requisites that need searching for before looking for KPMCore. -# If you just do find_package( KPMCore ) without finding the things -# it links against first, you get CMake errors. -# -# -find_package(ECM 5.10.0 REQUIRED NO_MODULE) -set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH}) - -include(KDEInstallDirs) -include(GenerateExportHeader) -find_package( KF5 REQUIRED CoreAddons ) -find_package( KF5 REQUIRED Config I18n IconThemes KIO Service ) - -find_package( KPMcore 3.0.3 REQUIRED ) diff --git a/ci/calamares-coverity.sh b/ci/calamares-coverity.sh deleted file mode 100755 index c7a6351c5..000000000 --- a/ci/calamares-coverity.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash - -# Make sure we can make git operations from the Calamares Docker+Jenkins environment. -cp ~/jenkins-master/.gitconfig ~ -cp -R ~/jenkins-master/.ssh ~ - -cd "$WORKSPACE" -git config --global http.sslVerify false - -rm -Rf "$WORKSPACE/prefix" -mkdir "$WORKSPACE/prefix" - -git clone git://anongit.kde.org/kpmcore "$WORKSPACE/kpmcore" -cd "$WORKSPACE/kpmcore" -mkdir "$WORKSPACE/kpmcore/build" -cd "$WORKSPACE/kpmcore/build" -cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr .. -nice -n 18 make -j2 -make DESTDIR="$WORKSPACE/prefix" install - -cd "$WORKSPACE" - -wget https://scan.coverity.com/download/cxx/linux64 --no-check-certificate \ - --post-data "token=ll90T04noQ4cORJx_zczKA&project=calamares%2Fcalamares" \ - -O coverity_tool.tar.gz -mkdir "$WORKSPACE/coveritytool" -tar xvf coverity_tool.tar.gz -C "$WORKSPACE/coveritytool" --strip-components 2 -export PATH="$WORKSPACE/coveritytool/bin:$PATH" - -rm -Rf "$WORKSPACE/build" -mkdir "$WORKSPACE/build" -cd "$WORKSPACE/build" - -CMAKE_PREFIX_PATH="$WORKSPACE/prefix/usr" cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr -DWEBVIEW_FORCE_WEBKIT=1 .. -nice -n 18 cov-build --dir cov-int make -j2 - -tar caf calamares-ci.tar.xz cov-int - -curl -k --form token=ll90T04noQ4cORJx_zczKA \ - --form email=teo@kde.org \ - --form file=@calamares-ci.tar.xz \ - --form version="master-`date -u +%Y%m%d`" \ - --form description="master on `date -u`" \ - https://scan.coverity.com/builds?project=calamares%2Fcalamares diff --git a/ci/kpmcore-coverity.sh b/ci/kpmcore-coverity.sh deleted file mode 100755 index 9507fc438..000000000 --- a/ci/kpmcore-coverity.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -#Hack for Coverity build, so the compiler doesn't complain about InheritanceChecker -sudo cp ~/jenkins-master/kpluginfactory.h /usr/include/KF5/KCoreAddons - -cd "$WORKSPACE" -wget https://scan.coverity.com/download/cxx/linux64 --no-check-certificate \ - --post-data "token=cyOjQZx5EOFLdhfo7ZDa4Q&project=KDE+Partition+Manager+Core+Library+-+KPMcore" \ - -O coverity_tool.tar.gz -mkdir "$WORKSPACE/coveritytool" -tar xvf coverity_tool.tar.gz -C "$WORKSPACE/coveritytool" --strip-components 2 -export PATH="$WORKSPACE/coveritytool/bin:$PATH" - -rm -Rf "$WORKSPACE/build" -mkdir "$WORKSPACE/build" -cd "$WORKSPACE/build" - -cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr .. -nice -n 18 cov-build --dir cov-int make -j2 - -tar cavf kpmcore-ci.tar.xz cov-int - -cat cov-int/build-log.txt - -curl -k --form token=cyOjQZx5EOFLdhfo7ZDa4Q \ - --form email=teo@kde.org \ - --form file=@kpmcore-ci.tar.xz \ - --form version="master-`date -u +%Y%m%d`" \ - --form description="master on `date -u`" \ - https://scan.coverity.com/builds?project=KDE+Partition+Manager+Core+Library+-+KPMcore diff --git a/ci/travis-continuous.sh b/ci/travis-continuous.sh new file mode 100755 index 000000000..02994be74 --- /dev/null +++ b/ci/travis-continuous.sh @@ -0,0 +1,15 @@ +#! /bin/sh +# +# Travis CI script for use on every-commit: +# - build and install Calamares +# +test -n "$BUILDDIR" || exit 1 +test -n "$SRCDIR" || exit 1 + +test -d $BUILDDIR || exit 1 +test -d $SRCDIR || exit 1 +test -f $SRCDIR/CMakeLists.txt || exit 1 + +cd $BUILDDIR || exit 1 + +cmake -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON $SRCDIR && make -j2 && make install DESTDIR=/build/INSTALL_ROOT diff --git a/ci/travis-coverity.sh b/ci/travis-coverity.sh new file mode 100755 index 000000000..07da4ce1a --- /dev/null +++ b/ci/travis-coverity.sh @@ -0,0 +1,34 @@ +#! /bin/sh +# +# Travis CI script for weekly (cron) use: +# - use the coverity tool to build and and upload results +# +test -n "$COVERITY_SCAN_TOKEN" || exit 1 +test -n "$BUILDDIR" || exit 1 +test -n "$SRCDIR" || exit 1 + +test -d $BUILDDIR || exit 1 +test -d $SRCDIR || exit 1 +test -f $SRCDIR/CMakeLists.txt || exit 1 + +cd $BUILDDIR || exit 1 + +curl -k -o coverity_tool.tar.gz \ + -d "token=$COVERITY_SCAN_TOKEN&project=calamares%2Fcalamares" \ + https://scan.coverity.com/download/cxx/linux64 || exit 1 +mkdir "$BUILDDIR/coveritytool" +tar xvf coverity_tool.tar.gz -C "$BUILDDIR/coveritytool" --strip-components 2 +export PATH="$BUILDDIR/coveritytool/bin:$PATH" + + +cmake -DCMAKE_BUILD_TYPE=Debug -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON $SRCDIR || exit 1 +cov-build --dir cov-int make -j2 + +tar caf calamares-ci.tar.xz cov-int + +curl -k --form token=$COVERITY_SCAN_TOKEN \ + --form email=groot@kde.org \ + --form file=@calamares-ci.tar.xz \ + --form version="master-`date -u +%Y%m%d`" \ + --form description="master on `date -u`" \ + https://scan.coverity.com/builds?project=calamares%2Fcalamares diff --git a/ci/travis.sh b/ci/travis.sh new file mode 100755 index 000000000..c8ac49f5d --- /dev/null +++ b/ci/travis.sh @@ -0,0 +1,19 @@ +#! /bin/sh +# +# Travis build driver script: +# - the regular CI runs, triggered by commits, run a script that builds +# and installs calamares, and then runs the tests. +# - the cronjob CI runs, triggered weekly, run a script that uses the +# coverity tools to submit a build. This is slightly more resource- +# intensive than the coverity add-on, but works on master. +# +D=`dirname "$0"` +test -d "$D" || exit 1 +test -x "$D/travis-continuous.sh" || exit 1 +test -x "$D/travis-coverity.sh" || exit 1 + +if test "$TRAVIS_EVENT_TYPE" = "cron" ; then + exec "$D/travis-coverity.sh" +else + exec "$D/travis-continuous.sh" +fi diff --git a/src/branding/default/branding.desc b/src/branding/default/branding.desc index beb236f9b..c3542a9ec 100644 --- a/src/branding/default/branding.desc +++ b/src/branding/default/branding.desc @@ -43,7 +43,7 @@ welcomeExpandingLogo: true # productIcon is used as the window icon, and will (usually) be used # by the window manager to represent the application. This image # should be square, and may be displayed by the window manager -# as small as 32x32 (but possibly larger). +# as small as 16x16 (but possibly larger). # productLogo is used as the logo at the top of the left-hand column # which shows the steps to be taken. The image should be square, # and is displayed at 80x80 pixels (also on HiDPI). diff --git a/src/libcalamaresui/CMakeLists.txt b/src/libcalamaresui/CMakeLists.txt index ccc46f2f3..7c3e8fca2 100644 --- a/src/libcalamaresui/CMakeLists.txt +++ b/src/libcalamaresui/CMakeLists.txt @@ -72,9 +72,10 @@ calamares_add_library( calamaresui EXPORT_MACRO UIDLLEXPORT_PRO LINK_PRIVATE_LIBRARIES ${YAMLCPP_LIBRARY} + ${OPTIONAL_PRIVATE_LIBRARIES} + LINK_LIBRARIES Qt5::Svg Qt5::QuickWidgets - ${OPTIONAL_PRIVATE_LIBRARIES} RESOURCES libcalamaresui.qrc EXPORT CalamaresLibraryDepends VERSION ${CALAMARES_VERSION_SHORT} diff --git a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py index ecc305503..cb94ae45d 100644 --- a/src/modules/bootloader/main.py +++ b/src/modules/bootloader/main.py @@ -13,6 +13,7 @@ # Copyright 2017, Alf Gaida # Copyright 2017, Adriaan de Groot # Copyright 2017, Gabriel Craciunescu +# Copyright 2017, Ben Green # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -235,10 +236,18 @@ def install_grub(efi_directory, fw_type): # if the kernel is older than 4.0, the UEFI bitness likely isn't # exposed to the userspace so we assume a 64 bit UEFI here efi_bitness = "64" - bitness_translate = {"32": "--target=i386-efi", - "64": "--target=x86_64-efi"} + + if efi_bitness == "32": + efi_target = "i386-efi" + efi_grub_file = "grubia32.efi" + efi_boot_file = "bootia32.efi" + elif efi_bitness == "64": + efi_target = "x86_64-efi" + efi_grub_file = "grubx64.efi" + efi_boot_file = "bootx64.efi" + check_target_env_call([libcalamares.job.configuration["grubInstall"], - bitness_translate[efi_bitness], + "--target=" + efi_target, "--efi-directory=" + efi_directory, "--bootloader-id=" + efi_bootloader_id, "--force"]) @@ -260,19 +269,13 @@ def install_grub(efi_directory, fw_type): os.makedirs(install_efi_boot_directory) # Workaround for some UEFI firmwares - efi_file_source = {"32": os.path.join(install_efi_directory_firmware, - efi_bootloader_id, - "grubia32.efi"), - "64": os.path.join(install_efi_directory_firmware, - efi_bootloader_id, - "grubx64.efi")} + efi_file_source = os.path.join(install_efi_directory_firmware, + efi_bootloader_id, + efi_grub_file), + efi_file_target = os.path.join(install_efi_boot_directory, + efi_boot_file), - efi_file_target = {"32": os.path.join(install_efi_boot_directory, - "bootia32.efi"), - "64": os.path.join(install_efi_boot_directory, - "bootx64.efi")} - - shutil.copy2(efi_file_source[efi_bitness], efi_file_target[efi_bitness]) + shutil.copy2(efi_file_source, efi_file_target) else: print("Bootloader: grub (bios)") if libcalamares.globalstorage.value("bootLoader") is None: diff --git a/src/modules/interactiveterminal/CMakeLists.txt b/src/modules/interactiveterminal/CMakeLists.txt index 7b35fae0d..04c5406ce 100644 --- a/src/modules/interactiveterminal/CMakeLists.txt +++ b/src/modules/interactiveterminal/CMakeLists.txt @@ -21,6 +21,7 @@ calamares_add_plugin( interactiveterminal InteractiveTerminalPage.cpp LINK_PRIVATE_LIBRARIES calamaresui + LINK_LIBRARIES KF5::Service KF5::Parts SHARED_LIB diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 1ea69c027..961490bef 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -8,11 +8,15 @@ find_package( KF5 REQUIRED CoreAddons ) # These are needed because KPMcore links publicly against ConfigCore, I18n, IconThemes, KIOCore and Service find_package( KF5 REQUIRED Config I18n IconThemes KIO Service ) +# Compatibility: KPMCore 3.2 has a different API, so detect it +# first and add a define for it; otherwise we need 3.0.3 for NVMe +# support; 3.0.2 works as well, but is buggy (#697) find_package( KPMcore 3.1.50 QUIET ) if ( ${KPMcore_FOUND} ) add_definitions(-DWITH_KPMCORE22) endif() find_package( KPMcore 3.0.3 REQUIRED ) + find_library( atasmart_LIB atasmart ) find_library( blkid_LIB blkid ) if( NOT atasmart_LIB ) diff --git a/src/modules/welcome/CMakeLists.txt b/src/modules/welcome/CMakeLists.txt index f73d8850d..42ce62beb 100644 --- a/src/modules/welcome/CMakeLists.txt +++ b/src/modules/welcome/CMakeLists.txt @@ -12,7 +12,7 @@ set( CHECKER_SOURCES checker/partman_devices.c ) set( CHECKER_LINK_LIBRARIES - ${LIBPARTED_LIBS} + ${LIBPARTED_LIBRARY} Qt5::DBus Qt5::Network )