Files
chromebrew/packages/opam.rb
Maximilian Downey Twiss f6b6cab229 Rename autotools constants to fall in line with the rest of crew (#10442)
* Rename CREW_OPTIONS to CREW_CONFIGURE_OPTIONS

* Rename build_extras and install_extras to configure_build_extras and configure_install_extras
2024-09-09 18:21:58 -05:00

74 lines
2.2 KiB
Ruby

# Adapted from Arch Linux opam PKGBUILD at:
# https://github.com/archlinux/svntogit-community/raw/packages/opam/trunk/PKGBUILD
require 'package'
class Opam < Package
description 'OCaml package manager'
homepage 'https://opam.ocaml.org/'
version '2.1.4'
license 'LGPL-2.1-with-linking-exception'
compatibility 'all'
source_url 'https://github.com/ocaml/opam.git'
git_hashtag version
binary_compression 'tar.zst'
binary_sha256({
aarch64: '65aea64207802365d889763baffa5d80eb221ba29f4b467b68fc4668e9104e66',
armv7l: '65aea64207802365d889763baffa5d80eb221ba29f4b467b68fc4668e9104e66',
i686: '9a840b8be61c55699da697cba15794c1a7164ddc70546c3dc576bc3f1f1348bd',
x86_64: '194da91d889edbeeb90b80697fc0c57776f9d1b600e6be2ae0326cae8bc29663'
})
depends_on 'bubblewrap' # L
depends_on 'gcc_lib' # R
depends_on 'glibc' # R
depends_on 'ocaml' # R
depends_on 'rsync' => :build
@OPAMROOT = "#{CREW_PREFIX}/share/opam"
def self.build
system "./configure #{CREW_CONFIGURE_OPTIONS}"
system "make lib-ext all -j1 \
OCAMLC='ocamlc -unsafe-string' \
OCAMLOPT='ocamlopt -unsafe-string'"
File.write 'opam.sh', <<~OPAMEOF
export OPAMROOT=#{@OPAMROOT}
eval $(opam env --root=#{@OPAMROOT} --switch=default)
test -r #{@OPAMROOT}/opam-init/init.sh && . #{@OPAMROOT}/opam-init/init.sh &> /dev/null || true
OPAMEOF
end
def self.install
system "make DESTDIR=#{CREW_DEST_DIR} install"
FileUtils.mkdir_p %W[#{CREW_DEST_PREFIX}/etc/bash.d]
FileUtils.install 'opam.sh', "#{CREW_DEST_PREFIX}/etc/bash.d/opam", mode: 0o644
end
def self.postinstall
# Segfaults in container, works on hardware.
return if CREW_IN_CONTAINER
system "opam init --root=#{@OPAMROOT} -y \
&& eval $(opam env --root=#{@OPAMROOT} --switch=default) \
&& opam option --global depext=false --root=#{@OPAMROOT} -y"
end
def self.postremove
return unless Dir.exist? @OPAMROOT
puts
print "Would you like to remove #{@OPAMROOT}? [y/N] "
response = $stdin.gets.chomp.downcase
case response
when 'y', 'yes'
FileUtils.rm_rf @OPAMROOT
puts "#{@OPAMROOT} removed.".lightred
else
puts "#{@OPAMROOT} saved.".lightgreen
end
puts
end
end