Files
chromebrew/packages/openmp.rb
Satadru Pramanik, DO, MPH, MEng f8f6095024 Add icu4c updater exclusion, update llvm, and fix output breaking version check in GitHub runners. — ruby_dagwood → 1.0.0-ruby4.0,buildessential: 1.49 → 1.50,icu4c: 77.1 → 77.1,libclc: 21.1.7 → 21.1.8,llvm21_build: 21.1.7 → 21.1.8,llvm21_dev: 21.1.7 → 21.1.8,llvm21_lib: 21.1.7 → 21.1.8,openmp: 21.1.7 → 21.1.8 (#14233)
* Add icu4c updater exclusion, update llvm, and fix output breaking version check in GitHub runners.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* updater: Package File Update Run on linux/386 container.

* updater: Package File Update Run on linux/amd64 container.

* updater: Package File Update Run on linux/arm/v7 container.

* Add unbuilt llvm21_lib to updater-llvm21_lib-21.1.8

* Adjust llvm downstream version detection puts.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Use same branch for Updater on Demand if branch is not master.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Use resolver to appropriately build order packages passed to updater.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Add ruby_dagwood.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Update llvm21_dev

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Allow versioning as used in the llvm packages.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Add ruby_dagwood to buildessential.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

---------

Signed-off-by: Satadru Pramanik <satadru@gmail.com>
Co-authored-by: chromebrew-actions[bot] <chromebrew-actions[bot]@users.noreply.github.com>
Co-authored-by: satmandu <satmandu@users.noreply.github.com>
2026-01-25 22:44:54 +00:00

87 lines
3.5 KiB
Ruby

# Adapted from Arch Linux openmp PKGBUILD at:
# https://github.com/archlinux/svntogit-packages/raw/packages/openmp/trunk/PKGBUILD
require 'package'
class Openmp < Package
llvm_build_obj = Package.load_package("#{__dir__}/#{CREW_LLVM_VER}_build.rb")
description 'LLVM OpenMP Runtime Library'
homepage 'https://openmp.llvm.org/'
version llvm_build_obj.version
# When upgrading llvm_build*, be sure to upgrade llvm_lib*, llvm_dev*, libclc, and openmp in tandem.
puts "#{self} version differs from llvm version #{llvm_build_obj.version}".orange if version != llvm_build_obj.version && !ENV['NESTED_CI']
license 'Apache-2.0-with-LLVM-exceptions, UoI-NCSA, BSD, public-domain, rc, Apache-2.0 and MIT'
compatibility 'all'
source_url 'https://github.com/llvm/llvm-project.git'
git_hashtag llvm_build_obj.git_hashtag.to_s
binary_compression 'tar.zst'
binary_sha256({
aarch64: '5fee78b3610ff8f50f398b23286750d2eb5b47bf0cbcd305669c29295102115c',
armv7l: '5fee78b3610ff8f50f398b23286750d2eb5b47bf0cbcd305669c29295102115c',
i686: 'edb2ec8a3e468569c2fc7e1ec72df9ca32ffdfebfdbd451f92782435e8792773',
x86_64: '53b68d04fe232a889093dee0c778ede3e449e63d56423106ed71c294f474e2dd'
})
depends_on 'gcc_lib' # R
depends_on 'glibc' # R
depends_on 'llvm_dev' => :build
depends_on 'python3' # R
no_env_options
def self.preflight
llvm_dev_obj = Package.load_package("#{__dir__}/#{CREW_LLVM_VER}_dev.rb")
abort "Update #{CREW_LLVM_VER}_dev first.".lightred if Gem::Version.new(version.split('-').first) > Gem::Version.new(llvm_dev_obj.version.split('-').first)
end
def self.patch
# Remove rc suffix on final release.
system "sed -i 's,set(LLVM_VERSION_SUFFIX rc),,' llvm/CMakeLists.txt"
# Patch for LLVM 15+ because of https://github.com/llvm/llvm-project/issues/58851
File.write 'llvm_crew_lib_prefix.patch', <<~LLVM_PATCH_EOF
--- a/clang/lib/Driver/ToolChains/Linux.cpp 2022-11-30 15:50:36.777754608 -0500
+++ b/clang/lib/Driver/ToolChains/Linux.cpp 2022-11-30 15:51:57.004417484 -0500
@@ -314,6 +314,7 @@ Linux::Linux(const Driver &D, const llvm
D.getVFS().exists(D.Dir + "/../lib/libc++.so"))
addPathIfExists(D, D.Dir + "/../lib", Paths);
+ addPathIfExists(D, concat(SysRoot, "#{CREW_LIB_PREFIX}"), Paths);
addPathIfExists(D, concat(SysRoot, "/lib"), Paths);
addPathIfExists(D, concat(SysRoot, "/usr/lib"), Paths);
}
LLVM_PATCH_EOF
system 'patch -Np1 -i llvm_crew_lib_prefix.patch'
end
def self.build
@cmake_options = case ARCH
when 'i686', 'x86_64'
CREW_CMAKE_OPTIONS.gsub('-flto=auto', '').sub('-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=TRUE', '')
else
CREW_CMAKE_OPTIONS
end
system "cmake -B builddir -G Ninja openmp \
#{@cmake_options} \
-DCLANG_DEFAULT_LINKER=mold \
-DCMAKE_C_COMPILER=$(which clang) \
-DCMAKE_C_COMPILER_TARGET=#{CREW_TARGET} \
-DCMAKE_CXX_COMPILER=$(which clang++) \
-DCMAKE_CXX_COMPILER_AR=$(which llvm-ar) \
-DCMAKE_CXX_COMPILER_RANLIB=$(which llvm-ranlib) \
-D_CMAKE_TOOLCHAIN_PREFIX=llvm- \
-DLIBOMP_ENABLE_SHARED=ON \
-DLIBOMP_INSTALL_ALIASES=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DOPENMP_LIBDIR_SUFFIX=#{CREW_LIB_SUFFIX} \
-DPYTHON_EXECUTABLE=$(which python3) \
-Wno-dev"
system "#{CREW_NINJA} -C builddir"
end
def self.install
system "DESTDIR=#{CREW_DEST_DIR} #{CREW_NINJA} -C builddir install"
end
end