Files
chromebrew/packages/qt5_webengine.rb

139 lines
5.3 KiB
Ruby

# Adapted from Arch Linux qt5-webengine PKGBUILD at:
# https://github.com/archlinux/svntogit-packages/raw/packages/qt5-webengine/trunk/PKGBUILD
# & LFS build documentation at https://www.linuxfromscratch.org/blfs/view/svn/x/qtwebengine.html
require 'package'
Package.load_package("#{__dir__}/qt5_base.rb")
class Qt5_webengine < Package
description 'Provides support for web applications using the Chromium browser project'
homepage 'https://www.qt.io'
version '5.15.15'
@qt_pkgver = Qt5_webengine.version.to_s.gsub(/-.*/, '')
@qt_basever = Qt5_base.version.to_s.gsub(/-.*/, '')
license 'LGPL3 LGPL2.1 BSD'
compatibility 'aarch64 armv7l x86_64'
source_url 'https://anduin.linuxfromscratch.org/BLFS/qtwebengine/qtwebengine-5.15.15.tar.xz'
source_sha256 '53b2f184c8b40bcac88b13f9f565a3d849f1ccfcc4f7344823ccc4265fb80445'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '8b5cd6d79fdbc00d8eb9bc2b389814f979b487865192122d9369056dc431e7e7',
armv7l: '8b5cd6d79fdbc00d8eb9bc2b389814f979b487865192122d9369056dc431e7e7',
x86_64: '0b71f2615effd2e5c6628e3a18429d8ed06267b6d472b06c8b6e7b3e80732a74'
})
depends_on 'alsa_lib' # R
depends_on 'dbus' # R
depends_on 'expat' # R
depends_on 'ffmpeg' # R (This has to be patched for chromium.)
depends_on 'fontconfig' # R
depends_on 'freetype' # R
depends_on 'gcc_lib' # R
depends_on 'glib' => :build
depends_on 'glibc' # R
depends_on 'gperf' => :build
depends_on 'harfbuzz' # R
depends_on 'icu4c' # R
depends_on 'jsoncpp' => :build
depends_on 'lcms' # R
depends_on 'libevent' # R
depends_on 'libglvnd' # R
depends_on 'libjpeg_turbo' # R
depends_on 'libpng' # R
depends_on 'libvpx' # R
depends_on 'libwebp' # R
depends_on 'libx11' # R
depends_on 'libxcb' # R
depends_on 'libxcomposite' # R
depends_on 'libxdamage' # R
depends_on 'libxext' # R
depends_on 'libxfixes' # R
depends_on 'libxkbcommon' # R
depends_on 'libxkbfile' => :build
depends_on 'libxml2' # R
depends_on 'libxrandr' # R
depends_on 'libxrender' # R
depends_on 'libxslt' # R
depends_on 'libxss' => :build
depends_on 'libxtst' # R
depends_on 'minizip' # R
depends_on 'nodebrew' => :build
depends_on 'nss' # R
depends_on 'opus' # R
depends_on 'pciutils' # R
depends_on 'pipewire' => :build
depends_on 'poppler' => :build
depends_on 'pulseaudio' # R
depends_on 'qt5_base' # R
depends_on 'qt5_declarative' # R
depends_on 'qt5_location' # R
depends_on 'qt5_tools' # R
depends_on 'qt5_webchannel' # R
depends_on 're2' # R
depends_on 'snappy' # R
depends_on 'zlib' # R
def self.patch
# Patches from lfs: https://www.linuxfromscratch.org/blfs/view/svn/x/qtwebengine.html
downloader 'https://www.linuxfromscratch.org/patches/blfs/svn/qtwebengine-5.15.15-build_fixes-1.patch',
'a9e248414302b6fbd19e0404142e5ad082fb4a45eaf6f96d1b847a7b4bf8e1bd'
system 'patch -Np1 -i qtwebengine-5.15.15-build_fixes-1.patch'
downloader 'https://www.linuxfromscratch.org/patches/blfs/svn/qtwebengine-5.15.15-ffmpeg5_fixes-1.patch',
'9f45c97d2aeb99ba8eea90cdd3b380c03218ca4d4c88e356f622e094971dd34a'
system 'patch -Np1 -i qtwebengine-5.15.15-ffmpeg5_fixes-1.patch'
# Further Python3 patches
system "sed -i 's,qtwebengine_checkForPython2,qtwebengine_checkForPython,g' src/buildtools/config/support.pri"
system "sed -i 's,webengine-python2,webengine-python,g' src/buildtools/config/support.pri"
FileUtils.mkdir_p '.git'
FileUtils.mkdir_p 'src/3rdparty/chromium/.git'
system "sed -e '/^MODULE_VERSION/s/5.*/#{@qt_basever}/' -i .qmake.conf"
system "sed -i 's/NINJAJOBS/NINJA_JOBS/' src/core/gn_run.pro", exception: false
system "find -type f -name \"*.pr[io]\" | xargs sed -i -e 's|INCLUDEPATH += |&$$QTWEBENGINE_ROOT/include |'"
system "sed -e '/link_pulseaudio/s/false/true/' -i src/3rdparty/chromium/media/media_options.gni"
system 'sed -e \'s/\\^(?i)/(?i)^/\' -i src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py'
system "sed \"s,mode = 'rU,mode = 'r,g\" -i src/3rdparty/chromium/tools/grit/grit/util.py"
# Fix issue with system re2 causing build to fail: https://bugs.gentoo.org/913923
system "sed -i 's/use_system_re2=true/use_system_re2=false/g' src/core/config/linux.pri"
end
def self.prebuild
# Nodejs is needed for this install, and nodejs is installed by
# nodebrew.
return unless `nodebrew ls`.include?('not installed')
puts 'nodejs is not configured!'.lightred
puts "Please run 'crew postinstall nodebrew' for more info.".orange
abort
end
def self.build
unless File.file?('Makefile')
system "qmake QMAKE_LFLAGS=-fuse-ld=#{CREW_LINKER} -- \
-proprietary-codecs \
-system-ffmpeg \
-webp \
-spellchecker \
-webengine-icu \
-webengine-kerberos"
end
@counter = 1
@counter_max = 20
loop do
break if Kernel.system "NINJAJOBS=#{CREW_NPROC} make"
puts "Make iteration #{@counter} of #{@counter_max}...".orange
@counter += 1
break if @counter > @counter_max
end
end
def self.install
system "make INSTALL_ROOT=#{CREW_DEST_DIR} install"
# This is needed because this is a frankenstein build of @qt_pkgver and @qt_basever,
# which is the version of the other QT files.
system "sed -e 's|#{@qt_pkgver} |#{@qt_basever} |' -i #{CREW_DEST_LIB_PREFIX}/cmake/*/*Config.cmake"
end
end