2

Мне нужно добавить GNU Make к моей установке Cygwin, но программа установки предлагает мне две версии:

  • 3,82,90-1 (1254 тыс.)
  • 3,82-3 (473 КБ)

Я понятия не имею, в чем разница, и все мои попытки узнать через Google сошли на нет. Ни один из них не показывает наличие исходного кода (что объясняет огромную разницу в размере).

Может кто-нибудь просветить меня относительно разницы между двумя версиями и / или предложить, что может быть лучшим вариантом?

(Правка) Для ясности, что я действительно спрашиваю здесь: в чем разница между версией x.yy.zz версии Make x.yy-n? Почему разные шаблоны нумерации?

1 ответ1

3

Cygwin 32bit

Если вы посмотрите на само хранилище, то есть на одно из зеркал (http://mirror.switch.ch/ftp/mirror/cygwin/x86/release/make/), вы найдете четыре соответствующих файла:

make-3.81-2-src.tar.bz2     09-Feb-2008 20:50   1.1M     
make-3.81-2.tar.bz2         09-Feb-2008 20:50   350K     
make-3.82.90-1-src.tar.bz2  02-Dec-2011 18:05   1.3M     
make-3.82.90-1.tar.bz2      02-Dec-2011 18:05   442K     

Есть две версии, 3.82.90-1 и более старая 3.81-2, которые имеют примерно одинаковый размер (порядок величины). Соответствующие большие пакеты (1 МБ) являются источниками.

Это именно то, что мне предлагает инструмент установки cygwin .

Cygwin 64bit

Здесь предлагаются следующие файлы (http://mirror.switch.ch/ftp/mirror/cygwin/x86_64/release/make/):

make-3.82-3-src.tar.bz2     14-Mar-2013 11:26   1.6M     
make-3.82-3.tar.bz2         14-Mar-2013 11:26   473K     
make-3.82.90-1-src.tar.bz2  30-Mar-2013 12:12   1.9M     
make-3.82.90-1.tar.bz2      30-Mar-2013 12:12   1.2M    

Это соответствует вашему описанному сценарию.


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

Чтобы уточнить немного: Обычно (Debian использует аналогичную схему), номер версии перед дефисом - это номер версии исходного пакета, который был выпущен автором программного обеспечения (то есть командой разработчиков GNU). Число после гипса дает какой-то уровень исправления , применяемый сопровождающим пакета (то есть командой cygwin).

Чтобы доказать, посмотрите на make.cygport в пакетах с исходным кодом (например, make-3.82-3-src.tar.bz2)

NAME="make"
VERSION="3.82"
RELEASE=3

Примененные патчи (от cygwin) хранятся в make-3.82-3.src.patch .

Итак, было решено включить порт cygwin make 3.82 и make 3.82.90 в 64-битный дистрибутив cygwin. (Почему команда GNU make решила, что версия 3.82.90 должна следовать за 3.82, я действительно не знаю ...)

В чем разница между этими версиями? NEWS в архиве исходного кода внутри архива Cygwin Source говорят нам:

Версия 3.82.90

Полный список ошибок, исправленных в этой версии, доступен здесь: http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&set=custom

  • ВНИМАНИЕ: Обратная несовместимость! Эта версия make придерживается обработки обратной косой черты / новой строки в POSIX, внося следующие различия:

    • Каждая обратная косая черта / новая строка в значении переменной заменяется пробелом;
      несколько последовательных обратных косых черт / новых строк не сгущаются в один пробел.
    • В рецептах префикс рецепта, следующий за обратной косой чертой, удаляется.
  • Новая функция: возможность "сервера заданий" теперь поддерживается в Windows.
    Реализация предоставлена Troy Runkel

  • Новая функция: "!= "оператор присваивания оболочки как альтернатива функции $(shell ...). Реализовано для совместимости с make-файлами BSD.
    ВНИМАНИЕ: Обратная несовместимость!
    Переменные, оканчивающиеся на "!"ранее определенная как" переменная!= значение "теперь будет
    интерпретируется как назначение оболочки. Измените свое назначение, чтобы добавить пробел
    между "!переменная "and" = ":"! = значение "

  • Новая опция командной строки: --trace включает отслеживание целей. Когда включено
    рецепт, который должен быть вызван, печатается, даже если он был бы подавлен
    от .SILENT или префикс "@". Также перед каждым рецептом запускайте
    имя make-файла и номер белья, где он был определен, а также
    предпосылки, которые заставили цель считаться устаревшей.

  • В случае неудачи имя make-файла и номер белья рецепта, который не удался
    показано на рисунке.

  • А.Параметр RECIPEPREFIX запоминается для каждого рецепта, а переменные расширяются
    в этом рецепте также используйте эту настройку рецепта префикса.

  • В -p-выходе.Установки RECIPEPREFIX отображаются и все для конкретных целей
    переменные выводятся как в make-файле, а не как комментарии.

Так что, вероятно, эта обратная несовместимость является причиной того, что обе версии предоставлены Cygwin.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .