diff --git a/.github/workflows/conan.yml b/.github/workflows/conan.yml deleted file mode 100644 index 2a54852..0000000 --- a/.github/workflows/conan.yml +++ /dev/null @@ -1,67 +0,0 @@ -env: - splitByBuildTypes: "true" - - -# bincrafters-conventions:gha-workflow-version:8 -# You can add custom environment variables above the version tag -# Do not modify the tag or anything below the tag -# This script gets automatically updated - -# Possible configurations: -# env: -# splitByBuildTypes: "false" # Possible values "false", "true", default: false - -# You can furthermore set any environment variable understood by Conan and Conan Package Tools - -on: [push, pull_request] - -jobs: - generate-matrix: - name: Generate Job Matrix - runs-on: ubuntu-20.04 - outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v1 - with: - python-version: "3.8" - - name: Install Package Tools - run: | - pip install bincrafters_package_tools - conan user - - name: Generate Job Matrix - id: set-matrix - env: - splitByBuildTypes: ${{ env.splitByBuildTypes }} - run: | - MATRIX=$(bincrafters-package-tools generate-ci-jobs --platform gha) - echo "${MATRIX}" - echo "::set-output name=matrix::${MATRIX}" - conan: - needs: generate-matrix - runs-on: ${{ matrix.config.os }} - strategy: - fail-fast: false - matrix: ${{fromJson(needs.generate-matrix.outputs.matrix)}} - name: ${{ matrix.config.name }} - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v1 - with: - python-version: "3.8" - - name: Install Conan - env: - BPT_MATRIX: ${{toJson(matrix.config)}} - run: | - pip install bincrafters_package_tools - # remove newlines from matrix first - matrix=$(echo ${BPT_MATRIX}) - bincrafters-package-tools prepare-env --platform gha --config "${matrix}" - shell: bash - - name: Run - env: - CONAN_LOGIN_USERNAME: ${{ secrets.CONAN_LOGIN_USERNAME }} - CONAN_PASSWORD: ${{ secrets.CONAN_PASSWORD }} - run: | - bincrafters-package-tools --auto diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml deleted file mode 100644 index ac03687..0000000 --- a/.github/workflows/mingw.yml +++ /dev/null @@ -1,31 +0,0 @@ -on: [push, pull_request] - -jobs: - MinGW: - runs-on: windows-latest - strategy: - fail-fast: false - matrix: - mingwVersion: ["7", "8"] - buildType: [Debug, Release] - arch: [x86_64] - threads: [posix] - include: - - arch: "x86" - exceptions: dwarf2 - - arch: "x86_64" - exceptions: seh - steps: - - uses: actions/checkout@v1 - - name: install - run: | - pip install bincrafters_package_tools - - name: run - env: - CONAN_BUILD_TYPES: ${{matrix.buildType}} - MINGW_CONFIGURATIONS: ${{matrix.mingwVersion}}@${{matrix.arch}}@${{matrix.exceptions}}@${{matrix.threads}} - CONAN_BUILD_REQUIRES: "msys2/20161025" - CONAN_OPTIONS: "harfbuzz:with_glib=False" - CONAN_BUILD_POLICY: "outdated" - run: | - bincrafters-package-tools --auto diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..c1993f5 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,35 @@ +name: Publish Qt recipe to JFrog + +on: + schedule: + # * is a special character in YAML so you have to quote this string + - cron: '30 23 * * 2' + + push: + branches: [ turtlebrowser/5.15.2 ] + + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + environment: JFrog + + steps: + - uses: actions/checkout@v2 + + - name: Install Conan + id: conan + uses: turtlebrowser/get-conan@main + + - name: Add conan jfrog remote + run: conan remote add jfrog https://turtlebrowser.jfrog.io/artifactory/api/conan/conan + + - name: Authenticate with jfrog + run: conan user -p ${{ secrets.JFROG_PASSWORD }} -r jfrog ${{ secrets.JFROG_USER }} + + - name: Install conan-qt locally + run: conan export . qt/5.15.2@turtlebrowser/test + + - name: Upload the Qt recipe to jfrog + run: conan upload qt/5.15.2@turtlebrowser/test --confirm -r jfrog diff --git a/README.md b/README.md index 023e316..3cbded9 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ ## Package Status -| Bintray | Windows | Linux & macOS | -|:--------:|:---------:|:-----------------:| -|[![Download](https://api.bintray.com/packages/bincrafters/public-conan/qt%3Abincrafters/images/download.svg) ](https://bintray.com/bincrafters/public-conan/qt%3Abincrafters/_latestVersion)|[![Build status](https://ci.appveyor.com/api/projects/status/github/bincrafters/conan-qt?svg=true)](https://ci.appveyor.com/project/bincrafters/conan-qt)|[![Build Status](https://travis-ci.com/bincrafters/conan-qt.svg)](https://travis-ci.com/bincrafters/conan-qt)| +[![Publish Qt recipe to JFrog](https://github.com/turtlebrowser/conan-qt/actions/workflows/publish.yml/badge.svg)](https://github.com/turtlebrowser/conan-qt/actions/workflows/publish.yml) [Changelog](CHANGELOG.md) diff --git a/conandata.yml b/conandata.yml index 103a26f..4f8d1d8 100644 --- a/conandata.yml +++ b/conandata.yml @@ -36,7 +36,11 @@ sources: url: "https://download.qt.io/archive/qt/5.15/5.15.1/single/qt-everywhere-src-5.15.1.tar.xz" sha256: "44da876057e21e1be42de31facd99be7d5f9f07893e1ea762359bcee0ef64ee9" "5.15.2": - url: "https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz" + url: + - "https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz" + - "https://qt-mirror.dannhauer.de/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz" + - "https://www.funet.fi/pub/mirrors/download.qt-project.org/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz" + - "https://ftp.fau.de/qtproject/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz" sha256: "3a530d1b243b5dec00bc54937455471aaa3e56849d2593edb8ded07228202240" patches: "5.13.1": @@ -97,3 +101,5 @@ patches: base_path: "qt5/qtwebengine/src/3rdparty" - patch_file: "patches/f830b86.diff" base_path: "qt5/qtwebengine/src/3rdparty" + - patch_file: "patches/0435cb0b99d919d8ad17f4c6feed8236d7e6177e.diff" + base_path: "qt5/qtbase" diff --git a/conanfile.py b/conanfile.py index 004df9e..e69316b 100644 --- a/conanfile.py +++ b/conanfile.py @@ -131,7 +131,7 @@ class QtConan(ConanFile): def build_requirements(self): if tools.os_info.is_windows and self.settings.compiler == "Visual Studio": self.build_requires("jom/1.1.3") - if self.settings.os == 'Linux': + if self.settings.os in ["Linux", "FreeBSD"]: if not tools.which('pkg-config'): self.build_requires('pkgconf/1.7.3') if self.options.qtwebengine: @@ -190,7 +190,7 @@ def _check_python_version(): _check_python_version() def config_options(self): - if self.settings.os != "Linux": + if self.settings.os not in ["Linux", "FreeBSD"]: self.options.with_icu = False if self.settings.compiler == "apple-clang": if tools.Version(self.settings.compiler.version) < "10.0": @@ -202,7 +202,7 @@ def configure(self): raise ConanInvalidConfiguration("qt 5.15.0 is not support on GCC or clang before 5.0") if conan_version < Version("1.20.0"): raise ConanInvalidConfiguration("This recipe needs at least conan 1.20.0, please upgrade.") - if self.settings.os != 'Linux': + if self.settings.os not in ["Linux", "FreeBSD"]: # self.options.with_libiconv = False self.options.with_fontconfig = False if self.settings.compiler == "gcc" and Version(self.settings.compiler.version.value) < "5.3": @@ -234,7 +234,7 @@ def configure(self): if self.options.qtmultimedia and not self.options.GUI: raise ConanInvalidConfiguration("Qt multimedia cannot be used without GUI") - if self.settings.os != "Linux": + if self.settings.os not in ["Linux", "FreeBSD"]: self.options.with_libalsa = False if self.options.qtwebengine: @@ -325,13 +325,13 @@ def requirements(self): self.requires("openal/1.19.1") if self.options.with_libalsa: self.requires("libalsa/1.1.9") - if self.options.GUI and self.settings.os == "Linux": + if self.options.GUI and self.settings.os in ["Linux", "FreeBSD"]: self.requires("xorg/system") if not tools.cross_building(self, skip_x64_x86=True): self.requires("xkbcommon/1.0.1") if self.options.with_zstd: self.requires("zstd/1.4.4") - if self.options.qtwebengine and self.settings.os == "Linux": + if self.options.qtwebengine and self.settings.os in ["Linux", "FreeBSD"]: self.requires("xorg/system") self.requires("expat/2.2.10") #self.requires("ffmpeg/4.2@bincrafters/stable") @@ -373,6 +373,8 @@ def _make_program(self): return "jom" elif tools.os_info.is_windows: return "mingw32-make" + elif self.settings.os == "FreeBSD": + return "gmake" else: return "make" @@ -382,7 +384,7 @@ def _xplatform(self): return {"x86": "linux-g++-32", "armv6": "linux-arm-gnueabi-g++", "armv7": "linux-arm-gnueabi-g++", - "armv7hf": "linux-arm-gnueabi-g++", + "armv7hf": "linux-arm-gnueabihf-g++", "armv8": "linux-aarch64-gnu-g++"}.get(str(self.settings.arch), "linux-g++") elif self.settings.compiler == "clang": if self.settings.arch == "x86": @@ -501,7 +503,7 @@ def build(self): args += ["-opengl desktop"] elif self.options.opengl == "dynamic": args += ["-opengl dynamic"] - + if self.options.with_vulkan: args.append("-vulkan") else: @@ -638,7 +640,7 @@ def _getenvpath(var): if tools.os_info.is_linux and self.settings.compiler == "clang": args += ['QMAKE_CXXFLAGS+="-ftemplate-depth=1024"'] - if self.options.qtwebengine and self.settings.os == "Linux": + if self.options.qtwebengine and self.settings.os in ["Linux", "FreeBSD"]: args += ['-qt-webengine-ffmpeg', '-system-webengine-opus'] @@ -646,14 +648,17 @@ def _getenvpath(var): args.append(str(self.options.config)) with tools.vcvars(self.settings) if self.settings.compiler == "Visual Studio" else tools.no_op(): - build_env = {"MAKEFLAGS": "j%d" % tools.cpu_count(), "PKG_CONFIG_PATH": [os.getcwd()]} + build_env = { + "MAKEFLAGS": "-j%d" % tools.cpu_count(), + "JOMFLAGS": "j%d" % tools.cpu_count(), + "PKG_CONFIG_PATH": [os.getcwd()]} if self.settings.os == "Windows": build_env["PATH"] = [os.path.join(self.source_folder, "qt5", "gnuwin32", "bin")] - + if tools.os_info.is_macos: open(self.build_folder + "/.qmake.stash" , 'w').close() open(self.build_folder + "/.qmake.super" , 'w').close() - + with tools.environment_append(build_env): self.run("%s/qt5/configure %s" % (self.source_folder, " ".join(args)), run_environment=True) if tools.os_info.is_macos: diff --git a/patches/0435cb0b99d919d8ad17f4c6feed8236d7e6177e.diff b/patches/0435cb0b99d919d8ad17f4c6feed8236d7e6177e.diff new file mode 100644 index 0000000..2861867 --- /dev/null +++ b/patches/0435cb0b99d919d8ad17f4c6feed8236d7e6177e.diff @@ -0,0 +1,92 @@ +From 0435cb0b99d919d8ad17f4c6feed8236d7e6177e Mon Sep 17 00:00:00 2001 +From: Eric Lemanissier +Date: Wed, 13 Feb 2019 21:14:56 +0100 +Subject: [PATCH] add linux-arm-gnueabihf-g++ mkspecs + +Change-Id: I2d789e5ee6cf7a9cf1a2d4f52c379992cc66cfbc +--- + mkspecs/linux-arm-gnueabihf-g++/qmake.conf | 24 +++++++++++ + .../linux-arm-gnueabihf-g++/qplatformdefs.h | 40 +++++++++++++++++++ + 2 files changed, 64 insertions(+) + create mode 100644 mkspecs/linux-arm-gnueabihf-g++/qmake.conf + create mode 100644 mkspecs/linux-arm-gnueabihf-g++/qplatformdefs.h + +diff --git a/mkspecs/linux-arm-gnueabihf-g++/qmake.conf b/mkspecs/linux-arm-gnueabihf-g++/qmake.conf +new file mode 100644 +index 0000000000..6470559eac +--- /dev/null ++++ b/mkspecs/linux-arm-gnueabihf-g++/qmake.conf +@@ -0,0 +1,24 @@ ++# ++# qmake configuration for building with arm-linux-gnueabihf-g++ ++# ++ ++MAKEFILE_GENERATOR = UNIX ++CONFIG += incremental ++QMAKE_INCREMENTAL_STYLE = sublib ++ ++include(../common/linux.conf) ++include(../common/gcc-base-unix.conf) ++include(../common/g++-unix.conf) ++ ++# modifications to g++.conf ++QMAKE_CC = arm-linux-gnueabihf-gcc ++QMAKE_CXX = arm-linux-gnueabihf-g++ ++QMAKE_LINK = arm-linux-gnueabihf-g++ ++QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ ++ ++# modifications to linux.conf ++QMAKE_AR = arm-linux-gnueabihf-ar cqs ++QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy ++QMAKE_NM = arm-linux-gnueabihf-nm -P ++QMAKE_STRIP = arm-linux-gnueabihf-strip ++load(qt_config) +diff --git a/mkspecs/linux-arm-gnueabihf-g++/qplatformdefs.h b/mkspecs/linux-arm-gnueabihf-g++/qplatformdefs.h +new file mode 100644 +index 0000000000..f10d1bc7ea +--- /dev/null ++++ b/mkspecs/linux-arm-gnueabihf-g++/qplatformdefs.h +@@ -0,0 +1,40 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2019 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the qmake spec of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "../linux-g++/qplatformdefs.h" +-- +2.17.1.windows.2 +