LINUX.ORG.RU

Не могу собрать OpenModelica

 , openmodelica


0

2

Пытаюсь собрать OpenModelica из гита в Debian Testing. Позавчера собрал в Арче из AUR, все собралось и работает. Сегодня в дебиане не получается ничего.

Во время сборки не удается забрать из гита библиотеки OpenModelica. Дает такой выхлоп:


# Building git/Modelica
./checkout-git.sh 'git/Modelica' 'https://github.com/modelica/Modelica.git' 'maint/2.2.2' 'd442bcd461b8db9873e33b6141bdbd37bcff9de8'
HEAD сейчас на 6a90d1a Modelica standard library, version 1.6, release date June 30, 2004.
fatal: в дереве нет такой ссылки: d442bcd461b8db9873e33b6141bdbd37bcff9de8

Что это? Не понятно. Вот содержимое скрипта checkout-git.sh


#!/bin/sh

if test "$#" -ne 4; then
  echo "Usage: $0 DESTINATION URL GITBRANCH HASH"
  exit 1
fi
DEST=$1
URL=$2
GITBRANCH=$3
REVISION=$4

GIT_VERSION=`git --version | grep -o "[0-9.]*"`
GIT_MAJOR=`echo $GIT_VERSION | cut -d. -f1`
GIT_MINOR=`echo $GIT_VERSION | cut -d. -f2`

if test "$GIT_MAJOR" -gt 1 || (test "$GIT_MAJOR" = 1 && test "$GIT_MINOR" -gt 7); then
  SINGLE_BRANCH="--single-branch"
else
  SINGLE_BRANCH=""
fi

if test -d "$DEST"; then
  # Clean out any old mess
  (cd "$DEST" && git reset --hard)
  (cd "$DEST" && git clean -f)
  (cd "$DEST" && git checkout -q "$REVISION" || git fetch --tags -fq "$URL" "$GITBRANCH" || (sleep 10 && git fetch --tags -fq "$URL" "$GIT$
fi
if ! test -d "$DEST"; then
  echo "[$DEST] does not exist: cloning [$URL]"
  (git clone --branch "$GITBRANCH" $SINGLE_BRANCH "$URL" "$DEST" || (sleep 10 && git clone --branch "$GITBRANCH" $SINGLE_BRANCH "$URL" "$D$
  # In case of CRLF properties, etc
  (cd "$DEST" && git reset --hard)
  (cd "$DEST" && git clean -fdx)
fi

if ! (cd "$DEST" && git checkout -f "$REVISION" ); then
  echo "Failed: $0 $*"
  exit 1
fi

(cd "$DEST" && git reset --hard)
(cd "$DEST" && git clean -fdx)

echo "$REVISION" > "$DEST.rev"


С гитом не дружу, подскажите пожалуйста, как это можно вылечить.

★★★★★
Ответ на: комментарий от curufinwe

Я, конечно, хейтер deb-пакетов и их системы сборки, но что мешает подключить src-репозиторий для jessie или xenial и сделать apt source и собрать пакет из «стабильных» сорцов? И, вообще, пакет от jessie с большой долей вероятности заработает на stretch. http://build.openmodelica.org/apt/pool/contrib/

IceWindDale
()
Ответ на: комментарий от curufinwe

Можешь попробовать тогда вот так:

git clone https://github.com/OpenModelica/OpenModelica.git
cd OpenModelica
git checkout "tags/1.11.0-dev"
sed -i "s,../,https://github.com/OpenModelica/,g" .gitmodules
git submodule sync
git submodule update --init --recursive

IceWindDale
()
Последнее исправление: IceWindDale (всего исправлений: 1)
Ответ на: комментарий от IceWindDale

Так и делал, только без git checkout «tags/1.11.0-dev».

На это выдает


git checkout "tags/1.11.0-dev"
error: pathspec 'tags/1.11.0-dev' did not match any file(s) known to git.

curufinwe ★★★★★
() автор топика
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от IceWindDale

Вот он коммит, которого якобы нет (на который ругается гит).

https://github.com/modelica/Modelica/commit/d442bcd461b8db9873e33b6141bdbd37b...

Почему через веб-интерфейс он виден, а через

git show d442bcd461b8db9873e33b6141bdbd37bcff9de8

нет?

curufinwe ★★★★★
() автор топика
Ответ на: комментарий от curufinwe

Возможно, это проблемы на стороне гитхаба. Сейчас проверю на своей машине.

IceWindDale
()
Ответ на: комментарий от curufinwe

Проверил.

git clone https://github.com/OpenModelica/OpenModelica.git
cd OpenModelica
git submodule sync
git submodule update --init --recursive
autoconf
./configure CC=clang CXX=clang++
Вот так. После этого make начинает работать.

IceWindDale
()
Ответ на: комментарий от IceWindDale

Он час так работает, а потом обламывается на сабжевой ошибке. Да, во время сборки делается git checkout.

curufinwe ★★★★★
() автор топика
Ответ на: комментарий от IceWindDale

В пустом, только что склонированном репозитории я перехожу в OpenModelica/libraries и ввоожу команду


./checkout-git.sh 'git/Modelica' 'https://github.com/modelica/Modelica.git' 'maint/2.2.2' 'd442bcd461b8db9873e33b6141bdbd37bcff9de8'

И она работает, пишет вот что:


[git/Modelica] does not exist: cloning [https://github.com/modelica/Modelica.git]
Клонирование в «git/Modelica»…
remote: Counting objects: 3383, done.
remote: Compressing objects: 100% (353/353), done.
remote: Total 3383 (delta 635), reused 434 (delta 434), pack-reused 2596
Получение объектов: 100% (3383/3383), 28.95 MiB | 1.18 MiB/s, готово.
Определение изменений: 100% (1113/1113), готово.
HEAD сейчас на d442bcd A.Haumer: corrected spelling error in documentation
Примечание: переход на «d442bcd461b8db9873e33b6141bdbd37bcff9de8».

Вы сейчас в состоянии «отделённого HEAD». Вы можете осмотреться, сделать
экспериментальные изменения и закоммитить их, также вы можете отменить
изменения любых коммитов в этом состоянии не затрагивая любые ветки и
не переходя на них.

Если вы хотите создать новую ветку и сохранить свои коммиты, то вы
можете сделать это (сейчас или позже) вызвав команду checkout снова,
но с параметром -b. Например:

  git checkout -b <имя-новой-ветки>

HEAD сейчас на d442bcd... A.Haumer: corrected spelling error in documentation
HEAD сейчас на d442bcd A.Haumer: corrected spelling error in documentation

Что значит «в состоянии отделенного HEAD»? Может в этом проблема. При сборке через make эта команда вызывается после нескольких аналогичных, и перед этим вызовом как раз возникает состояние отделенного HEAD.

curufinwe ★★★★★
() автор топика
Ответ на: комментарий от IceWindDale

После вот такой команды ломается сабжевая:


./checkout-git.sh 'git/Modelica' 'https://github.com/modelica/Modelica.git' 'v1.6' 'v1.6'

curufinwe ★★★★★
() автор топика
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от curufinwe

Что значит «в состоянии отделенного HEAD»?

Значит что не в ветке, сделан checkout отдельного коммита (detached head), в этом проблемы быть не должно

Попробовал на CentOS6 сделать

git clone https://github.com/OpenModelica/OpenModelica.git
cd libraries/
mkdir build
make Modelica

отработало без ошибок

Могу предложить повторить для свежего репозитория с включенным #!/bin/sh -x в ./checkout-git.sh

pru-mike ★★
()
Последнее исправление: pru-mike (всего исправлений: 1)
Ответ на: комментарий от pru-mike

Попробую. Сейчас добавил rm -rf git в ./checkout-git.sh, чтобы после копирования содержимого ветки все тупо удалялось, и делался checkout следующей. Вроде работает. Только вот не могу понять, что же случилось, ведь позавчера еще из коробки собралось.

curufinwe ★★★★★
() автор топика
Ответ на: комментарий от pru-mike

Насколько я понял, там алгоритм такой. Делается checkout ветки, потом все файлы копируются в другое место, делается git --reset hard, и checkout следующей ветки. Вот этот checkout следующей ветки и обламывается, оно что ли остается внутри старой, насколько я понимаю, и не видит хеша из новой. Если удалять полностью старую ветку через rm -rf, то скрипт работает. Как же оно раньше работало? Ничего не понимаю.

curufinwe ★★★★★
() автор топика
Последнее исправление: curufinwe (всего исправлений: 1)
Ответ на: комментарий от pru-mike

Вот выхлоп с sh -x


rm -rf build/ build
mkdir -p build/
make BioChem Modelica Modelica_DeviceDrivers Modelica_Synchronous SiemensPower ThermoPower ThermoSysPro VVDRlib WasteWater
make[1]: Entering directory '/home/curufinwe/Programs/asdfasdf/OpenModelica/libraries'
# Building git/BioChem
./checkout-git.sh 'git/BioChem' 'https://github.com/OpenModelica/BioChem.git' 'master' 'b5f3cb999f3cfad2bbb6fb429b496f61ecf2f628'
+ test 4 -ne 4
+ DEST=git/BioChem
+ URL=https://github.com/OpenModelica/BioChem.git
+ GITBRANCH=master
+ REVISION=b5f3cb999f3cfad2bbb6fb429b496f61ecf2f628
++ git --version
++ grep -o '[0-9.]*'
+ GIT_VERSION=2.13.0
++ echo 2.13.0
++ cut -d. -f1
+ GIT_MAJOR=2
++ echo 2.13.0
++ cut -d. -f2
+ GIT_MINOR=13
+ test 2 -gt 1
+ SINGLE_BRANCH=--single-branch
+ test -d git/BioChem
+ test -d git/BioChem
+ echo '[git/BioChem] does not exist: cloning [https://github.com/OpenModelica/BioChem.git]'
[git/BioChem] does not exist: cloning [https://github.com/OpenModelica/BioChem.git]
+ git clone --branch master --single-branch https://github.com/OpenModelica/BioChem.git git/BioChem
Cloning into 'git/BioChem'...
remote: Counting objects: 249, done.
remote: Total 249 (delta 0), reused 0 (delta 0), pack-reused 249
Receiving objects: 100% (249/249), 561.54 KiB | 323.00 KiB/s, done.
Resolving deltas: 100% (90/90), done.
+ cd git/BioChem
+ git reset --hard
HEAD is now at b5f3cb9 Fix MPL link
+ cd git/BioChem
+ git clean -fdx
+ cd git/BioChem
+ git checkout -f b5f3cb999f3cfad2bbb6fb429b496f61ecf2f628
Note: checking out 'b5f3cb999f3cfad2bbb6fb429b496f61ecf2f628'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at b5f3cb9... Fix MPL link
+ cd git/BioChem
+ git reset --hard
HEAD is now at b5f3cb9 Fix MPL link
+ cd git/BioChem
+ git clean -fdx
+ echo b5f3cb999f3cfad2bbb6fb429b496f61ecf2f628
test ! -d 'build//BioChem 1.0.1'
cp -a 'git/BioChem/BioChem' "build//BioChem 1.0.1"
echo 'Modelica 3.2.1' >> "build//BioChem 1.0.1.uses"
echo 'mpl2' > "build//BioChem 1.0.1.license"
echo '1.0.1-8-gb5f3cb9' > "build//BioChem 1.0.1.last_change"
# Building git/Modelica
./checkout-git.sh 'git/Modelica' 'https://github.com/modelica/Modelica.git' 'v1.6' 'v1.6'
+ test 4 -ne 4
+ DEST=git/Modelica
+ URL=https://github.com/modelica/Modelica.git
+ GITBRANCH=v1.6
+ REVISION=v1.6
++ git --version
++ grep -o '[0-9.]*'
+ GIT_VERSION=2.13.0
++ echo 2.13.0
++ cut -d. -f1
+ GIT_MAJOR=2
++ echo 2.13.0
++ cut -d. -f2
+ GIT_MINOR=13
+ test 2 -gt 1
+ SINGLE_BRANCH=--single-branch
+ test -d git/Modelica
+ test -d git/Modelica
+ echo '[git/Modelica] does not exist: cloning [https://github.com/modelica/Modelica.git]'
[git/Modelica] does not exist: cloning [https://github.com/modelica/Modelica.git]
+ git clone --branch v1.6 --single-branch https://github.com/modelica/Modelica.git git/Modelica
Cloning into 'git/Modelica'...
remote: Counting objects: 1729, done.
remote: Compressing objects: 100% (54/54), done.
remote: Total 1729 (delta 62), reused 49 (delta 49), pack-reused 1626
Receiving objects: 100% (1729/1729), 2.17 MiB | 613.00 KiB/s, done.
Resolving deltas: 100% (148/148), done.
Note: checking out '6a90d1a8931b29d0d60547f5b3329191ecfe2bfd'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

+ cd git/Modelica
+ git reset --hard
HEAD is now at 6a90d1a Modelica standard library, version 1.6, release date June 30, 2004.
+ cd git/Modelica
+ git clean -fdx
+ cd git/Modelica
+ git checkout -f v1.6
HEAD is now at 6a90d1a... Modelica standard library, version 1.6, release date June 30, 2004.
+ cd git/Modelica
+ git reset --hard
HEAD is now at 6a90d1a Modelica standard library, version 1.6, release date June 30, 2004.
+ cd git/Modelica
+ git clean -fdx
+ echo v1.6
test ! -d 'build//Modelica 1.6'
cp -a 'git/Modelica' "build//Modelica 1.6"
patch -d "build//" -f -p1 < 'Modelica 1.6.patch'
patching file 'Modelica 1.6/Constants.mo'
patching file 'Modelica 1.6/SIunits.mo'
patching file 'Modelica 1.6/Thermal/HeatTransfer.mo'
echo '' > "build//Modelica 1.6.uses"
echo 'modelica1.1' > "build//Modelica 1.6.license"
echo '1.6-om1' > "build//Modelica 1.6.last_change"
rm -rf "build//Modelica 1.6/.git"*
# Building git/Modelica
./checkout-git.sh 'git/Modelica' 'https://github.com/modelica/Modelica.git' 'maint/2.2.2' 'd442bcd461b8db9873e33b6141bdbd37bcff9de8'
+ test 4 -ne 4
+ DEST=git/Modelica
+ URL=https://github.com/modelica/Modelica.git
+ GITBRANCH=maint/2.2.2
+ REVISION=d442bcd461b8db9873e33b6141bdbd37bcff9de8
++ git --version
++ grep -o '[0-9.]*'
+ GIT_VERSION=2.13.0
++ echo 2.13.0
++ cut -d. -f1
+ GIT_MAJOR=2
++ echo 2.13.0
++ cut -d. -f2
+ GIT_MINOR=13
+ test 2 -gt 1
+ SINGLE_BRANCH=--single-branch
+ test -d git/Modelica
+ cd git/Modelica
+ git reset --hard
HEAD is now at 6a90d1a Modelica standard library, version 1.6, release date June 30, 2004.
+ cd git/Modelica
+ git clean -f
+ cd git/Modelica
+ git checkout -q d442bcd461b8db9873e33b6141bdbd37bcff9de8
fatal: reference is not a tree: d442bcd461b8db9873e33b6141bdbd37bcff9de8
+ git fetch --tags -fq https://github.com/modelica/Modelica.git maint/2.2.2


curufinwe ★★★★★
() автор топика
Ответ на: комментарий от pru-mike

Эх, похоже что я просто идиот, из sh -x понял пожалуй, что происходит.

Обламывается git checkout, но после этого то же самое делает git fetch - следующая команда из скрипта. Надо было просто подождать.

Судя по всему, все изначально работало, просто у меня не хватило терпения дождаться пока скачается и я стал колупать. Также дезориентировало сообщение fatal.

Позавчера все естественно собралось, я не следил, все в фоне работало.

Всем спасибо за помощь!

curufinwe ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.