Bug 791

Summary: make crashes if Makefile uses += operator.
Product: Sisyphus Reporter: Alexey Voinov <voins>
Component: makeAssignee: Alexey Gladkov <legion>
Status: CLOSED FIXED QA Contact:
Severity: critical    
Priority: P4 CC: ldv, legion
Version: unstable   
Hardware: all   
OS: Linux   

Description Alexey Voinov 2002-04-07 09:55:21 MSD
1. make ломается при использовании некоторых специфи&amp;#65533;ных
конструкци . (Пример в Steps To Reproduce взят из реального 
Makefile, и свед#н к минимуму для демонстрации ошибки)
2. Даже если бы он не ломался, результат, которы  он успевает
выдать, неправильны .

---
1. В Makefile:
CFLAGS := ccc

all: CFLAGS += aaa
all:
	echo $(CFLAGS)

2. Запуск 
$ make
echo ccc aaa
ccc aaa
Здесь вс# в порядке.

3. Запуск
$ make CFLAGS=bbb
echo bbb bbb
make: expand.c:489: allocated_variable_append: Assertion `current_variable_set_list-&gt;next != 0\' failed.
zsh: 2857 abort      make CFLAGS=bbb

Здесь должен был написать echo bbb aaa и не сломаться.
---

Comment 1 Dmitry V. Levin 2002-04-10 13:41:39 MSD
Replace
all: CFLAGS += aaa
construction with simple
CFLAGS += aaa
Comment 2 Dmitry V. Levin 2002-04-10 13:41:39 MSD
Replace
all: CFLAGS += aaa
construction with simple
CFLAGS += aaa
Comment 3 Alexey Voinov 2002-04-10 20:30:02 MSD
Решение не верное. Во-первых падать не должно в любом случае.
Во-вторых конструкция абсолюьно правильна и законна. Она описана
в info make/Using Variables/Target-specific.

Для наглядности приведу чуть более полный пример:

CFLAGS := ccc

all: linux
  echo $(CFLAGS)

linux: CFLAGS += bbb

linux:
  echo yyy

msdos: CFLAGS += ccc

msdos:
  echo zzz
Comment 4 Alexey Voinov 2002-04-10 20:30:02 MSD
Решение не верное. Во-первых падать не должно в любом случае.
Во-вторых конструкция абсолюьно правильна и законна. Она описана
в info make/Using Variables/Target-specific.

Для наглядности приведу чуть более полный пример:

CFLAGS := ccc

all: linux
  echo $(CFLAGS)

linux: CFLAGS += bbb

linux:
  echo yyy

msdos: CFLAGS += ccc

msdos:
  echo zzz
Comment 5 Dmitry V. Levin 2002-09-16 21:19:00 MSD
Fixed in make-3.79.1-ipl6mdk
Comment 6 Dmitry V. Levin 2002-09-16 21:19:00 MSD
Fixed in make-3.79.1-ipl6mdk
Comment 7 Dmitry V. Levin 2002-09-29 01:33:12 MSD
Why not close resolved problem?
Comment 8 Dmitry V. Levin 2002-09-29 01:33:12 MSD
Why not close resolved problem?