e1bb919734
Replaced ENV.gcc_4_2 + comments with calls to "fails_with_llvm", to specifically message to the user when a formula is known or suspected to not build with LLVM. If the user specifies "--use-llvm", the message will be displayed, but compilation will be tried anyway. Since using LLVM is now an advanced/hidden feature instead of the default on 10.6, we'll let the user try anyway (and submit patches if things are now working.)
238 lines
9.3 KiB
Ruby
238 lines
9.3 KiB
Ruby
require 'formula'
|
|
|
|
class CurlXZDownloadStrategy < CurlDownloadStrategy
|
|
def stage
|
|
# As far as I can tell, the LZMA format does not have any magic header bits that we could use to
|
|
# identify LZMA archives in the CurlDownloadStrategy, so use this awesome hack
|
|
safe_system "lzma -k --force --stdout --decompress #{@tarball_path} | /usr/bin/tar x"
|
|
|
|
# You could also do this, but it leaves the tar file lying around...
|
|
#safe_system '/usr/local/bin/lzma', '-k', '--force', '--decompress', @tarball_path
|
|
#safe_system '/usr/bin/tar', 'xf', @tarball_path.to_s.gsub( ".lzma", "" )
|
|
chdir
|
|
end
|
|
end
|
|
|
|
class Texmf <Formula
|
|
version '20080822'
|
|
url "ftp://ftp.openbsd.org/pub/OpenBSD/distfiles/texlive-#{version}-texmf.tar.lzma"
|
|
md5 'fa74072e1344e8390eb156bcda61a8b2'
|
|
|
|
def download_strategy
|
|
CurlXZDownloadStrategy
|
|
end
|
|
end
|
|
|
|
class TexLive <Formula
|
|
version '20080816'
|
|
|
|
# OpenBSD mirrors are slower but more reliable
|
|
url "ftp://ftp.openbsd.org/pub/OpenBSD/distfiles/texlive-#{version}-source.tar.lzma"
|
|
homepage 'http://www.tug.org/texlive/'
|
|
md5 '554287c3e458da776edd684506048d45'
|
|
|
|
depends_on 'lzma'
|
|
depends_on 'gd'
|
|
|
|
def download_strategy
|
|
CurlXZDownloadStrategy
|
|
end
|
|
|
|
def patches
|
|
# Steal all the TexLive 2008 OpenBSD patches
|
|
patches = [
|
|
"configure?rev=1.1",
|
|
"libs_configure?rev=1.1",
|
|
"libs_graphite-engine_configure?rev=1.1",
|
|
"libs_icu-xetex_Makefile_in?rev=1.2",
|
|
# Hijacked: we needed to add a CFLAG to the patch, so I merged this and my change below
|
|
#{}"libs_lua51_Makefile",
|
|
"libs_lua51_lcoco_c?rev=1.1",
|
|
"libs_lua51_lcoco_h?rev=1.1",
|
|
"texk_afm2pl_Makefile_in?rev=1.2",
|
|
"texk_bibtex8_Makefile_in?rev=1.2",
|
|
"texk_cjkutils_conv_Makefile_in?rev=1.3",
|
|
"texk_cjkutils_hbf2gf_Makefile_in?rev=1.2",
|
|
"texk_cjkutils_scripts_Makefile_in?rev=1.3",
|
|
"texk_dtl_Makefile_in?rev=1.2",
|
|
"texk_dvidvi_Makefile_in?rev=1.2",
|
|
"texk_dviljk_Makefile_in?rev=1.2",
|
|
"texk_dvipdfm_Makefile_in?rev=1.2",
|
|
"texk_dvipng_configure?rev=1.1",
|
|
"texk_dvipos_Makefile_in?rev=1.2",
|
|
"texk_dvipsk_Makefile_in?rev=1.2",
|
|
"texk_gsftopk_Makefile_in?rev=1.2",
|
|
"texk_kpathsea_Makefile_in?rev=1.2",
|
|
# Replaced with some ruby code below, we need a different approach
|
|
#"texk_kpathsea_texmf_cnf?rev=1.1",
|
|
"texk_lacheck_Makefile_in?rev=1.2",
|
|
"texk_make_man_mk?rev=1.2",
|
|
"texk_makeindexk_Makefile_in?rev=1.2",
|
|
"texk_musixflx_Makefile_in?rev=1.2",
|
|
"texk_ps2pkm_Makefile_in?rev=1.2",
|
|
"texk_seetexk_Makefile_in?rev=1.2",
|
|
"texk_tetex_Makefile_in?rev=1.2",
|
|
"texk_tex4htk_Makefile_in?rev=1.2",
|
|
"texk_texlive_Makefile_in?rev=1.2",
|
|
"texk_texlive_linked_scripts_texdoc_tlu?rev=1.1",
|
|
"texk_ttf2pk_Makefile_in?rev=1.2",
|
|
"texk_web2c_Makefile_in?rev=1.2", # not in OPENBSD_4_6_BASE
|
|
"texk_web2c_alephdir_aleph_mk?rev=1.2",
|
|
"texk_web2c_configure?rev=1.2",
|
|
"texk_web2c_doc_Makefile_in?rev=1.2",
|
|
"texk_web2c_luatexdir_luatex_mk?rev=1.1",
|
|
"texk_web2c_mpware_Makefile_in?rev=1.2",
|
|
"texk_web2c_omegadir_omega_mk?rev=1.2",
|
|
"texk_web2c_omegafonts_Makefile_in?rev=1.2",
|
|
"texk_web2c_otps_Makefile_in?rev=1.2",
|
|
"texk_web2c_pdftexdir_pdftex_mk?rev=1.2",
|
|
"texk_xdvik_Makefile_in?rev=1.2",
|
|
"texk_xdvipdfmx_Makefile_in?rev=1.1",
|
|
"texk_xdvipdfmx_configure?rev=1.1",
|
|
"utils_dialog_Makefile_in?rev=1.3",
|
|
"utils_tpic2pdftex_Makefile_in?rev=1.1"
|
|
].collect! {|middle| "http://www.openbsd.org/cgi-bin/cvsweb/ports/print/texlive/base/patches/patch-#{middle};content-type=text%2Fplain"}
|
|
# Putting DATA in p0 seemed to cause trouble, so we put nonsense in the filenames and put it in p1
|
|
{ :p0 => patches, :p1 => DATA }
|
|
end
|
|
|
|
def install
|
|
# Notes:
|
|
# Several OSX-specific files (texk/web2c/xetexdir/XeTeXFontMgr_Mac.mm and others) can't build in
|
|
# 64 bit mode on OSX, since they use deprecated functions only available when building in 32bit.
|
|
fails_with_llvm
|
|
ENV.m32
|
|
ENV.deparallelize
|
|
|
|
#Some of the makefiles doesn't use CFLAGS during linking, which causes things to break when building as 32bit.
|
|
# Ugly hack to force -m32 always and forever.
|
|
ENV['CC']="gcc-4.2 -m32 -arch i386"
|
|
ENV['CXX']="g++-4.2 -m32 -arch i386"
|
|
# I even had to patch a Makefile since it hardcoded using cc and c++, see below.
|
|
|
|
# Is there a way to get these programmatically?
|
|
# no, but they will always be these directories on OS X --mxcl
|
|
x11_libdir = "/usr/X11/lib/"
|
|
x11_includedir = "/usr/X11/include/"
|
|
|
|
# The build scripts don't create this directory for no apparent reason...
|
|
# It's easier to just do it here than it is to patch the Makefiles
|
|
# Actually, if compilation fails brew thinks that we succeeded because this directory exists. Maybe we should patch the makefiles...
|
|
FileUtils.mkdir_p "#{man}/man5"
|
|
|
|
# Replaces the texk_kpathsea_texmf_cnf OpenBSD patch with our own version
|
|
inreplace "texk/kpathsea/texmf.cnf", "$SELFAUTOPARENT/", "#{prefix}/share/"
|
|
|
|
build_dir='Work'
|
|
|
|
FileUtils.mkdir build_dir
|
|
Dir.chdir build_dir do
|
|
system "../configure", "--prefix=#{prefix}/", "--datadir=#{prefix}/", \
|
|
"--with-xdvi-x-toolkit=xaw", "--disable-threads", "--with-old-mac-fonts", "--without-xindy", \
|
|
"--x-libraries=#{x11_libdir}", "--x-includes=#{x11_includedir}", \
|
|
"--with-freetype2-libdir=#{x11_libdir}", "--with-freetype2-include=#{x11_includedir}", \
|
|
"--with-pnglib-libdir=#{x11_libdir}", "--with-pnglib-include=#{x11_includedir}", \
|
|
"--with-system-ncurses", "--with-system-freetype2", "--with-system-pnglib", \
|
|
"--with-system-zlib", "--with-system-gd", \
|
|
"--disable-multiplatform", "--without-texinfo", "--without-xdvipdfmx", \
|
|
"--without-texi2html", "--without-psutils"
|
|
|
|
system "make world"
|
|
end
|
|
|
|
# Installs texmf, which has necessary support files for tex-live
|
|
Texmf.new.brew{
|
|
# Update a conf file to use the proper directories, replaces OpenBSD patch
|
|
# Yes, this file exists in both tex-live and texmf. With this change they're identical, though.
|
|
inreplace "texmf/web2c/texmf.cnf", "$SELFAUTOPARENT/", "#{prefix}/share/"
|
|
share.install Dir['*']
|
|
}
|
|
|
|
# The texlive makefiles are supposed to do this, I don't know why they don't...
|
|
#We need this ugly path hack because texlinks and fmtutil-sys call other scripts in bin
|
|
system "PATH=$PATH:#{bin} texlinks -f #{share}/texmf/web2c/fmtutil.cnf"
|
|
system "PATH=$PATH:#{bin} fmtutil-sys --all"
|
|
end
|
|
end
|
|
|
|
# OpenBSD patches:
|
|
# http://www.openbsd.org/cgi-bin/cvsweb/ports/print/texlive/
|
|
|
|
# Notes for below:
|
|
# Patch 1: No idea why this declaration is wrong, but we'll go ahead and fix it.
|
|
# Patch 2: Slightly modified patch from OpenBSD. Adding the _XOPEN_SOURCE preprocessor flag in
|
|
# libs/lua51/Makefile undeprecates some things in /usr/include/ucontext.h (Snow Leopard).
|
|
# Patch 3: These are hardcoded and do not respect CFLAGS, so force them to use 32bit mode.
|
|
__END__
|
|
--- nonsense/texk/web2c/xetexdir/XeTeX_ext.h 2009-10-28 02:27:34.000000000 -0700
|
|
+++ nonsense/texk/web2c/xetexdir/XeTeX_ext.h 2009-10-28 02:31:38.000000000 -0700
|
|
@@ -300,7 +300,7 @@
|
|
|
|
#ifdef XETEX_MAC
|
|
/* functions in XeTeX_mac.c */
|
|
- void* loadAATfont(ATSFontRef fontRef, integer scaled_size, const char* cp1);
|
|
+ void* loadAATfont(ATSFontRef fontRef, long scaled_size, const char* cp1);
|
|
void DoAtsuiLayout(void* node, int justify);
|
|
void GetGlyphBBox_AAT(ATSUStyle style, UInt16 gid, GlyphBBox* bbox);
|
|
float GetGlyphWidth_AAT(ATSUStyle style, UInt16 gid);
|
|
$OpenBSD: patch-libs_lua51_Makefile,v 1.2 2008/12/04 22:29:06 steven Exp $
|
|
--- nonsense/libs/lua51/Makefile.orig Mon Mar 24 15:47:15 2008
|
|
+++ nonsense/libs/lua51/Makefile Sun Oct 26 15:30:26 2008
|
|
@@ -8,7 +8,7 @@
|
|
PLAT= none
|
|
|
|
CC= gcc
|
|
-CFLAGS= -g -O2 -Wall $(XCFLAGS) $(MYCFLAGS) $(COCOFLAGS)
|
|
+LOCALCFLAGS= -g -O2 -Wall -D_XOPEN_SOURCE $(MYCFLAGS) $(COCOCFLAGS)
|
|
AR= ar rcu
|
|
RANLIB= ranlib
|
|
RM= rm -f
|
|
@@ -77,12 +77,14 @@ clean:
|
|
$(RM) $(ALL_T) $(ALL_O)
|
|
|
|
depend:
|
|
- @$(CC) $(CFLAGS) -MM l*.c print.c
|
|
+ @$(CC) $(LOCALCFLAGS) $(CFLAGS) $(XCFLAGS) -MM l*.c print.c
|
|
|
|
echo:
|
|
@echo "PLAT = $(PLAT)"
|
|
@echo "CC = $(CC)"
|
|
+ @echo "LOCALCFLAGS = $(LOCALCFLAGS)"
|
|
@echo "CFLAGS = $(CFLAGS)"
|
|
+ @echo "XCFLAGS = $(XCFLAGS)"
|
|
@echo "AR = $(AR)"
|
|
@echo "RANLIB = $(RANLIB)"
|
|
@echo "RM = $(RM)"
|
|
@@ -96,7 +98,7 @@ none:
|
|
@echo "Please choose a platform: $(PLATS)"
|
|
|
|
aix:
|
|
- $(MAKE) a CC="xlc" CFLAGS="-O2 -DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-ldl" MYLDFLAGS="-brtl -bexpall"
|
|
+ $(MAKE) a CC="xlc" LOCALCFLAGS="-O2 -DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-ldl" MYLDFLAGS="-brtl -bexpall"
|
|
|
|
ansi:
|
|
$(MAKE) a MYCFLAGS=-DLUA_ANSI
|
|
@@ -130,6 +132,10 @@ posix:
|
|
|
|
solaris:
|
|
$(MAKE) a MYCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-ldl"
|
|
+
|
|
+.c.o:
|
|
+ $(CC) $(LOCALCFLAGS) $(CFLAGS) $(XCFLAGS) -c $<
|
|
+
|
|
|
|
# list targets that do not create files (but not all makes understand .PHONY)
|
|
.PHONY: all $(PLATS) default o a clean depend echo none
|
|
--- nonsense/texk/xdv2pdf/Makefile.in.orig 2009-10-28 15:18:25.000000000 -0700
|
|
+++ nonsense/texk/xdv2pdf/Makefile.in 2009-10-28 15:18:51.000000000 -0700
|
|
@@ -4,8 +4,8 @@
|
|
kpse_include ../make/common.mk
|
|
kpse_include ../make/programs.mk
|
|
|
|
-CXX = c++
|
|
-OBJC = cc
|
|
+CXX = c++ -m32 -arch i386
|
|
+OBJC = cc -m32 -arch i386
|
|
CXXLD = $(CXX)
|
|
cxx_link_command = $(CXXLD) -o $@ $(LDFLAGS)
|
|
kpathsea_cxx_link = $(LIBTOOL) --mode=link $(cxx_link_command)
|