forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.HUSKY

Ответ
 
Опции темы Опции просмотра
  #11  
Старый 11.10.2021, 11:22
Zhenja Kaliuta
Guest
 
Сообщений: n/a
По умолчанию Re: Новые мейкфайлы

Zhenja Kaliuta написал(а) к Michael Dukelsky в Oct 21 10:10:54 по местному времени:

Нi, Michael!

On Mon, 11 Oct 2021 08:59:02 +0300 Michael Dukelsky writes:

MD> Привет, Zhenja!
MD> 11 October 2021 01:17, Zhenja Kaliuta послал(а) письмо к Michael Dukelsky:

ZK>> А в чём тайный смысл патча
ZK>> quote names in PROGRAMS; bug report by Dmitriy Smirnov 2:5010/352?
ZK>> Для make ' -- просто часть строчки, приходится в PROGRAMS писать
ZK>> 'hpt'.

MD> Никакой тайны нет. Функция $(findstring hpt,$(PROGRAMS)) срабатывает
MD> не только на hpt, но и на hptlink, hptsqfix. Сначала я для
MD> различения

ну значит использовать filter:

% cat Makefile
P1 = hpt hptsuffix
P2 = hptsuffix

all:
@echo "With '$(filter hpt,$(P1))'"
@echo "Without '$(filter hpt,$(P2))'"

% make
With 'hpt'
Without ''


MD> поставил пробел после hpt, но Дмитрий указал мне на возникающую при
MD> этом ошибку, когда в PROGRAMS есть только hpt и поэтому пробела
MD> после hpt нет. Собственно, достаточно было бы поставить один
MD> апостроф после hpt, но я побоялся, что это может привести к
MD> путанице и ошибкам, поэтому поставил апострофы везде.

MD> И всё это надо было написать в сообщении коммита?

Да, именно так, именно всё.


--- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
Ответить с цитированием
  #12  
Старый 11.10.2021, 11:42
Michael Dukelsky
Guest
 
Сообщений: n/a
По умолчанию Новые мейкфайлы

Michael Dukelsky написал(а) к Zhenja Kaliuta в Oct 21 10:31:10 по местному времени:

Привет, Zhenja!

11 October 2021 10:10, Zhenja Kaliuta послал(а) письмо к Michael Dukelsky:

ZK>>> А в чём тайный смысл патча
ZK>>> quote names in PROGRAMS; bug report by Dmitriy Smirnov
ZK>>> 2:5010/352? Для make ' -- просто часть строчки, приходится в
ZK>>> PROGRAMS писать 'hpt'.

MD>> Никакой тайны нет. Функция $(findstring hpt,$(PROGRAMS))
MD>> срабатывает не только на hpt, но и на hptlink, hptsqfix. Сначала
MD>> я для различения

ZK> ну значит использовать filter:

Можно было использовать filter-out, я выбрал другое решение.

Желаю успехов, Zhenja!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20180707
Ответить с цитированием
  #13  
Старый 11.10.2021, 12:02
Zhenja Kaliuta
Guest
 
Сообщений: n/a
По умолчанию Re: Новые мейкфайлы

Zhenja Kaliuta написал(а) к Michael Dukelsky в Oct 21 10:48:05 по местному времени:

Нi, Michael!

On Mon, 11 Oct 2021 09:31:10 +0300 Michael Dukelsky writes:

ZK>>>> А в чём тайный смысл патча
ZK>>>> quote names in PROGRAMS; bug report by Dmitriy Smirnov
ZK>>>> 2:5010/352? Для make ' -- просто часть строчки, приходится в
ZK>>>> PROGRAMS писать 'hpt'.

MD>>> Никакой тайны нет. Функция $(findstring hpt,$(PROGRAMS))
MD>>> срабатывает не только на hpt, но и на hptlink, hptsqfix. Сначала
MD>>> я для различения

ZK>> ну значит использовать filter:

MD> Можно было использовать filter-out, я выбрал другое решение.

Очевидно, ты как ментейнер можешь выбирать, что больше нравится, но имей
ввиду, что решение с '' в упомянутом патче, мягко говоря, плохое:

1) не идиоматично для make оформлен список
2) misleading -- создаётся ложное ощущение, что '' ограничивает
подстрочки (и туда можно пробельчик или ещё чего всунуться)
3) проверка 'hpt' в коде отличается от всех остальных, хотя по сути это
такая же проверка элемента из списка


А почему filter-out, если по существующей логике как раз filter, как в
примере?


--- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
Ответить с цитированием
  #14  
Старый 11.10.2021, 12:52
Michael Dukelsky
Guest
 
Сообщений: n/a
По умолчанию Новые мейкфайлы

Michael Dukelsky написал(а) к Zhenja Kaliuta в Oct 21 11:30:04 по местному времени:

Привет, Zhenja!

11 October 2021 10:48, Zhenja Kaliuta послал(а) письмо к Michael Dukelsky:

ZK> А почему filter-out, если по существующей логике как раз filter, как в
ZK> примере?

Твой пример не имеет абсолютно никакого отношения к моему коду. Если ты посмотришь, например, на need_areafix, там надо проверить есть ли в списке hpt. Это можно проверить, например, так:
$(filter-out hptkill hptsqfix,$(findstring hpt,$(PROGRAMS)))

Желаю успехов, Zhenja!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20180707
Ответить с цитированием
  #15  
Старый 11.10.2021, 13:03
Zhenja Kaliuta
Guest
 
Сообщений: n/a
По умолчанию Re: Новые мейкфайлы

Zhenja Kaliuta написал(а) к Michael Dukelsky в Oct 21 11:54:58 по местному времени:

Нi, Michael!

On Mon, 11 Oct 2021 10:30:04 +0300 Michael Dukelsky writes:

ZK>> А почему filter-out, если по существующей логике как раз filter, как в
ZK>> примере?

MD> Твой пример не имеет абсолютно никакого отношения к моему коду. Если
MD> ты посмотришь, например, на need_areafix, там надо проверить есть ли в
MD> списке hpt. Это можно проверить, например, так:
MD> $(filter-out hptkill hptsqfix,$(findstring hpt,$(PROGRAMS)))

Нmmm, мне кажется, мой пример имеет прямое отношение к твоему коду, ибо

$(filter hpt,$(PROGRAMS))

делает то, что ты хочешь добиться с помощью

$(findstring hpt,$(PROGRAMS))


А need_areafix:

$(eval $(if $(or $(findstring 'hpt',$(PROGRAMS)), \
$(findstring htick,$(PROGRAMS)) \
),needareafix:=1,needareafix:=0))

вполне превращается в

need_areafix := $(if $(filter hpt,$(PROGRAMS))$(filter htick,$(PROGRAMS)),1,0)

% cat Makefile

need_areafix := $(if $(filter hpt,$(PROGRAMS))$(filter htick,$(PROGRAMS)),1,0)

all:
@echo "Need areafix $(need_areafix)"



% make PROGRAMS="hpt htick hptkill hptsqfix sqpack msged fidoroute util"
Need areafix 1
% make PROGRAMS="htick hptkill hptsqfix sqpack msged fidoroute util"
Need areafix 1
% make PROGRAMS="hpt hptkill hptsqfix sqpack msged fidoroute util"
Need areafix 1
% make PROGRAMS="hptkill hptsqfix sqpack msged fidoroute util"
Need areafix 0



--- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
Ответить с цитированием
  #16  
Старый 11.10.2021, 13:12
Zhenja Kaliuta
Guest
 
Сообщений: n/a
По умолчанию Re: Новые мейкфайлы

Zhenja Kaliuta написал(а) к Michael Dukelsky в Oct 21 12:04:10 по местному времени:

Нi, Zhenja!

On Mon, 11 Oct 2021 11:54:58 +0300 Zhenja Kaliuta writes:
ZK> On Mon, 11 Oct 2021 10:30:04 +0300 Michael Dukelsky writes:

ZK>>> А почему filter-out, если по существующей логике как раз filter, как в
ZK>>> примере?

MD>> Твой пример не имеет абсолютно никакого отношения к моему коду. Если
MD>> ты посмотришь, например, на need_areafix, там надо проверить есть ли в
MD>> списке hpt. Это можно проверить, например, так:
MD>> $(filter-out hptkill hptsqfix,$(findstring hpt,$(PROGRAMS)))

ZK> Нmmm, мне кажется, мой пример имеет прямое отношение к твоему коду, ибо

ZK> $(filter hpt,$(PROGRAMS))

ZK> делает то, что ты хочешь добиться с помощью

ZK> $(findstring hpt,$(PROGRAMS))


ZK> А need_areafix:

ZK> $(eval $(if $(or $(findstring 'hpt',$(PROGRAMS)), \
ZK> $(findstring htick,$(PROGRAMS)) \
ZK> ),needareafix:=1,needareafix:=0))

ZK> вполне превращается в

ZK> need_areafix := $(if $(filter hpt,$(PROGRAMS))$(filter htick,$(PROGRAMS)),1,0)

ZK> % cat Makefile

ZK> need_areafix := $(if $(filter hpt,$(PROGRAMS))$(filter htick,$(PROGRAMS)),1,0)

ZK> all:
ZK> @echo "Need areafix $(need_areafix)"



ZK> % make PROGRAMS="hpt htick hptkill hptsqfix sqpack msged fidoroute util"
ZK> Need areafix 1
ZK> % make PROGRAMS="htick hptkill hptsqfix sqpack msged fidoroute util"
ZK> Need areafix 1
ZK> % make PROGRAMS="hpt hptkill hptsqfix sqpack msged fidoroute util"
ZK> Need areafix 1
ZK> % make PROGRAMS="hptkill hptsqfix sqpack msged fidoroute util"
ZK> Need areafix 0


Можно дальше извращаться :)

check_prog = $(if $(filter $1,$(PROGRAMS)),1,)

withhpt := $(call checkprog,hpt)
withhtick := $(call checkprog,htick)

needareafix := $(if $(with_hpt)$(withhtick),1,0)


(0 тут под вопросом, в make более традиционно проверять на пустую строку)




--- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
Ответить с цитированием
  #17  
Старый 11.10.2021, 14:21
Michael Dukelsky
Guest
 
Сообщений: n/a
По умолчанию Новые мейкфайлы

Michael Dukelsky написал(а) к Zhenja Kaliuta в Oct 21 13:09:10 по местному времени:

Привет, Zhenja!

11 October 2021 11:54, Zhenja Kaliuta послал(а) письмо к Michael Dukelsky:


ZK> need_areafix := $(if $(filter hpt,$(PROGRAMS))$(filter
ZK> htick,$(PROGRAMS)),1,0)

Можно и так. Но без $(or ...) всё равно не обойтись, потому что для need_huskylib строка получается под 200 символов, а ставить перенос строки после filter как-то криво.

Желаю успехов, Zhenja!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20180707
Ответить с цитированием
  #18  
Старый 11.10.2021, 14:32
Zhenja Kaliuta
Guest
 
Сообщений: n/a
По умолчанию Re: Новые мейкфайлы

Zhenja Kaliuta написал(а) к Michael Dukelsky в Oct 21 13:10:47 по местному времени:

Нi, Michael!

Мне кажется, вот это

ifneq ($(MAKECMDGOALS),update)
ifeq ($(MAKECMDGOALS),depend)


не работает в случае указания нескольких таргетов, a-la

make update depend all
--- Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
Ответить с цитированием
  #19  
Старый 11.10.2021, 14:32
Michael Dukelsky
Guest
 
Сообщений: n/a
По умолчанию Новые мейкфайлы

Michael Dukelsky написал(а) к Zhenja Kaliuta в Oct 21 13:26:46 по местному времени:

Привет, Zhenja!

11 October 2021 13:10, Zhenja Kaliuta послал(а) письмо к Michael Dukelsky:

ZK> Мне кажется, вот это
ZK> ifneq ($(MAKECMDGOALS),update)
ZK> ifeq ($(MAKECMDGOALS),depend)
ZK> не работает в случае указания нескольких таргетов, a-la
ZK> make update depend all

Вместо такого вызова make предлагается вызывать скрипт build.sh

Желаю успехов, Zhenja!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20180707
Ответить с цитированием
  #20  
Старый 11.10.2021, 14:42
Michael Dukelsky
Guest
 
Сообщений: n/a
По умолчанию Новые мейкфайлы

Michael Dukelsky написал(а) к Zhenja Kaliuta в Oct 21 13:32:34 по местному времени:

Привет, Zhenja!

11 October 2021 13:26, Michael Dukelsky послал(а) письмо к Zhenja Kaliuta:

ZK>> Мне кажется, вот это
ZK>> ifneq ($(MAKECMDGOALS),update)
ZK>> ifeq ($(MAKECMDGOALS),depend)
ZK>> не работает в случае указания нескольких таргетов, a-la
ZK>> make update depend all

MD> Вместо такого вызова make предлагается вызывать скрипт build.sh

А вообще давай перейдём в нетмейл, эта эха не по программированию.

Желаю успехов, Zhenja!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20180707
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 16:38. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot