Mercurial > vim
annotate src/os_vms_mms.c @ 34067:dbe616160092 v9.1.0003
patch 9.1.0003: Cannot build against Ruby 33 dynamically
Commit: https://github.com/vim/vim/commit/443657b32becb2318ae40e30a849bbe5cc1a153c
Author: Isao Sato <svardew@gmail.com>
Date: Wed Jan 3 19:31:05 2024 +0100
patch 9.1.0003: Cannot build against Ruby 33 dynamically
Problem: Cannot build against Ruby 33 dynamically
Solution: Ruby 33 removed transient heap, so do not use
rb_ary_transient anymore, NoMethodError format changed,
so update test for expected error message
(Isao Sato)
- ruby-3.3 removed transient heap for ruby/dyn
when +ruby/dyn with ruby-3.3 do command :ruby, E448 occur.
ruby-3.3 has no transient heap anymore, so disable rb_ary_transient etc.
$ LC_ALL=C VIMRUNTIME=runtime ./src/vim -u NONE -c 'ruby puts RUBY_VERSION'
"=> Error detected while processing command line:
"=> E448: Could not load library function rb_ary_detransient
"=> E266: Sorry, this command is disabled, the Ruby library could not be
loaded.
- ruby-3.3 changed NoMethodError format:
$ rvm 3.2.2, 3.3.0-rc1 do ruby -e 'begin; nil.name; rescue => e; puts "%s : %s"%[RUBY_VERSION, e.message]; end '
=> 3.2.2 : undefined method `name' for nil:NilClass
=> 3.3.0 : undefined method `name' for nil
so loose pattern in Test_ruby_Vim_buffer_get()
closes: #13741
Signed-off-by: Isao Sato <svardew@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 03 Jan 2024 20:00:04 +0100 |
parents | 2463194c8cdd |
children |
rev | line source |
---|---|
7 | 1 #include <stdio.h> |
2 #include <stdlib.h> | |
3 #include <string.h> | |
4 #include <unixio.h> | |
5 #include "vim.h" | |
6 int main(int argc, char *argv[]) | |
7 { | |
8 FILE *fpi, *fpo; | |
9 char cmd[132], buf[BUFSIZ], *argp, *error_file, target[132], *mms; | |
10 int err = 0, err_line = 0; | |
11 | |
12 mms = "mms"; | |
13 argc--; | |
14 argv++; | |
15 while (argc-- > 0) | |
16 { | |
17 argp = *argv++; | |
18 if (*argp == '-') | |
19 { | |
20 switch (*++argp) | |
21 { | |
22 case 'm': | |
23 mms = ++argp; | |
24 break; | |
25 case 'e': | |
26 if (!*(error_file = ++argp)) | |
27 { | |
28 error_file = *argv++; | |
29 argc--; | |
30 } | |
31 break; | |
32 default: | |
33 break; | |
34 } | |
35 } | |
36 else | |
37 { | |
38 if (*target) | |
39 strcat(target, " "); | |
40 strcat(target, argp); | |
41 } | |
42 } | |
273 | 43 vim_snprintf(cmd, sizeof(cmd), "%s/output=tmp:errors.vim_tmp %s", |
44 mms, target); | |
7 | 45 system(cmd); |
46 fpi = fopen("tmp:errors.vim_tmp", "r"); | |
47 fpo = fopen(error_file, "w"); | |
48 while (fgets(buf, BUFSIZ, fpi)) | |
49 { | |
50 if (!memcmp(buf, "%CC-", 4)) | |
51 { | |
52 err_line++; | |
53 buf[strlen(buf)-1] = '\0'; | |
54 err++; | |
55 } | |
56 else | |
57 { | |
58 if (err_line) | |
59 { | |
60 if (strstr(buf, _("At line"))) | |
61 { | |
62 err_line = 0; | |
63 fprintf(fpo, "@"); | |
64 } | |
65 else | |
66 buf[strlen(buf)-1] = '\0'; | |
67 } | |
68 } | |
69 fprintf(fpo, "%s", buf); | |
70 } | |
71 fclose(fpi); | |
72 fclose(fpo); | |
73 while (!delete("tmp:errors.vim_tmp")) | |
74 /*nop*/; | |
75 exit(err ? 44 : 1); | |
76 return(0); | |
77 } |