Может ли Free Pascal извлечь выгоду из чего-то вроде Apache Maven?

StackOverflow https://stackoverflow.com/questions/1893469

Вопрос

Apache Мавен это очень популярный инструмент для сборки и управления зависимостями в среде Java с открытым исходным кодом.Я провел несколько тестов, чтобы выяснить, может ли он обрабатывать скомпилированные Свободный Паскаль / Delphi units и обнаружил, что это легко реализовать.Таким образом, было бы возможно

  • выпускайте библиотеки с открытым исходным кодом, предварительно скомпилированные для Free Pascal (или Delphi), в общедоступном репозитории Maven
  • включите метаданные в этот репозиторий, который содержит информацию о зависимостях
  • используйте Maven в командной строке, чтобы загрузить библиотеку с открытым исходным кодом из общедоступного репозитория и автоматически разрешить все зависимости
  • локальные репозитории, работающие как прокси-серверы, могут использоваться для кэширования часто используемых двоичных файлов
  • автоматическая генерация контрольной суммы и проверка (предоставляемые Maven) снизили бы риск загрузки поврежденных двоичных файлов
  • исходный код и даже файлы документации могут быть предоставлены вместе с двоичными файлами
  • двоичные файлы могут быть предоставлены с отладочной информацией или без нее
  • серверы непрерывной интеграции, такие как Хадсон, Командный город или Управление круизом может использоваться для сборки проектов всякий раз, когда изменения были отправлены в систему управления версиями, и уведомлять разработчиков об ошибках сборки

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

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

  • извлеките исходный код проекта из внутренней системы контроля версий
  • редактировать исходный файл (ы)
  • беги mvn package для автоматической загрузки всех необходимых сторонних библиотек (предварительно скомпилированных модулей), если их еще нет в локальном репозитории рабочей станции
  • скомпилируйте и запустите

Единственным дополнительным файлом для Apache Maven, который требуется в папке проекта, является POM.XML файл, содержащий информацию о проекте.

Редактировать:хотя Maven можно использовать для некоторых необходимых задач, реализация такого решения, как Maven, на родном языке Free Pascal имела бы некоторые преимущества:не требуется Java SDK, поддержка всех платформ разработки, где доступен Free Pascal, обслуживание и разработка плагинов на Pascal.

Использование Maven-подобного инструмента было бы полезно не только для проектов с открытым исходным кодом - коммерческие проекты могли бы получать доступ к артефактам в общедоступных репозиториях Maven и использовать их таким же образом.

Функции Maven перечислены по адресу http://maven.apache.org/maven-features.html


Обновить:

одним из вариантов использования может быть сборка Lazarus, где Maven загрузит все необходимые библиотеки и вызовет компилятор с необходимыми аргументами пути сборки.Изменения в зависимостях на более низких уровнях будут автоматически распространяться вплоть до родительской сборки.

Возможные преимущества:

  • меньше времени, необходимого для настройки новой рабочей станции не требуется ручная установка сторонних библиотек
  • меньше ошибок, вызванных неправильной библиотекой версии, обнаружение версий конфликты (например, если две библиотеки зависят от разных версий третьей библиотеки)
  • артефакты, созданные собственными силами могут быть добавлены в локальный maven репозиторий и разделены между разработчиками и проектом, центральное хранилище всех артефактов с метаданными
  • сборки воспроизводимы, просто используя один и тот же исходный код и проект файл метаданных (pom.xml)
  • может сократить время разработки и повысить стабильность проекта

Обновление № 2:Фпмейкинг

в Фпмейкинг система сборки для Free Pascal кажется инструментом с большим потенциалом, во многих деталях она очень похожа на Maven:

  • FPMake - это система сборки на основе pascal, разработанная для FPC и распространяемая вместе с ней
  • FPMake стандартизирует построение, определяя некоторые ограничения, такие как стандартные каталоги
  • команда fppkg <packagename> будет искать пакет в базе данных, извлекать его, а затем компилировать fpmake.pp и запускать его
  • он имеет стандартные цели сборки (очистка, сборка, установка, ...)
  • он может создать файл "манифеста", подходящий для импорта в репозиторий (например mvn deploy или mvn install), манифест представляет собой XML-файл, который выглядит очень похоже на a pom.xml в Maven:

Файл манифеста FPMake:

      <packages>
        <package name="my-package">
          <version major="0" minor="7" micro="6" build="1"/>
          <filename>my-package-0.7.6-1.zip</filename>
          <author>my name</author>
          <license>GPL</license>
          <homepageurl>http://www.freepascal.org/</homepageurl>
          <email>myname@freepascal.org</email>
          <description>this is the package description</description>
          <dependencies>
            <dependency>
              <package packagename="rtl"/>
            </dependency>
          </dependencies>
        </package>    
      </packages>

Нет правильного решения

Другие советы

Freepascal работает над собственной системой пакетов в стиле apt-get и портов freebsd.(загрузка исходного кода / сборка / установка автоматически), называется fppkg.Однако работа застопорилась.Узким местом являются люди, инвестирующие время, а не те, кто хочет выбирать инструменты.

Что касается Maven, мне не нравятся вспомогательные инструменты, которые требуют установки огромных внешних сред выполнения.Это могло бы подойти для большого приложения (например, Open Office), но не для утилиты.

Я также предпочитаю инструмент, разработанный в соответствии с реальностью FPC и рабочим процессом.Инструменты документирования, сборки, системы загрузки, системы testsuite - все это уже есть, просто нужен человек, который посвящает этому много времени, чтобы это произошло.

Некоторые типичные проблемы при внедрении новой технологии в проект в качестве FPC и почему она имеет тенденцию создавать свои собственные инструменты:

  • необходимо обучить более 20 коммиттеров на неполный рабочий день.
  • Единственный РАСПРОСТРАНЕННЫЙ язык программирования, который вы можете предположить, - это Free Pascal.Даже внутренняя работа Delphi не может считаться само собой разумеющейся и быть известной (многие коммиттеры пришли непосредственно в FPC или даже все еще через TP или Mac Pascal)
    • Очевидно, что это делает что-то с плагинами на другом языке раздражающим.
  • Сценарий Bash является близким вторым.(g) сделать третьим, но уже на величину меньше.
  • Все серверы * nix-подобные (FreeBSD, OS X, Linux), но не на всех работает Apache.(например,мое зеркало FreeBSD работает под управлением XSHTTPD)
  • кто-то наиболее знающий должен быть преданным сопровождающим в течение длительного времени.Устраняйте проблемы, обновляйте / выполняйте миграции и т.д.Возможно, больше одного по очевидным причинам.
  • серьезной проблемой являются дистрибутивы Linux (и FreeBSD в меньшей степени), большинство разработчиков пакетов * nix не способны на большее, чем "./configure;make;make install", и должны быть снабжены почти готовым к сборке репозиторием и вспомогательными файлами.
    • Упаковка для дистрибуции FPC / Lazarus всегда была важна и продолжает расти
    • Все дистрибутивы имеют свои собственные особые правила в отношении метаданных, зависимостей и того, как должны публиковаться источники.В частности, Debian / Ubuntu очень бюрократичен и медлителен.
    • Большинству не нравятся сторонние автоустановщики поверх своих систем (поскольку это обходит их контроль зависимости)

Все это приводит к эффективной практике, согласно которой собственные инструменты на Pascal с минимальным количеством сценариев работают лучше всего.Некоторые используемые инструменты:

  • Gmake в основном используется для параметризации процесса сборки на уровне каждого каталога, преемник, fpcmake (на самом деле не производный от make, несмотря на название), начался, но миграция не завершена.
  • Latex и преобразование latex в html (tex4ht, но debian использует hevea) используются при создании документации (документация, не относящаяся к библиотеке).
  • Сайт сообщества (netscape community server, который использует TCL scripting, тяжелый сложный сервер приложений) был проблемой с самого начала, но особенно в последнее время, поскольку сопровождающий стал менее активным.
  • Mantis был проблемой (особенно модуль электронной почты приводил к сбою или зависанию сервера из-за большого объема), но он был исправлен в ходе последовательных обновлений и напряженной работы нескольких разработчиков lazarus.В настоящее время это достойная рабочая лошадка.
  • лазарь.freepascal.org Форум PHPBB OTOH относительно безболезнен, поскольку многие молодые люди знают, как с этим справиться.
  • То же самое касается subversions (хотя более продвинутый масштаб нуждается в некоторой корректировке, не все глубоко разбираются во всех тонкостях mergetracking)

Если бы кто-то действительно серьезно относился к Maven, я обычно спросил бы его:

  • Для КРИТИЧЕСКИ исследуйте использование для проекта.Очень конкретным образом, с графиком и оценками времени.Обзоры "все возможно" с высоты птичьего полета, по сути, ничего не стоят.
  • Подумайте о будущих изменениях используемых технологий.Каждая технология в конечном итоге заменяется, даже собственная, в проектах продолжительностью более 18 лет.Новая технология не должна затруднять или усложнять миграцию других компонентов инфраструктуры.Новой технологии, которая положила бы конец всем новым технологиям, не существует.
  • Составьте план миграции.Миграцию часто недооценивают.
  • И, в конце концов, всегда возникает вопрос стоимостью 1000000 евро: кто будет заниматься ежедневным обслуживанием?

Имейте в виду, что в компании вы просто выгоняете человека, ответственного за сервер приложений.Но в неформальной обстановке это намного сложнее, особенно в долгосрочной перспективе, поскольку жизни людей, профессии и время, затрачиваемое на проект, различаются.

Звучит как интересный план, но сообщество Delphi (и, я полагаю, FPC в еще большей степени!) ценит библиотеки как исходные гораздо больше, чем предварительно скомпилированные библиотеки.Общий консенсус заключается в том, что любой, кто использует библиотеку только для двоичных файлов, является дураком по двум причинам:Вы не можете исправить какие-либо ошибки, которые обнаружите в нем, а изменения в компиляторе нарушат совместимость.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top