require 'package' class Perl < Package description 'Perl 5 is a highly capable, feature-rich programming language with over 29 years of development.' homepage 'https://www.perl.org/' version '5.38.2' license 'GPL-1+ or Artistic' compatibility 'all' source_url "https://www.cpan.org/src/5.0/perl-#{version}.tar.xz" source_sha256 'd91115e90b896520e83d4de6b52f8254ef2b70a8d545ffab33200ea9f1cf29e8' binary_compression 'tar.zst' binary_sha256({ aarch64: 'a2c1ad4b8b0da344fff07a60f6feb58cd95756e19c5b5dbd325d4bf0ae1ea4e8', armv7l: 'a2c1ad4b8b0da344fff07a60f6feb58cd95756e19c5b5dbd325d4bf0ae1ea4e8', i686: 'bab6f8c7bde74661d808e7c5bc5f506d0cfbdac9d40409b86f89b58b3a0ce551', x86_64: '6c376747b4c8a582694cba6cd4b45949e7d8ed492462e38bc0857a38dc3113be' }) depends_on 'gdbm' # R depends_on 'glibc' # R depends_on 'libdb' # R def self.build FileUtils.ln_sf "#{CREW_LIB_PREFIX}/libnsl.so.1", "#{CREW_LIB_PREFIX}/libnsl.so" # Use system zlib and bzip2 # Create shared library # Install manual files into #{CREW_PREFIX}/share/man/man* even if groff is not installed. system "AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm \ BUILD_ZLIB=False BUILD_BZIP2=0 \ mold -run ./Configure \ -de \ -Dprefix=#{CREW_PREFIX} \ -Dvendorprefix=#{CREW_PREFIX} \ -Dprivlib=#{CREW_PREFIX}/share/perl5/core_perl \ -Darchlib=#{CREW_LIB_PREFIX}/perl5/#{version}/core_perl \ -Dsitelib=#{CREW_PREFIX}/share/perl5/site_perl \ -Dsitearch=#{CREW_LIB_PREFIX}/perl5/#{version}/site_perl \ -Dvendorlib=#{CREW_PREFIX}/share/perl5/vendor_perl \ -Dvendorarch=#{CREW_LIB_PREFIX}/perl5/#{version}/vendor_perl \ -Dcc=#{CREW_TGT}-gcc \ -Doptimize='#{CREW_COMMON_FLAGS}' \ -Dlldlflags='-shared #{CREW_LDFLAGS}' -Dldflags='#{CREW_LDFLAGS}' \ -Dusethreads \ -Dinstallusrbinperl=n \ -Duseshrplib -Dman1dir=#{CREW_MAN_PREFIX}/man1 -Dman3dir=#{CREW_MAN_PREFIX}/man3" system 'make' end def self.install system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' # Make libperl symlinks into standard locations libperl_so = "#{CREW_LIB_PREFIX}/perl5/#{version.split('-')[0]}/core_perl/CORE/libperl.so" FileUtils.ln_sf libperl_so, "#{CREW_DEST_LIB_PREFIX}/libperl.so.#{version}" # e.g., libperl.so.5.34.1 FileUtils.ln_sf libperl_so, "#{CREW_DEST_LIB_PREFIX}/libperl.so.#{version.sub(/\.\d$/, '')}" # e.g., libperl.so.5.34 FileUtils.ln_sf libperl_so, "#{CREW_DEST_LIB_PREFIX}/libperl.so#{version.sub(/\.\d\.\d$/, '')}" # e.g., libperl.so.5 FileUtils.ln_sf libperl_so, "#{CREW_DEST_LIB_PREFIX}/libperl.so" # e.g., libperl.so # Consider adding this symlink to the glibc package FileUtils.ln_sf "#{CREW_LIB_PREFIX}/libnsl.so.1", "#{CREW_DEST_LIB_PREFIX}/libnsl.so" # Avoid File conflict with tcl, ocaml FileUtils.mv "#{CREW_DEST_MAN_PREFIX}/man3/Thread.3", "#{CREW_DEST_MAN_PREFIX}/man3/Thread.3perl" end def self.check system "make test -j #{CREW_NPROC} || true" end end