Bug 791 - make crashes if Makefile uses += operator.
Summary: make crashes if Makefile uses += operator.
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make (show other bugs)
Version: unstable
Hardware: all Linux
: P4 critical
Assignee: Alexey Gladkov
QA Contact:
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-04-07 09:55 MSD by Alexey Voinov
Modified: 2003-08-25 15:18 MSD (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Voinov 2002-04-07 09:55:21 MSD
1. make ломается при использовании некоторых специфи�ных
конструкци . (Пример в 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->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?