Code Monkey home page Code Monkey logo

Comments (8)

afomin avatar afomin commented on June 4, 2024

я думаю сделать что-то вроде

BASE_CONF_DIR  := $(ROOT_DIR)/conf
PATCH_CONF_DIR := $(BASE_CONF_DIR)/$(PATCH_NAME)

а потом, когда делаем include соответствующих файлов patch.conf берем из второго пути, а вот build.conf и проч. надо отдельно смотреть, т.к. они могли поменяться в патче...

Надо как-то проверить, есть ли в папке PATCH_CONF_DIR файл build.conf и, если лежит, то его и инклюдить, если же нет, то брать соотв. файл из базового конфига
Аналогичную проверку надо делать для каждого файла базового конфига (разумеется, для тех, которые непосредственно включены в файлы *.mk).

Заодно, если надо брать такой файл не из базового конфига, то надо будет пересобирать объектники из базовой сборки.

Вот. НЕпонятно, можно ли сделать подобную проверку (на наличие файла в папке) на этапе присваивания констант в мэйкфайле.

А еще мне начинает казаться, что я мудрю=)... Но как-то проще мне не придумывается...

from embox.

abusalimov avatar abusalimov commented on June 4, 2024

Что-то и правда сложно получается со всеми проверками.

Без всего этого можно обойтись, если вспомнить, как работает препроцессор Си.
У нас есть confmacro.S, из которого подключаются все необходимые файлы с помощью
#include "xxx.conf". Пути поиска этих файлов передаются в директиве -I препроцессора.
Достаточно поставить путь к PATCH_CONF_DIR перед путем к BASE_CONF_DIR, и тогда сперва будет искаться файл в папке с патчами, а если такой не найдется, то он будет взят из папки с базовой конфой. Чтобы это работало в том числе и с инклюдами в кавычках, надо добавить ключ -I-

Это, пожалуй, самый простой и изящный способ избавиться от всяких проверок и вообще от процесса наложения патчей через копирование/замену файлов. Правда не совсем ясно, как быть с оптимизацией, но это пока дело десятое.

from embox.

afomin avatar afomin commented on June 4, 2024

Опаньки, какие новости.
Интересно.

А что ты думаешь насчет базового конфига? он нужен?...
И patch.conf. Я так понимаю, его можно убрать, раз мы в любом случае заменяем файлы.

from embox.

abusalimov avatar abusalimov commented on June 4, 2024

Мне кажется patch.conf только все усложнит. И еще я не понял, что ты предлагаешь описывать в нем и в его включениях.
Базовый конфиг, на мой взгляд, нужен, потому что иначе система вынуждает пользователя иметь как минимум один патч для возможности сборки.

from embox.

afomin avatar afomin commented on June 4, 2024

Теперь уже я не знаю, что хотел там описывать - изначально, чтобы можно было добавлять произвольные файлы. Например, тесты базового конфига + patch_tests.conf, который был бы включен в patch.conf...

Видимо, в топку его.

from embox.

abusalimov avatar abusalimov commented on June 4, 2024

Проблема в том, что все 4 основных файла .conf обрабатываются по-разному (загляни в confmacro.S). Непонятно, куда впихивать patch.conf.

from embox.

afomin avatar afomin commented on June 4, 2024

В смысле?
а просто инклудить его в configure.mk?
Он же тупо содержит несколько (или даже один) инклудов, а те файлы ведь аналоги соответствующих в базовом конфиге (например patch_tests.conf).

А вообще, не знаю, зачем обсуждать... Предлагаю на него забить=)... Что-то я его просто уже второй раз добавляю заем-то, а потом понимаю, что в топку=)

from embox.

afomin avatar afomin commented on June 4, 2024

Написано кривовато=(, но работает=)...

Closed with status Fixed

from embox.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.