oscript-library / opm

Пакетный менеджер OneScript
Apache License 2.0
66 stars 31 forks source link

opm install opm выполняется неверно и потом opm перестает быть валидным #123

Closed artbear closed 6 years ago

artbear commented 6 years ago

после установки каталог opm/src без нужных os-файлов Windows 10 64

Ниже лог-доказательство - 0.13.1 ставится, а последний (0.14.2 ?) нет :(

W:\repo\oscript-libs\opm>opm install opm@0.13.1
ИНФОРМАЦИЯ - Ошибка подключения к хабу http://hub.oscript.io <404>
ИНФОРМАЦИЯ - Скачиваю файл: opm-0.13.1.ospx
ИНФОРМАЦИЯ - Устанавливаю пакет opm
ИНФОРМАЦИЯ - Устанавливаю зависимость: fs
ИНФОРМАЦИЯ - fs уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: asserts
ИНФОРМАЦИЯ - asserts уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: json
ИНФОРМАЦИЯ - json уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: fluent
ИНФОРМАЦИЯ - fluent уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: logos
ИНФОРМАЦИЯ - logos уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: cmdline
ИНФОРМАЦИЯ - cmdline уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: tempfiles
ИНФОРМАЦИЯ - tempfiles уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: gitrunner
ИНФОРМАЦИЯ - gitrunner уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Регистрация приложения: opm
ИНФОРМАЦИЯ - Установка завершена

W:\repo\oscript-libs\opm>opm install opm
ИНФОРМАЦИЯ - Скачиваю файл: opm.ospx
ИНФОРМАЦИЯ - Устанавливаю пакет opm
ИНФОРМАЦИЯ - Устанавливаю зависимость: fs
ИНФОРМАЦИЯ - fs уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: asserts
ИНФОРМАЦИЯ - asserts уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: json
ИНФОРМАЦИЯ - json уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: fluent
ИНФОРМАЦИЯ - fluent уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: logos
ИНФОРМАЦИЯ - logos уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: cmdline
ИНФОРМАЦИЯ - cmdline уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: tempfiles
ИНФОРМАЦИЯ - tempfiles уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: gitrunner
ИНФОРМАЦИЯ - gitrunner уже установлен. Пропускаем.
КРИТИЧНАЯОШИБКА - {Модуль C:\Program Files (x86)\OneScript\lib\opm\packagedef / Ошибка в строке: 3 / Внешнее исключение (System.IO.FileNotFoundException): Файл 'C:\Program Files (x86)\OneScript\lib\opm\src\Модули\КонстантыOpm.os' не найден.}

Прикладываю полный отладочный лог opm install opm opm-install-opm.txt

@khorevaa @nixel2007 может быть, вам поможем разобраться с проблемой.

artbear commented 6 years ago

Возможно, что в коде идет обращение к сценарию КонстантыOpm уже после удаления файлов opm. Тогда поможет предварительное кеширование результатов вызова этого скрипта.

artbear commented 6 years ago

Пока некогда, может быть, вечером подключусь и сам посмотрю проблему и решение :)

khorevaa commented 6 years ago

C:\Program Files (x86)\OneScript\lib\opm\src\Модули\КонстантыOpm.os данного файла и в правду нет и не должно быть он переехал в C:\Program Files (x86)\OneScript\lib\opm\src\core Модули\КонстантыOpm.os Вопрос почему он есть в packagedef... (видимо вызов и определение версии) Ух как хочется packagedef.json <<--- из-за того что там может быть код и этот файл подключается как сценарий opm невозможно собрать через -make

asosnoviy commented 6 years ago

Ух как хочется packagedef.json

package.json а в packagedef код который его инклюдит?

khorevaa commented 6 years ago

Просто package.json или packagedef в формате package.json))

asosnoviy commented 6 years ago

Просто package.json или packagedef в формате package.json))

Слишком просто )

khorevaa commented 6 years ago

@artbear У тебя явно ставится не 0.14.2 Вот как выглядит лог установки 0.14.2

Aleksej:opm khorevaa$ opm install opm
ИНФОРМАЦИЯ - Скачиваю файл: opm.ospx
ИНФОРМАЦИЯ - Устанавливаю пакет opm
ИНФОРМАЦИЯ - Регистрация приложения: opm
ИНФОРМАЦИЯ - Установка завершена
Aleksej:opm khorevaa$ opm version
0.14.2

Это я к тому что при установке 0.14.2 - не устанавливаются зависимости совсем. Они идут вместе с пакетом!!!!

khorevaa commented 6 years ago

@asosnoviy уж очень хочется! Можно тогда бы было автоматически менять при выпуске релиза! А не каждый раз ручками!! (( Да и зависимости разработки ух как требуются - не хочу я включать в зависимости пакета 1bdd и 1testruuner. Приходится через скрипт доустанавливать в ручную

nixel2007 commented 6 years ago

@Khorevaa зависимости опм не ставятся только если ставить 0.14.2 какой-либо 0.14 версией. А 0.13 ничего не знает про установку библиотек из oscript_modules

nixel2007 commented 6 years ago

Нужно выяснить, почему работающий опм после выполнения установки реинициализирует описание пакета из 0.13.

Но ещё раз повторяю, проблема не в 14 версии, а в некорректной работе 13ой.

khorevaa commented 6 years ago

@artbear @nixel2007 если ставить 0.14 версией 0.14.х Тогда лог выглядит вот так

leksej:opm khorevaa$ opm install opm
ИНФОРМАЦИЯ - Скачиваю файл: opm.ospx
ИНФОРМАЦИЯ - Устанавливаю пакет opm
ИНФОРМАЦИЯ - Регистрация приложения: opm
ИНФОРМАЦИЯ - Установка завершена
ИНФОРМАЦИЯ - Устанавливаю зависимость: <fs> из каталога локальных зависимостей
ИНФОРМАЦИЯ - <fs> уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: <asserts> из каталога локальных зависимостей
ИНФОРМАЦИЯ - <asserts> уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: <json> из каталога локальных зависимостей
ИНФОРМАЦИЯ - <json> уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: <fluent> из каталога локальных зависимостей
ИНФОРМАЦИЯ - <fluent> уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: <logos> из каталога локальных зависимостей
ИНФОРМАЦИЯ - <logos> уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: <cmdline> из каталога локальных зависимостей
ИНФОРМАЦИЯ - <cmdline> уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: <tempfiles> из каталога локальных зависимостей
ИНФОРМАЦИЯ - <tempfiles> уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: <gitrunner> из каталога локальных зависимостей
ИНФОРМАЦИЯ - <gitrunner> уже установлен. Пропускаем.
khorevaa commented 6 years ago

@artbear @nixel2007 Получается тогда это битая версия 0.13 - как минимум

nixel2007 commented 6 years ago

о чем я и говорю уже месяц)

khorevaa commented 6 years ago

@nixel2007 @artbear В 0.13 версии КешУстановленныхПакетов перечитывает состав кеша при установки зависимостей. Возможно в этом проблема Хотя в 0.14 версии поведение класса не менялось

artbear commented 6 years ago

@khorevaa @nixel2007 Конечно, проблема в обновлении с 0.13.1 на 0.14

Нужно как-то это подправить.

khorevaa commented 6 years ago

@nixel2007 Провожу дальше исследование После распаковки пакета происходить считывает обработчиков из packagedef. При этом данный файл уже может быть подменен см тут

artbear commented 6 years ago

В общем, все просто image

Я поставил версию 0.13.1 ее исследовал и выявил, что не удаляется файл packagedef

Добавил указанную строку и все заработало. 0.13.1 через opm install opm ставит последнюю 0.14.2

artbear commented 6 years ago

@khorevaa @nixel2007 Теперь осталось решить главное - как клиентам с 0.13.1 поступить?

Предлагаю выпустить релиз 0.13.2 а клиенты, у кого с opm install opm возникнут проблемы

Фикс-ветку 0-13-1-fix я запушил.

khorevaa commented 6 years ago

@artbear @nixel2007 Думаю аналогичные изменения нужны и для версии 0.14.х Принципиально то код не менялся

nixel2007 commented 6 years ago

@artbear разве нельзя добавить перехватчик в opm 0.14.x, который будет удалять старый packagedef ПередУстановкой?

nixel2007 commented 6 years ago

@artbear просто никто в здравом уме не догадается, что перед апдейтом на 0.14 надо сначала сделать апдейт на 0.13.2. все равно в гиттер придут.

nixel2007 commented 6 years ago

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

EvilBeaver commented 6 years ago

Может патч какой выпустить? Типа не "сначала сделайте opm install 13.2, а потом install 14", а прямо отдельный какой-то трюк типа "вот так сделайте и все будет зашибись"...

artbear commented 6 years ago

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

Т.е. из 2х упомянутых тобой кейсов не работает только первый кейс. А со вторым все в порядке. Я проверил его сразу.

А вообще достаточно исправить 0.14 , как я исправил, удаляя packagedef .

И баг будет исправлен.

Пока что в метро, не могу исправить.

пн, 9 июл. 2018 г., 0:38 Nikita Gryzlov notifications@github.com:

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

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/oscript-library/opm/issues/123#issuecomment-403319177, or mute the thread https://github.com/notifications/unsubscribe-auth/ACyRcVJ0l3_KWQD6ILeNSJ0RWg38tQKDks5uEnvHgaJpZM4VGv8I .

asosnoviy commented 6 years ago

А может перевыпустить релиз движка с opm 14.2 на борту ?

"вот так сделайте и все будет зашибись"...

Переставьте движок и будет все зашибись...

EvilBeaver commented 6 years ago

А оно может не сработать. Обычно флажок библиотек снимают, чтобы существующий lib не похерить

nixel2007 commented 6 years ago

@artbear

в старом пакете есть packagedef, а в новом пакете его нет.

как так? О_О в новом opm тоже есть packagedef. только содержимое у него поменялось

asosnoviy commented 6 years ago

Ну никак не получается поломать так как у @artbear =( По другому получается, а так нет...

artbear commented 6 years ago

А нет ли здесь бага движка с Архив.ИзвлечьВсе, когда packagedef не заменяется версией из архива?

artbear commented 6 years ago

В https://github.com/oscript-library/opm/pull/124 исправил проблему, когда

что и наблюдалось в текущем ишузе.

Предлагаю выпустить релиз 0.14.3

artbear commented 6 years ago

в старом пакете есть packagedef, а в новом пакете его нет.

как так? О_О в новом opm тоже есть packagedef. только содержимое у него поменялось

@nixel2007 тут важно наличие packagedef в папки установки пакета и отсутствие packagedef в ospx-поставке пакета

а именно так сейчас и есть в opm :)

nixel2007 commented 6 years ago

Предлагаю выпустить релиз 0.14.3

Твой фикс никак не поможет обновиться с 0.13.

artbear commented 6 years ago

для обновления с 0.13 простой рецепт:

а мой фикс поможет решить описанную мной выше проблему https://github.com/oscript-library/opm/issues/123#issuecomment-404199831

nixel2007 commented 6 years ago

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

khorevaa commented 6 years ago

@nixel2007 А раньше в поставку либы/ приложения разве входил файл packagedef?

nixel2007 commented 6 years ago

он с движком идет. т.к. движок собирает либы гит-клоном, а не из ospx

чт, 12 июл. 2018 г. в 15:04, Aleksey Khorev notifications@github.com:

@nixel2007 https://github.com/nixel2007 А раньше в поставку либы/ приложения разве входил файл packagedef?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/oscript-library/opm/issues/123#issuecomment-404489336, or mute the thread https://github.com/notifications/unsubscribe-auth/ABFJKNN08qXHcX6bcSxogDUGqjg8gv8Nks5uFztGgaJpZM4VGv8I .

nixel2007 commented 6 years ago

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

чт, 12 июл. 2018 г. в 15:04, Aleksey Khorev notifications@github.com:

@nixel2007 https://github.com/nixel2007 А раньше в поставку либы/ приложения разве входил файл packagedef?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/oscript-library/opm/issues/123#issuecomment-404489336, or mute the thread https://github.com/notifications/unsubscribe-auth/ABFJKNN08qXHcX6bcSxogDUGqjg8gv8Nks5uFztGgaJpZM4VGv8I .

EvilBeaver commented 6 years ago

движок сейчас не собирает гит-клоном, а как раз берет ospx

artbear commented 6 years ago

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

Никита, ты чего? я же уже сделал это :) сообщил в https://github.com/oscript-library/opm/issues/123#issuecomment-404199831

nixel2007 commented 6 years ago

@artbear ещё раз. Ты пофиксил класс установки пакета. Который будет отрабатывать только в новом opm. А я говорю поправить манифест самого opm, который отрабатывает и в старом опм тоже.

EvilBeaver commented 6 years ago

А я говорю поправить манифест самого opm, который отрабатывает и в старом опм тоже.

Можешь перевести? Что сделать надо? Вот это?:

ну и да, второй вариант - просто добавить packagedef во включаемые файлы

nixel2007 commented 6 years ago

@EvilBeaver

Можешь перевести? Что сделать надо? Вот это?: ну и да, второй вариант - просто добавить packagedef во включаемые файлы

По идее, это как раз решит проблему неудаления лишнего packagedef. Просто потому, что он перезатрется при установке новой версии пакета со включенным packagedef. Но надо протестить. Я только вечером смогу :(

artbear commented 6 years ago

Доктор, почему меня все игнорируют :(

а ведь я уже исправил аж в ДВУХ ветках проблему неудаления лишнего packagedef :( и этим исправлениям уже несколько дней!

ОДНА строка - весьма тупое удаление packagedef

в отличие от некоторых :) я как раз уже все протестил, выявил проблему, повторил ее, исправил на найденном кейсе, и убедился, что проблемы нет

nixel2007 commented 6 years ago

Артур, я тебе еще раз говорю. Твое удаление сделано в классе, которого нет у пользователей 0.13.х Оно у них никак не появится!

artbear commented 6 years ago

для 0.13 я уже дал рецепт - если не ставится, удаляйте файла и просто еще раз обновитесь.

я уже писал, что реально-то проблема не так актуальна.

сколько таких пакетов? и большая часть только у контрибьюторов, у которых есть packadef, которого, кстати, в чистом 0.13 нету

nixel2007 commented 6 years ago

для 0.13 я уже дал рецепт - если не ставится, удаляйте файла и просто еще раз обновитесь.

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