1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
require 'formula'
class Magit <Formula
url 'http://zagadka.vm.bytemark.co.uk/magit/magit-0.7.tar.gz'
md5 '1ea442bd6f83f7ac82967059754c8c87'
homepage 'http://zagadka.vm.bytemark.co.uk/magit/'
end
class Emacs <Formula
if ARGV.include? "--cocoa"
# tested bazaar revision: 99478
head 'bzr://http://bzr.savannah.gnu.org/r/emacs/trunk'
else
url 'http://ftp.gnu.org/pub/gnu/emacs/emacs-23.1.tar.bz2'
head 'bzr://http://bzr.savannah.gnu.org/r/emacs/trunk'
md5 '17f7f0ba68a0432d58fa69d05a2225be'
end
homepage 'http://www.gnu.org/software/emacs/'
def options
[
["--cocoa", "Build a cocoa version of emacs"],
]
end
def caveats
"Use --cocoa to build a Cocoa binary Emacs.app from HEAD.
To access texinfo documentation, set your INFOPATH to:
#{info}
Emacs recently changed to bazaar, so you may have to delete the
cached git directory before you can update. This should be somewhere like
$HOME/Library/Caches/Homebrew/emacs-HEAD/
"
end
def patches
if ARGV.include? "--cocoa"
"http://dev.boris.com.au/emacs-23.1-CVS-Cocoa-homebrew.patch"
elsif not ARGV.include? "--HEAD"
DATA
end
end
def install
configure_args = [
"--prefix=#{prefix}",
"--disable-debug",
"--disable-dependency-tracking",
"--without-dbus",
"--enable-locallisppath=#{HOMEBREW_PREFIX}/share/emacs/site-lisp",
]
# segfault in --cocoa
ENV.gcc_4_2
if ARGV.include? "--cocoa"
configure_args << "--with-ns" << "--disable-ns-self-contained"
system "./configure", *configure_args
system "make bootstrap"
system "make install"
prefix.install "nextstep/Emacs.app"
else
configure_args << "--without-x"
system "./configure", *configure_args
system "make"
system "make install"
end
Magit.new.brew do
system "./configure", "--prefix=#{prefix}"
system "make install"
end
end
end
__END__
From c9c5cb64cafe47911dfd32c04819543ac9a57baa Mon Sep 17 00:00:00 2001
From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Date: Fri, 28 Aug 2009 22:49:46 +0000
Subject: [PATCH 001/720] (print_load_command_name) [LC_DYLD_INFO]: Add cases
LC_DYLD_INFO and LC_DYLD_INFO_ONLY.
(copy_data_segment): Also copy __program_vars section.
(copy_dyld_info) [LC_DYLD_INFO]: New function.
(dump_it) [LC_DYLD_INFO]: Use it.
---
src/unexmacosx.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/src/unexmacosx.c b/src/unexmacosx.c
index ff6ab01..bb71d8f 100644
--- a/src/unexmacosx.c
+++ b/src/unexmacosx.c
@@ -582,6 +582,14 @@ print_load_command_name (int lc)
printf ("LC_UUID ");
break;
#endif
+#ifdef LC_DYLD_INFO
+ case LC_DYLD_INFO:
+ printf ("LC_DYLD_INFO ");
+ break;
+ case LC_DYLD_INFO_ONLY:
+ printf ("LC_DYLD_INFO_ONLY");
+ break;
+#endif
default:
printf ("unknown ");
}
@@ -819,6 +827,7 @@ copy_data_segment (struct load_command *lc)
|| strncmp (sectp->sectname, "__const", 16) == 0
|| strncmp (sectp->sectname, "__cfstring", 16) == 0
|| strncmp (sectp->sectname, "__gcc_except_tab", 16) == 0
+ || strncmp (sectp->sectname, "__program_vars", 16) == 0
|| strncmp (sectp->sectname, "__objc_", 7) == 0)
{
if (!unexec_copy (sectp->offset, old_file_offset, sectp->size))
@@ -1086,6 +1095,36 @@ copy_twolevelhints (struct load_command *lc, long delta)
curr_header_offset += lc->cmdsize;
}
+#ifdef LC_DYLD_INFO
+/* Copy a LC_DYLD_INFO(_ONLY) load command from the input file to the output
+ file, adjusting the file offset fields. */
+static void
+copy_dyld_info (struct load_command *lc, long delta)
+{
+ struct dyld_info_command *dip = (struct dyld_info_command *) lc;
+
+ if (dip->rebase_off > 0)
+ dip->rebase_off += delta;
+ if (dip->bind_off > 0)
+ dip->bind_off += delta;
+ if (dip->weak_bind_off > 0)
+ dip->weak_bind_off += delta;
+ if (dip->lazy_bind_off > 0)
+ dip->lazy_bind_off += delta;
+ if (dip->export_off > 0)
+ dip->export_off += delta;
+
+ printf ("Writing ");
+ print_load_command_name (lc->cmd);
+ printf (" command\n");
+
+ if (!unexec_write (curr_header_offset, lc, lc->cmdsize))
+ unexec_error ("cannot write dyld info command to header");
+
+ curr_header_offset += lc->cmdsize;
+}
+#endif
+
/* Copy other kinds of load commands from the input file to the output
file, ones that do not require adjustments of file offsets. */
static void
@@ -1152,6 +1191,12 @@ dump_it ()
case LC_TWOLEVEL_HINTS:
copy_twolevelhints (lca[i], linkedit_delta);
break;
+#ifdef LC_DYLD_INFO
+ case LC_DYLD_INFO:
+ case LC_DYLD_INFO_ONLY:
+ copy_dyld_info (lca[i], linkedit_delta);
+ break;
+#endif
default:
copy_other (lca[i]);
break;
--
1.6.4.4
From 27497ca658b5717792c769eed48f036c1dc24b75 Mon Sep 17 00:00:00 2001
From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Date: Fri, 28 Aug 2009 22:49:58 +0000
Subject: [PATCH 001/719] [temacs] Undef HAVE_POSIX_MEMALIGN.
---
src/s/darwin.h | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/src/s/darwin.h b/src/s/darwin.h
index da223e9..40aa583 100644
--- a/src/s/darwin.h
+++ b/src/s/darwin.h
@@ -171,6 +171,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define malloc unexec_malloc
#define realloc unexec_realloc
#define free unexec_free
+/* Don't use posix_memalign because it is not compatible with
+ unexmacosx.c. */
+#undef HAVE_POSIX_MEMALIGN
#endif
/* The ncurses library has been moved out of the System framework in
--
1.6.4.4
|