* [devel] help me! python.req! @ 2007-11-16 21:29 Anton Farygin 2007-11-16 21:46 ` Anton Farygin ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Anton Farygin @ 2007-11-16 21:29 UTC (permalink / raw) To: ALT Devel discussion list Люди добрые, поможите кто чем может... что делать с этим MemoryError. x86_64, hasher, branch-4.0 Error while parsing "/usr/src/tmp/mythplugins-buildroot/usr/share/mythtv/mythvideo/scripts/fetch_poster.py" Traceback (most recent call last): File "/usr/lib/rpm/python.req.py", line 133, in ? lis = parser.suite(open(src).read().replace("\r\n","\n")).tolist(line_info=1) MemoryError error: /bin/sh failed error: Failed to find Requires Rgds, Rider ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] help me! python.req! 2007-11-16 21:29 [devel] help me! python.req! Anton Farygin @ 2007-11-16 21:46 ` Anton Farygin 2007-11-16 22:04 ` Alexey Tourbin 2007-11-17 5:01 ` [devel] python encodings Alexey Tourbin 2 siblings, 0 replies; 8+ messages in thread From: Anton Farygin @ 2007-11-16 21:46 UTC (permalink / raw) To: ALT Linux Team development discussions Anton Farygin пишет: > Люди добрые, поможите кто чем может... что делать с этим MemoryError. > > x86_64, hasher, branch-4.0 > > Error while parsing > "/usr/src/tmp/mythplugins-buildroot/usr/share/mythtv/mythvideo/scripts/fetch_poster.py" > Traceback (most recent call last): > File "/usr/lib/rpm/python.req.py", line 133, in ? > lis = > parser.suite(open(src).read().replace("\r\n","\n")).tolist(line_info=1) > MemoryError > error: /bin/sh failed > error: Failed to find Requires Воспроизводится только в hasher. На той же машине python.req.py отрабатывает без проблем в хост-системе. Может быть это поможет: open("fetch_poster.py", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0755, st_size=7266, ...}) = 0 fstat(3, {st_mode=S_IFREG|0755, st_size=7266, ...}) = 0 lseek(3, 0, SEEK_CUR) = 0 fstat(3, {st_mode=S_IFREG|0755, st_size=7266, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaaabdd6000 lseek(3, 0, SEEK_CUR) = 0 read(3, "#!/usr/bin/python\n# -*- coding: "..., 4096) = 4096 read(3, "len(links) > 0:\n\t\t\t\tfor link in "..., 4096) = 3170 read(3, "", 4096) = 0 close(3) = 0 munmap(0x2aaaabdd6000, 4096) = 0 write(2, "Error while parsing \"fetch_poste"..., 37Error while parsing "fetch_poster.py") = 37 write(2, "\n", 1 ) = 1 write(2, "Traceback (most recent call last"..., 35Traceback (most recent call last): ) = 35 open("/usr/lib/rpm/python.req.py", O_RDONLY) = 3 write(2, " File \"/usr/lib/rpm/python.req."..., 52 File "/usr/lib/rpm/python.req.py", line 133, in ? ) = 52 fstat(3, {st_mode=S_IFREG|0755, st_size=6124, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aaaabdd6000 read(3, "#! /usr/bin/env python\n\nfrom __f"..., 4096) = 4096 read(3, ".splitext(os.path.basename(src))"..., 4096) = 2028 write(2, " ", 4 ) = 4 write(2, "lis = parser.suite(open(src).rea"..., 78lis = parser.suite(open(src).read().replace("\r\n","\n")).tolist(line_info=1) ) = 78 close(3) = 0 munmap(0x2aaaabdd6000, 4096) = 0 write(2, "MemoryError", 11MemoryError) = 11 write(2, "\n", 1 ) = 1 rt_sigaction(SIGINT, {SIG_DFL}, {0x2aaaaad7a630, [], SA_RESTORER, 0x2aaaab01e400}, 8) = 0 futex(0x63ca60, FUTEX_WAKE, 1) = 0 futex(0x6012a0, FUTEX_WAKE, 1) = 0 futex(0x6012a0, FUTEX_WAKE, 1) = 0 futex(0x6012a0, FUTEX_WAKE, 1) = 0 exit_group(1) = ? Process 31503 detached ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] help me! python.req! 2007-11-16 21:29 [devel] help me! python.req! Anton Farygin 2007-11-16 21:46 ` Anton Farygin @ 2007-11-16 22:04 ` Alexey Tourbin 2007-11-16 22:04 ` Anton Farygin 2007-11-17 5:01 ` [devel] python encodings Alexey Tourbin 2 siblings, 1 reply; 8+ messages in thread From: Alexey Tourbin @ 2007-11-16 22:04 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 624 bytes --] On Sat, Nov 17, 2007 at 12:29:59AM +0300, Anton Farygin wrote: > Люди добрые, поможите кто чем может... что делать с этим MemoryError. > > x86_64, hasher, branch-4.0 > > Error while parsing > "/usr/src/tmp/mythplugins-buildroot/usr/share/mythtv/mythvideo/scripts/fetch_poster.py" > Traceback (most recent call last): > File "/usr/lib/rpm/python.req.py", line 133, in ? > lis = > parser.suite(open(src).read().replace("\r\n","\n")).tolist(line_info=1) > MemoryError > error: /bin/sh failed > error: Failed to find Requires Workaround -- вручную добавить python-modules-encodings в BuildRequires. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] help me! python.req! 2007-11-16 22:04 ` Alexey Tourbin @ 2007-11-16 22:04 ` Anton Farygin 0 siblings, 0 replies; 8+ messages in thread From: Anton Farygin @ 2007-11-16 22:04 UTC (permalink / raw) To: ALT Devel discussion list Alexey Tourbin пишет: > On Sat, Nov 17, 2007 at 12:29:59AM +0300, Anton Farygin wrote: >> Люди добрые, поможите кто чем может... что делать с этим MemoryError. >> >> x86_64, hasher, branch-4.0 >> >> Error while parsing >> "/usr/src/tmp/mythplugins-buildroot/usr/share/mythtv/mythvideo/scripts/fetch_poster.py" >> Traceback (most recent call last): >> File "/usr/lib/rpm/python.req.py", line 133, in ? >> lis = >> parser.suite(open(src).read().replace("\r\n","\n")).tolist(line_info=1) >> MemoryError >> error: /bin/sh failed >> error: Failed to find Requires > > Workaround -- вручную добавить python-modules-encodings в BuildRequires. Спасибо, сейчас сделаю! ^ permalink raw reply [flat|nested] 8+ messages in thread
* [devel] python encodings 2007-11-16 21:29 [devel] help me! python.req! Anton Farygin 2007-11-16 21:46 ` Anton Farygin 2007-11-16 22:04 ` Alexey Tourbin @ 2007-11-17 5:01 ` Alexey Tourbin 2007-11-17 7:38 ` Anton Farygin 2 siblings, 1 reply; 8+ messages in thread From: Alexey Tourbin @ 2007-11-17 5:01 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 980 bytes --] On Sat, Nov 17, 2007 at 12:29:59AM +0300, Anton Farygin wrote: > Люди добрые, поможите кто чем может... что делать с этим MemoryError. > > x86_64, hasher, branch-4.0 > > Error while parsing > "/usr/src/tmp/mythplugins-buildroot/usr/share/mythtv/mythvideo/scripts/fetch_poster.py" > Traceback (most recent call last): > File "/usr/lib/rpm/python.req.py", line 133, in ? > lis = > parser.suite(open(src).read().replace("\r\n","\n")).tolist(line_info=1) > MemoryError > error: /bin/sh failed > error: Failed to find Requires http://google.com/codesearch?q=file%3afetch_poster.py Там написано: # -*- coding: utf8 -*- это является нестандартным обозначением кодировки, лучше писать # -*- coding: utf-8 -*- тогда не потребуется разрешения алиаса через python-modules-encodings. Думаю, захачить на эту тему python-base или нет. То есть чтобы он понимал побольше настандартных алиасов для стандартных кодировок, без заглядывания в encodings. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] python encodings 2007-11-17 5:01 ` [devel] python encodings Alexey Tourbin @ 2007-11-17 7:38 ` Anton Farygin 2007-11-18 0:41 ` Alexey Tourbin 0 siblings, 1 reply; 8+ messages in thread From: Anton Farygin @ 2007-11-17 7:38 UTC (permalink / raw) To: ALT Devel discussion list Alexey Tourbin пишет: > On Sat, Nov 17, 2007 at 12:29:59AM +0300, Anton Farygin wrote: >> Люди добрые, поможите кто чем может... что делать с этим MemoryError. >> >> x86_64, hasher, branch-4.0 >> >> Error while parsing >> "/usr/src/tmp/mythplugins-buildroot/usr/share/mythtv/mythvideo/scripts/fetch_poster.py" >> Traceback (most recent call last): >> File "/usr/lib/rpm/python.req.py", line 133, in ? >> lis = >> parser.suite(open(src).read().replace("\r\n","\n")).tolist(line_info=1) >> MemoryError >> error: /bin/sh failed >> error: Failed to find Requires > > http://google.com/codesearch?q=file%3afetch_poster.py > > Там написано: > # -*- coding: utf8 -*- > > это является нестандартным обозначением кодировки, лучше писать > # -*- coding: utf-8 -*- > > тогда не потребуется разрешения алиаса через python-modules-encodings. Мне кажется, что достаточно было бы вывести вменяемую диагностику. По крайней мере в моём случае. > > Думаю, захачить на эту тему python-base или нет. То есть чтобы он > понимал побольше настандартных алиасов для стандартных кодировок, > без заглядывания в encodings. Если нестантартные алиасы являются стандартом де-факто (т.е. - значительно распространены), то видимо стоит хачить питон. В обратном случаае - выводить вменяемую диагностику и патчить приложения. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] python encodings 2007-11-17 7:38 ` Anton Farygin @ 2007-11-18 0:41 ` Alexey Tourbin 2007-11-18 1:52 ` Alexey Tourbin 0 siblings, 1 reply; 8+ messages in thread From: Alexey Tourbin @ 2007-11-18 0:41 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 4413 bytes --] On Sat, Nov 17, 2007 at 10:38:27AM +0300, Anton Farygin wrote: > Мне кажется, что достаточно было бы вывести вменяемую диагностику. По > крайней мере в моём случае. Я сделал вменяемую диагностику, насколько это возможно. $ hsh --init .. rpm-build-python-0.32-alt1 ... $ hsh-shell $$ cd $$ echo '# coding: utf8' >test.py $$ /usr/lib/rpm/python.req test.py python.req: test.py: non-standard encoding: utf8 python2.4(encodings) python.req: ERROR: test.py: python.req: maybe you need python-modules-encodings Traceback (most recent call last): File "/usr/lib/rpm/python.req.py", line 178, in ? import encodings ImportError: No module named encodings $$ Вообще-то MemoryError в данном случае -- это питоновский баг http://bugs.python.org/issue979739 > > Думаю, захачить на эту тему python-base или нет. То есть чтобы он > > понимал побольше настандартных алиасов для стандартных кодировок, > > без заглядывания в encodings. > > Если нестантартные алиасы являются стандартом де-факто (т.е. - > значительно распространены), то видимо стоит хачить питон. В обратном > случаае - выводить вменяемую диагностику и патчить приложения. Посмотрим, насколько они распространены. Parser/tokenizer.c: 183 static char * 184 get_normal_name(char *s) /* for utf-8 and latin-1 */ 185 { 186 char buf[13]; 187 int i; 188 for (i = 0; i < 12; i++) { 189 int c = s[i]; 190 if (c == '\0') break; 191 else if (c == '_') buf[i] = '-'; 192 else buf[i] = tolower(c); 193 } 194 buf[i] = '\0'; 195 if (i > 3) { /* at least 4 characters */ 196 const char *p = NULL; 197 switch (buf[0]) { 198 case 'u': 199 if (strncmp(buf, "utf-8", 5) == 0) 200 p = buf + 5; 201 else if (strncmp(buf, "utf8", 4) == 0) 202 p = buf + 4; 203 if (p && (*p == '\0' || *p == '-')) 204 return "utf-8"; 205 break; 206 case 'i': 207 if (strncmp(buf, "utf-8") == 0) 208 p = buf + 5; 209 210 211 212 if (strcmp(buf, "utf-8") == 0 || 213 strncmp(buf, "utf-8-", 6) == 0) return "utf-8"; 214 else if (strcmp(buf, "latin-1") == 0 || 215 strcmp(buf, "iso-8859-1") == 0 || 216 strcmp(buf, "iso-latin-1") == 0 || 217 strncmp(buf, "latin-1-", 8) == 0 || 218 strncmp(buf, "iso-8859-1-", 11) == 0 || 219 strncmp(buf, "iso-latin-1-", 12) == 0) return "iso-8859-1"; 220 else return s;gg 221 } То есть у питона есть две стандартные кодировки, для которых почти ничего не нужно -- utf-8 и iso-8859-1. Но в модуле encodings определяются дополнительные алиасы, в том числе для стандартных кодировок. Lib/encodings/aliases.py: 395 # latin_1 codec 396 '8859' : 'latin_1', 397 'cp819' : 'latin_1', 398 'csisolatin1' : 'latin_1', 399 'ibm819' : 'latin_1', 400 'iso8859' : 'latin_1', 401 'iso_8859_1' : 'latin_1', 402 'iso_8859_1_1987' : 'latin_1', 403 'iso_ir_100' : 'latin_1', 404 'l1' : 'latin_1', 405 'latin' : 'latin_1', 406 'latin1' : 'latin_1', ... 486 # utf_8 codec 487 'u8' : 'utf_8', 488 'utf' : 'utf_8', 489 'utf8' : 'utf_8', 490 'utf8_ucs2' : 'utf_8', 491 'utf8_ucs4' : 'utf_8', Есть искушение внести некоторые из этих алисов в Parser/tokenizer.c, чтобы уменьшить число падений при отсутствии encodings/aliases.py. Посмотрим, что будет по результатам пересборки с новым rpm-build-python. Потому что теперь в python.req.py будет диагностика "non-standard encoding:", которая мимикрирует проверку в Parser/tokenizer.c. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [devel] python encodings 2007-11-18 0:41 ` Alexey Tourbin @ 2007-11-18 1:52 ` Alexey Tourbin 0 siblings, 0 replies; 8+ messages in thread From: Alexey Tourbin @ 2007-11-18 1:52 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 4071 bytes --] On Sun, Nov 18, 2007 at 03:41:13AM +0300, Alexey Tourbin wrote: > $ hsh-shell > $$ cd > $$ echo '# coding: utf8' >test.py > $$ /usr/lib/rpm/python.req test.py > python.req: test.py: non-standard encoding: utf8 > python2.4(encodings) > python.req: ERROR: test.py: > python.req: maybe you need python-modules-encodings > Traceback (most recent call last): > File "/usr/lib/rpm/python.req.py", line 178, in ? > import encodings > ImportError: No module named encodings > $$ > > Вообще-то MemoryError в данном случае -- это питоновский баг > http://bugs.python.org/issue979739 Здесь на самом деле нету MemoryError, потому что здесь есть ошибочка в повторном выбросе исключения. Я только что это починил и заодно сделал более точное определение модуля кодировки, хотя это вряд ли реально где-нибудь потребуется. Впрочем, посмотрим. commit 683c7b2a82e80aeacf1ca1dcc7bc76470f58483a Author: Alexey Tourbin <at@altlinux> Date: Sun Nov 18 04:45:01 2007 +0300 python.req.py: implemented search for particular encodings module $ cat test2.py # coding: cp1251 $ ./rpm-build-python/python.req.py test2.py python.req: test2.py: non-standard encoding: cp1251 python.req: test2.py: encoding=cp1251 module=encodings.cp1251 python2.4(encodings.cp1251) $ diff --git a/rpm-build-python/python.req.py b/rpm-build-python/python.req.py index 53b3886..52b7e0c 100755 --- a/rpm-build-python/python.req.py +++ b/rpm-build-python/python.req.py @@ -150,33 +150,46 @@ else : return 'iso-8859-1' return enc - def need_encoding(line): + missing_encodings = None + def get_encoding_module(enc) : + mod = 'encodings' + try : + from encodings import search_function + except : + missing_encodings = True + return mod + try : + mod = search_function(enc)[1].im_class.__module__ + print >> sys.stderr, "python.req: %s: encoding=%s module=%s" % (src,enc,mod) + except : + pass + return mod + + def need_encoding_module(line): enc = get_raw_encoding(line) if enc : enc = get_enc_normal_name(enc) if enc not in ['utf-8','iso-8859-1'] : print >>sys.stderr, "python.req: %s: non-standard encoding: %s" % (src,enc) - return enc + mod = get_encoding_module(enc) + return mod for src in files : ext = os.path.splitext(basename(src))[1] if ext not in ['.so','.pyc','.pyo','.pth'] : lines = [ line.rstrip().replace('\r','') for line in open(src).readlines() ] - enc = None + encmod = None if len(lines) > 0 : - enc = need_encoding(lines[0]) - if not enc and len(lines) > 1 : - enc = need_encoding(lines[1]) - if enc : - print "%s(%s)" % (prefix,'encodings') + encmod = need_encoding_module(lines[0]) + if not encmod and len(lines) > 1 : + encmod = need_encoding_module(lines[1]) + if encmod : + print "%s(%s)" % (prefix,encmod) try : lis = parser.suite('\n'.join(lines)+'\n').tolist(line_info=1) except StandardError,msg : print >> sys.stderr, 'python.req: ERROR: %s: %s' % (src,msg) - if enc : - try : - import encodings - except : + if encmod and missing_encodings : print >> sys.stderr, "python.req: maybe you need python-modules-encodings" raise for item in match(lis) : [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2007-11-18 1:52 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-11-16 21:29 [devel] help me! python.req! Anton Farygin 2007-11-16 21:46 ` Anton Farygin 2007-11-16 22:04 ` Alexey Tourbin 2007-11-16 22:04 ` Anton Farygin 2007-11-17 5:01 ` [devel] python encodings Alexey Tourbin 2007-11-17 7:38 ` Anton Farygin 2007-11-18 0:41 ` Alexey Tourbin 2007-11-18 1:52 ` Alexey Tourbin
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git