Ada_Ru форум

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

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

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

Сообщения

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

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

  
kazakov1961
Re: Менеджер пакетов Ada
2016-10-29 22:38:03
Зачем? 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.
Vadim Godunko
Re: [ada_ru] Менеджер пакетов Ada
2016-10-30 14:10:17
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
kazakov1961
Re: [ada_ru] Re: Ме неджер па к­етов Ada
2016-12-01 01:09:09
Исходники распаковать в любую директорию, которая видна в пути проектов GPR (переменная
ADA_PROJECT_PATH). Или использовать полный путь в with Вашего проекта.

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

(Все это специфично для SQLitе, который будучи встроенным менеджером файловой базы данных, не имеет
смысла использовать иначе чем статически линкуя.)
Dmitriy Anisimkov
Re: [ada_ru] Менеджер пакетов Ada
2016-12-01 04:21:26
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
Leonid Dulman
Re: [ada_ru] Менеджер пакетов Ada
2016-12-01 10:44:40
Qt5Ada supports any database connections

      From: "Dmitriy Anisimkov anisimkov@... [ada ru]" <ada [email protected]>
 To: ada [email protected] 
 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 [email protected] [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 

   
sv_lary
Re: Re: [ada_ru] Менеджер пак­етов Ada
2016-12-01 15:01:37
Здравствуй Вадим!



Срд 30 Ноя 2016 20:10:26 +0600, Vadim Godunko vgodunko@... [ada ru] <ada [email protected]>
написал:
> Стандартных средств для этого нет. А поддержку SQLite можео найти,
> например, тут http://forge.ada-ru.org/matreshka

1) Я совсем не понимаю, что значит "установить пакет ADA". Насколько я помню, общедоступные пакеты
лежат в /usr/share/ada/libs/. Но как они туда попадают? Вот потому и спрашивал про менеджер пакетов.
2) Про "Матрёшку" я много слышал, но мне кажется, что это сильно большой монстр... Типа bust-a в С++

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

Сергей Ларионов
sv_lary
Re: [ada_ru] Re: Менеджер пак­етов Ada
2016-12-01 15:06:43
Здравствуй Дмитрий!

Срд 30 Ноя 2016 20:38:06 +0600, [email protected] [ada ru] <ada [email protected]> написал:

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

> http://www.dmitry-kazakov.de/ada/components.htm#SQLite
   Спасибо, обязательно посмотрю.

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

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

Сергей Ларионов
sv_lary
Re: Менеджер пакетов Ada
2016-12-01 18:54:22
Исходники распаковать в любую директорию

Попробовал установить "матрёшку" - скачал исходы и прочитал 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. Можно это как-то объехать?
Устанавливать новейшую версию очень не хочется, так как, вполне ожидаемо, что уползут другие
зависимости где-то...
Vadim Godunko
Re: [ada_ru] Re: Менеджер пакетов Ada
2016-12-02 12:48:50
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 и 
всё должно работать.

А вот Макс может расскажет как же с этим бороться, ибо недавно он 
практиковался...
Maxim Reznik
Re: [ada_ru] Re: Менеджер пак­етов Ada
2016-12-02 13:06:09
Птн 02 Дек 2016 12:54:26 +0200, sv [email protected] [ada ru] <ada [email protected]> написал:
> 
> Попробовал установить "матрёшку" - скачал исходы и прочитал 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>

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

Удачи!
sv_lary
Re: [ada_ru] Re: Ме неджер па к­етов Ada
2016-12-04 11:39:25
> А что за система у Вас? Это линукс? Дебиан?

   Ubuntu 16,04

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

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

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

make install

?
sv_lary
Re: Re: [ada ru] Re: Менедже­р пак­етов Ada
2016-12-04 22:24:42
Здравствуйте, Максим!

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

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

1. Заставить работать *.gpr
2. Собрать необходимые библиотеки

> Для установки нужно использовать make install. 
  
 Обязательно попробую. Спасибо!

> Да и не просил пока еще никто.
   Ну да... Когда я завожу разговор про Ada с коллегами, на меня смотрят как на призрак, явившийся
с того света :-)
Maxim Reznik
Re: Re: [ada ru] Re: Менедже­р пак­етов Ada
2016-12-05 10:11:10

Пнд 05 Дек 2016 05:39:33 +0200, sv [email protected] [ada ru] <ada [email protected]> написал:
> 
> Я всё-таки пошёл по второму пути. Объяснение тут простое -  я хочу повторить этот процесс в
варианте кросс-компиляции. А для этого придётся использоват одну версию 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, да руки не доходят. Да и не
просил пока еще никто.
sv_lary
Re: Re: [ada ru] Re: Менедже­р пак­етов Ada
2016-12-05 11:02:10
Здравствуйте, Максим!

> Для установки нужно использовать 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 Надо добавить какой-то ключик в проект
Или ещё что-то?
Sergey I. Rybin
Re: [ada_ru] Re: Re: [ada ru] Re: Менедже­р пак­етов Ada
2016-12-06 08:43:55
sv_lary@... [ada_ru] wrote:
> И здесь у меня две гипотьезы:
>
>   * Я использую старую версию GNAT

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

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

Попробуйте '-gnat12' - он включает режим Ada2012
Новое сообщение:
Страницы: 1

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