Ada_Ru форум

Обсуждение языка Ада

Менеджер пакетов Ada

Оставить новое сообщение

Сообщения

sv_lary
Менеджер пакетов Ada
2016-10-29 22:02:28

Привет всем!

Раз уж выбрался на conversation, то сразу и второй вопрос. Во многих языках программирования (Phyton, PERL, Rust...) есть некие средства для установки модулей (пакетов) подпрограмм. Как это делается в Ada? Конкретно, мне нужна библиотека для работы с SQLite - как установить модуль для работы с SQLite ?

Зачем? SQLite поставляется в исходнике. Все что надо - написать with в файле проекта. См.

http://www.dmitry-kazakov.de/ada/components.htm#SQLite http://www.dmitry-kazakov.de/ada/components.htm#SQLite

К вопросу о пакетах. Есть gprinstall для ручной установки. Для стандартных библиотек под Linux apt и dnf / yum.

On 11/30/2016 05:02 PM, sv_lary@... [ada_ru] wrote:

 

Раз уж выбрался на conversation, то сразу и второй вопрос. Во многих

языках программирования (Phyton, PERL, Rust...) есть некие средства для

установки модулей (пакетов) подпрограмм. Как это делается в Ada?

Конкретно, мне нужна библиотека для работы с SQLite - как установить

модуль для работы с SQLite ?

 

Стандартных средств для этого нет. А поддержку SQLite можео найти, например, тут http://forge.ada-ru.org/matreshka

Исходники распаковать в любую директорию, которая видна в пути проектов GPR (переменная ADA_PROJECT_PATH). Или использовать полный путь в with Вашего проекта.

gprinstall входит в стандартную поставку GNAT. Он на сложных проектах конечно не работает, а так, для дома - ничего.

(Все это специфично для SQLitе, который будучи встроенным менеджером файловой базы данных, не имеет смысла использовать иначе чем статически линкуя.)

On 2016-11-30 20:10, Vadim Godunko vgodunko@... [ada_ru] wrote:

 

 

On 11/30/2016 05:02 PM, sv_lary@... [ada_ru] wrote:

 

Раз уж выбрался на conversation, то сразу и второй вопрос. Во многих языках программирования (Phyton, PERL, Rust...) есть некие средства для установки модулей (пакетов) подпрограмм. Как это делается в Ada? Конкретно, мне нужна библиотека для работы с SQLite - как установить модуль для работы с SQLite ?

 

Стандартных средств для этого нет. А поддержку SQLite можео найти, например, тут http://forge.ada-ru.org/matreshka

 

Или GNATCOLL.SQL

Qt5Ada supports any database connections

 

From: "Dmitriy Anisimkov anisimkov@... [ada_ru]" <ada_ru@yahoogroups.com> To: ada_ru@yahoogroups.com

Sent: Thursday, December 1, 2016 6:21 AM

Subject: Re: [ada_ru] Менеджер пакетов Ada

  On 2016-11-30 20:10, Vadim Godunko vgodunko@... [ada_ru] wrote:

 

 

On 11/30/2016 05:02 PM, sv_lary@fromru.com [ada_ru] wrote:

 

Раз уж выбрался на conversation, то сразу и второй вопрос. Во многих языках программирования (Phyton, PERL, Rust...) есть некие средства для установки модулей (пакетов) подпрограмм. Как это делается в Ada? Конкретно, мне нужна библиотека для работы с SQLite - как установить модуль для работы с SQLite ?

 

Стандартных средств для этого нет. А поддержку SQLite можео найти, например, тут http://forge.ada-ru.org/matreshka

 

Или GNATCOLL.SQL

#yiv9801650905 #yiv9801650905 -- #yiv9801650905ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv9801650905 #yiv9801650905ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv9801650905 #yiv9801650905ygrp-mkp #yiv9801650905hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv9801650905 #yiv9801650905ygrp-mkp #yiv9801650905ads {margin-bottom:10px;}#yiv9801650905 #yiv9801650905ygrp-mkp .yiv9801650905ad {padding:0 0;}#yiv9801650905 #yiv9801650905ygrp-mkp .yiv9801650905ad p {margin:0;}#yiv9801650905 #yiv9801650905ygrp-mkp .yiv9801650905ad a {color:#0000ff;text-decoration:none;}#yiv9801650905 #yiv9801650905ygrp-sponsor #yiv9801650905ygrp-lc {font-family:Arial;}#yiv9801650905 #yiv9801650905ygrp-sponsor #yiv9801650905ygrp-lc #yiv9801650905hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv9801650905 #yiv9801650905ygrp-sponsor #yiv9801650905ygrp-lc .yiv9801650905ad {margin-bottom:10px;padding:0 0;}#yiv9801650905 #yiv9801650905actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv9801650905 #yiv9801650905activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv9801650905 #yiv9801650905activity span {font-weight:700;}#yiv9801650905 #yiv9801650905activity span:first-child {text-transform:uppercase;}#yiv9801650905 #yiv9801650905activity span a {color:#5085b6;text-decoration:none;}#yiv9801650905 #yiv9801650905activity span span {color:#ff7900;}#yiv9801650905 #yiv9801650905activity span .yiv9801650905underline {text-decoration:underline;}#yiv9801650905 .yiv9801650905attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv9801650905 .yiv9801650905attach div a {text-decoration:none;}#yiv9801650905 .yiv9801650905attach img {border:none;padding-right:5px;}#yiv9801650905 .yiv9801650905attach label {display:block;margin-bottom:5px;}#yiv9801650905 .yiv9801650905attach label a {text-decoration:none;}#yiv9801650905 blockquote {margin:0 0 0 4px;}#yiv9801650905 .yiv9801650905bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv9801650905 .yiv9801650905bold a {text-decoration:none;}#yiv9801650905 dd.yiv9801650905last p a {font-family:Verdana;font-weight:700;}#yiv9801650905 dd.yiv9801650905last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv9801650905 dd.yiv9801650905last p span.yiv9801650905yshortcuts {margin-right:0;}#yiv9801650905 div.yiv9801650905attach-table div div a {text-decoration:none;}#yiv9801650905 div.yiv9801650905attach-table {width:400px;}#yiv9801650905 div.yiv9801650905file-title a, #yiv9801650905 div.yiv9801650905file-title a:active, #yiv9801650905 div.yiv9801650905file-title a:hover, #yiv9801650905 div.yiv9801650905file-title a:visited {text-decoration:none;}#yiv9801650905 div.yiv9801650905photo-title a, #yiv9801650905 div.yiv9801650905photo-title a:active, #yiv9801650905 div.yiv9801650905photo-title a:hover, #yiv9801650905 div.yiv9801650905photo-title a:visited {text-decoration:none;}#yiv9801650905 div#yiv9801650905ygrp-mlmsg #yiv9801650905ygrp-msg p a span.yiv9801650905yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv9801650905 .yiv9801650905green {color:#628c2a;}#yiv9801650905 .yiv9801650905MsoNormal {margin:0 0 0 0;}#yiv9801650905 o {font-size:0;}#yiv9801650905 #yiv9801650905photos div {float:left;width:72px;}#yiv9801650905 #yiv9801650905photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv9801650905 #yiv9801650905photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv9801650905 #yiv9801650905reco-category {font-size:77%;}#yiv9801650905 #yiv9801650905reco-desc {font-size:77%;}#yiv9801650905 .yiv9801650905replbq {margin:4px;}#yiv9801650905 #yiv9801650905ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv9801650905 #yiv9801650905ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv9801650905 #yiv9801650905ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv9801650905 #yiv9801650905ygrp-mlmsg select, #yiv9801650905 input, #yiv9801650905 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv9801650905 #yiv9801650905ygrp-mlmsg pre, #yiv9801650905 code {font:115% monospace;}#yiv9801650905 #yiv9801650905ygrp-mlmsg * {line-height:1.22em;}#yiv9801650905 #yiv9801650905ygrp-mlmsg #yiv9801650905logo {padding-bottom:10px;}#yiv9801650905 #yiv9801650905ygrp-msg p a {font-family:Verdana;}#yiv9801650905 #yiv9801650905ygrp-msg p#yiv9801650905attach-count span {color:#1E66AE;font-weight:700;}#yiv9801650905 #yiv9801650905ygrp-reco #yiv9801650905reco-head {color:#ff7900;font-weight:700;}#yiv9801650905 #yiv9801650905ygrp-reco {margin-bottom:20px;padding:0px;}#yiv9801650905 #yiv9801650905ygrp-sponsor #yiv9801650905ov li a {font-size:130%;text-decoration:none;}#yiv9801650905 #yiv9801650905ygrp-sponsor #yiv9801650905ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv9801650905 #yiv9801650905ygrp-sponsor #yiv9801650905ov ul {margin:0;padding:0 0 0 8px;}#yiv9801650905 #yiv9801650905ygrp-text {font-family:Georgia;}#yiv9801650905 #yiv9801650905ygrp-text p {margin:0 0 1em 0;}#yiv9801650905 #yiv9801650905ygrp-text tt {font-size:120%;}#yiv9801650905 #yiv9801650905ygrp-vital ul li:last-child {border-right:none !important;}#yiv9801650905

 

Здравствуй Вадим!

 

 

 

Срд 30 Ноя 2016 20:10:26 +0600, Vadim Godunko vgodunko@... [ada_ru] <ada_ru@yahoogroups.com> написал:

Стандартных средств для этого нет. А поддержку SQLite можео найти, например, тут http://forge.ada-ru.org/matreshka

 

1) Я совсем не понимаю, что значит "установить пакет ADA". Насколько я помню, общедоступные пакеты лежат в /usr/share/ada/libs/. Но как они туда попадают? Вот потому и спрашивал про менеджер пакетов.

2) Про "Матрёшку" я много слышал, но мне кажется, что это сильно большой монстр... Типа bust-a в С++

 

--

Всего хорошего!

 

Сергей Ларионов

Здравствуй Дмитрий!

 

Срд 30 Ноя 2016 20:38:06 +0600, alt@dmitry-kazakov.de [ada_ru] <ada_ru@yahoogroups.com> написал:

 

SQLite поставляется в исходнике. Все что надо - написать with в файле проекта. См.

В исходниках Ada? И куда их нужно положить для доступности?

 

http://www.dmitry-kazakov.de/ada/components.htm#SQLite

Спасибо, обязательно посмотрю.

 

К вопросу о пакетах. Есть gprinstall для ручной установки.

А где его самого искать ?

 

--

Всего хорошего!

 

Сергей Ларионов

Исходники распаковать в любую директорию

Попробовал установить "матрёшку" - скачал исходы и прочитал README. Там одна строка - запусти make! Запустил... Увы! :-(

Ну тогда решил пойти трандиционным путём:

1. make configure. Пояаилась программа configure - замечательно! 2. Запустил программу configure - появился файл Makefile.config - отлично ! 3. Запускаю make - облом:

/usr/bin/ld: cannot find -lgnarl-5.4

/usr/bin/ld: cannot find -lgnat-5.4

collect2: error: ld returned 1 exit status

Вообще-то libgnat у меня установлен. Но просто libgnat5, а не 5.4. Можно это как-то объехать? Устанавливать новейшую версию очень не хочется, так как, вполне ожидаемо, что уползут другие зависимости где-то...

On 12/02/2016 01:54 PM, sv_lary@... [ada_ru] wrote:

 

 

Исходники распаковать в любую директорию

 

Попробовал установить "матрёшку" - скачал исходы и прочитал README. Там

одна строка - запусти make! Запустил... Увы! :-(

 

Ну тогда решил пойти трандиционным путём:

 

1. make configure. Пояаилась программа configure - замечательно!

2. Запустил программу configure - появился файл Makefile.config - отлично !

3. Запускаю make - облом:

 

/usr/bin/ld: cannot find -lgnarl-5.4

/usr/bin/ld: cannot find -lgnat-5.4

collect2: error: ld returned 1 exit status

 

От себя посоветую поставить нормальный и проверенный компилятор. К сожалению многие источники компиляторов не умеют правильно собирать дистрибутив и не проверяют результат. Так что поставьте GNAT GPL 2016 и всё должно работать.

 

А вот Макс может расскажет как же с этим бороться, ибо недавно он практиковался...

 

Птн 02 Дек 2016 12:54:26 +0200, sv_lary@fromru.com [ada_ru] <ada_ru@yahoogroups.com> написал:

 

Попробовал установить "матрёшку" - скачал исходы и прочитал README. Там одна строка - запусти make! Запустил... Увы! :-(

 

 

Дистрибутив матрешки предполагает наличие работоспособного компилятора языка Ада, что, увы, не так в Вашем случае.

 

Ну тогда решил пойти трандиционным путём:

 

1.&nbsp; make configure. Пояаилась программа configure -&nbsp; замечательно! 2. Запустил программу configure - появился файл Makefile.config - отлично ! 3. Запускаю make - облом:

 

/usr/bin/ld: cannot find -lgnarl-5.4

/usr/bin/ld: cannot find -lgnat-5.4

collect2: error: ld returned 1 exit status

 

Вообще-то libgnat у меня установлен. Но просто libgnat5, а не 5.4. Можно это как-то объехать? Устанавливать новейшую версию очень не хочется, так как, вполне ожидаемо, что уползут другие зависимости где-то...

 

 

А что за система у Вас? Это линукс? Дебиан? Есть два пути:

* не мучаться, поставить GNAT GPL 2016 с сайта AdaCore. Его можно поставить в $HOME куда-то и он не затронет системные пакеты и не нарушит зависимостей. У Вас будет рабочий GPS, gprbuild и свежий компилятор.

* попробовать исправить базу данных gprbuild-а и ждать следующих глюков.

Я бы советовал 1-й путь для начинающих. Если хотите рискнуть по 2-му - ищите /usr/share/gprconfig/compilers.xml в нем строки

 

<compiler_description>

<name>GNAT</name>

<executable prefix="1">(.*-wrs-.*|......

<version>

<external>${PREFIX}gnatls -v --version</external>

<grep regexp="^GNATLS.+?(&#92;d+(&#92;.&#92;d+)?)" group="1"></grep> эту строку меняете на

<grep regexp="^GNATLS.+?(&#92;d+)" group="1"></grep>

 

и пробуете снова

 

Удачи!

А что за система у Вас? Это линукс? Дебиан?

Ubuntu 16,04

Я бы советовал 1-й путь для начинающих.

Если хотите рискнуть по 2-му - ищите /usr/share/gprconfig/compilers.xml в нем строки

Я всё-таки пошёл по второму пути. Объяснение тут простое - я хочу повторить этот процесс в варианте кросс-компиляции. А для этого придётся использоват одну версию GCC и библиотек как для С программ, так и длдя Ada.

В результате почти получасовой (!) сборки получил 16 библиотек в скрытом каталоге ,lib. И теперь не понимаю, что делать дальше. Разумеется, я могу переложить эти библиотеки в /usr/lib. Но будет ли этого достаточно? Ведь где-то надо разместить ещё и *.ads файлы... И какие именно ?! Или не мучаться, а просто сказать

make install

?

Здравствуйте, Максим!

Интересно! А под что будет кросс?

У меня на столе лежит ARM (i.MX6) и PowerPC (440). Сейчас ситуация такая: я могу собрать Ada программу и туда и сюда. Но, только "ручками" - без участия службы проектов GNAT. Соответственно - только самые простые. Да ещё и библиотек не хватает. Так что у меня две задачи:

1. Заставить работать *.gpr

2. Собрать необходимые библиотеки

Для установки нужно использовать make install.

Обязательно попробую. Спасибо!

Да и не просил пока еще никто.

Ну да... Когда я завожу разговор про Ada с коллегами, на меня смотрят как на призрак, явившийся с того света :-)

 

 

Пнд 05 Дек 2016 05:39:33 +0200, sv_lary@fromru.com [ada_ru] <ada_ru@yahoogroups.com> написал:

 

Я всё-таки пошёл по второму пути. Объяснение тут простое - я хочу повторить этот процесс в варианте кросс-компиляции. А для этого придётся использоват одну версию GCC и библиотек как для С программ, так и длдя Ada.

 

 

Интересно! А под что будет кросс?

 

В результате почти получасовой (!) сборки получил 16 библиотек в скрытом каталоге ,lib. И теперь не понимаю, что делать дальше. Разумеется, я могу переложить эти библиотеки в /usr/lib. Но будет ли этого достаточно? Ведь где-то надо разместить ещё и *.ads файлы... И какие именно ?! Или не мучаться, а просто сказать

 

make install

 

?

 

 

В матрешке много модулей, поэтому собирается несколько библиотек, чтобы можно было выбрать то, что нужно. Большую часть времени компиляции занимает AMF - реализация UML на Аде. Это модуль можно отключить, если задать ./configure --without-amf.

 

Для установки нужно использовать make install. Можно сделать make install PREFIX=/tmp/inst и посмотреть что он ставит. В зависимости от конфигурации ставятся дополнительные файлы, например CLDR для локалей или WebAPI для a2js.

 

Хорошо бы сделать пакеты для Debian/Ubuntu, как это сейчас в Fedora, да руки не доходят. Да и не просил пока еще никто.

Здравствуйте, Максим!

Для установки нужно использовать make install.

Сделал.

Попытался запустить сборку теста SQL - /examples/sql. После некоторого разбирательства с каталогами .obj, сборка пошла. При этом получил следующие сообщения:

gnatgcc -c -g -gnat05 simple_sql.adb

simple_sql.adb:110:40: "Query" has at least one "out" or "in out" parameter simple_sql.adb:110:40: call to this function only allowed in Ada 2012 simple_sql.adb:119:40: "Query" has at least one "out" or "in out" parameter simple_sql.adb:119:40: call to this function only allowed in Ada 2012 simple_sql.adb:130:48: "Query" has at least one "out" or "in out" parameter simple_sql.adb:130:48: call to this function only allowed in Ada 2012 simple_sql.adb:136:17: "Next" has at least one "out" or "in out" parameter simple_sql.adb:136:17: call to this function only allowed in Ada 2012 gprbuild: *** compilation phase failed

И здесь у меня две гипотьезы:

Я использую старую версию GNAT Надо добавить какой-то ключик в проект Или ещё что-то?

sv_lary@... [ada_ru] wrote:

И здесь у меня две гипотьезы:

 

* Я использую старую версию GNAT

 

Очень может быть - в свежем компиляторе режим Ada2012 включен по умолчанию

 

* Надо добавить какой-то ключик в проект

 

Попробуйте '-gnat12' - он включает режим Ada2012

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти