SliTaz SliTaz Forum

You are not logged in.

#1 2017-02-10 12:21:24

I-Jurij
Member
Registered: 2015-10-10
Posts: 148

Где ошибка в рецепте?

Сочинял рецепт для firefox-esr, сначала как скрипт, и скрипт в терминале (bash) отрабатывал без ошибок.

Поместил все в receipt и tazpkg ругается на неправильный синтаксис в стр.49 (syntax error: unterminated quoted string), это последнее else в pre_install. В чем подвох?

[c]#SliTaz package receipt.
PACKED_SIZE="16.0K"
UNPACKED_SIZE="40.0K"
PACKAGE="firefox-esr"
VERSION="latest"
CATEGORY="network"
SHORT_DESC="User friendly, secure and fast web browser."
MAINTAINER="pankso@slitaz.org"
LICENSE="MPL2"
TARBALL="$PACKAGE-$VERSION.tar.bz2"
WEB_SITE="http://www.mozilla.org/firefox"
#WGET_URL="https://download.mozilla.org/?product=firefox-esr-latest&os=linux&lang=en-US"
TAGS="web-browser"

#DEPENDS="gtk+ dbus dbus-glib glib jpeg xorg-libX11 xorg-libXdamage \
alsa-lib xorg-libXt libevent libvpx pango nss"
DEPENDS="gtk+ dbus glib jpeg xorg-libX11 xorg-libXdamage alsa-lib xorg-libXt libvpx pango nss"

# Rules to configure and make the package.
#compile_rules()
#{
#}

# Rules to gen a SliTaz package suitable for Tazpkg.
genpkg_rules()
{
    echo "genpkg-rules ..."
}

# Pre and post install commands for Tazpkg.
pre_install()
{
LN=$LANG
L=${LN:0:2}
if $L=C
then
    wget --no-check-certificate -c -O firefox-esr-latest.tar.bz2 "https://download.mozilla.org/?product=firefox-esr-latest&os=linux&lang=en-US"
else
    if $L=pt
        then
            LA=${LN:0:5}
            wget --no-check-certificate -c -O firefox-esr-latest.tar.bz2 "https://download.mozilla.org/?product=firefox-esr-latest&os=linux&lang=$LA"
        else
            if    $L=es
                then
                LA=${LN:0:5}
                wget --no-check-certificate -c -O firefox-esr-latest.tar.bz2 "https://download.mozilla.org/?product=firefox-esr-latest&os=linux&lang=$LA"
                else
                wget --no-check-certificate -c -O firefox-esr-latest.tar.bz2 "https://download.mozilla.org/?product=firefox-esr-latest&os=linux&lang=$L"
            fi
    fi
fi
mkdir -p /opt/$PACKAGE-$VERSION
tar -xvf $TARBALL -C /opt/$PACKAGE-$VERSION
}

post_install()
{
chown -R -v root:root /opt/$PACKAGE-$VERSION
ln -s /opt/$PACKAGE-$VERSION/firefox /usr/bin/firefox
}

pre_remove()
{

}

post_remove()
{
    rm -r /opt/$PACKAGE-$VERSION
    rm /usr/bin/firefox
}[/c]

Offline

#2 2017-02-10 13:38:48

I-Jurij
Member
Registered: 2015-10-10
Posts: 148

Re: Где ошибка в рецепте?

Разделил: скриптовую часть убрал в /usr/bin/get-firefox-esr-latest. Так все пашет.

Offline

#3 2017-02-10 15:11:35

lexeii
Administrator
Registered: 2012-03-21
Posts: 1,853

Re: Где ошибка в рецепте?

Привет, Юрий.

Закомментирована только первая строка, вторая будет исполняться как команды:

[c]#DEPENDS="gtk+ dbus dbus-glib glib jpeg xorg-libX11 xorg-libXdamage \
alsa-lib xorg-libXt libevent libvpx pango nss"[/c]
Ошибка в записи первого условия:

[c]if $L=C[/c]
Нужно так:

[c]if [ "$L" == "C" ][/c]
Проблемы с загрузкой файлов по протоколу https при помощи Busybox Wget давно решены, поэтому можно удалять старый костыль:

[c]wget --no-check-certificate[/c]
Да и проверка сертификата это не просто прихоть...

Посмотри побольше разных get-пакетов, как там всё делается. Твой подход имеет право на жизнь, но очень необычный.

Offline

#4 2017-02-10 15:22:03

I-Jurij
Member
Registered: 2015-10-10
Posts: 148

Re: Где ошибка в рецепте?

Спасибо!

Подход не работает для многих локалей (по крайней мере пока).

--no-check-certificate наоборот добавил, без этого не работало.

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

То, что сделал, выкладываю почти всегда - кому-то еще пригодится.

Offline

#5 2017-02-10 15:32:25

lexeii
Administrator
Registered: 2012-03-21
Posts: 1,853

Re: Где ошибка в рецепте?

У меня работает без [c]--no-check-certificate[/c].

Установи [c]cacerts[/c] и [c]openssl[/c] — лишним точно не будет. Сейчас каждый второй сайт работает через https. Да и в нете вопрос приватности муссируется уже не первый год. Firefox помечает сайты с http как ненадежные (если на странице есть любое поле ввода) и т.д.

Любые пакеты Firefox лучше качать отсюда (официальный репозиторий): http://ftp.mozilla.org/pub/firefox/releases/ и не пользоваться адресами типа "https://download.mozilla.org/?product=", которые могут отдавать разное (больше контроль над тем, что ты загрузишь), но при этом тебе придется самому указывать версию того, что ты хочешь загрузить.

Offline

#6 2017-02-10 15:42:06

I-Jurij
Member
Registered: 2015-10-10
Posts: 148

Re: Где ошибка в рецепте?

Так все с этого ftp и началось: http://ftp.mozilla.org/pub/firefox/releases/latest-esr/README.txt

Offline

#7 2017-02-10 21:07:16

lexeii
Administrator
Registered: 2012-03-21
Posts: 1,853

Re: Где ошибка в рецепте?

Просто я долгое время возился с рецептами пакетов и у меня появились определенные (пред)убеждения smile Такие как: каждый пакет имеет версию; по определенному указанному адресу из интернета можно скачать определенную указанную версию исходников для этого пакета; сборка пакета должна быть повторимой. А вот исходники пакета "cacerts" обновляются и при следующей пересборке, не меняя рецепт, мы получим другое содержимое пакета...

Твой подход с постоянно обновляемым ESR, конечно же, имеет право на жизнь smile И даже более того, я подумываю, не изменить ли мне рецепты пакетов firefox-official-*, чтобы они пересобирались с последними версиями. Мне кажется, это очень хорошее исключение из правил.

Offline

#8 2017-02-11 11:17:48

I-Jurij
Member
Registered: 2015-10-10
Posts: 148

Re: Где ошибка в рецепте?

В сборку не влезал совсем. Это просто перепаковка в формат slitaz.

И зачем собирать заново, если есть готовая сборка?

i486 и совсем старое железо?

Offline

#9 2017-02-11 13:32:25

lexeii
Administrator
Registered: 2012-03-21
Posts: 1,853

Re: Где ошибка в рецепте?

Последний раз рецепт для Firefox обновлялся 24 ноября 2013 года под версию 17.0.11esr: http://hg.slitaz.org/wok/rev/789fdff5190c

С тех пор никто не обновлял Firefox, компилируемый из исходников на сборочном боте SliTaz: http://cook.slitaz.org/cooker.cgi?pkg=firefox

Компиляция из исходников — это способ получить только то, что нужно, изменяя параметры компиляции.

Хотя... Вот, например, в размере пакетов это не различается:

[*]20 МБ официальный пакет в tar.bz2: http://ftp.mozilla.org/pub/firefox/releases/17.0.11esr/linux-i686/en-US/

[*]15,5 МБ пакет SliTaz в cpio.lzma (жмёт лучше чем tar.bz2): http://cook.slitaz.org/cooker.cgi?pkg=firefox

Да, еще момент есть. Уже некоторое время готовые сборки Firefox требуют GTK+3. А многие всё никак не могут его принять на своей системе... Не так давно можно было собрать Firefox из исходников, исключив GTK+3. Как сейчас — не знаю, мне неважно.

Offline

#10 2017-02-11 14:54:36

I-Jurij
Member
Registered: 2015-10-10
Posts: 148

Re: Где ошибка в рецепте?

Если при компиляции можно получить, что нужно - в ней есть смысл. Это ясно. Но если без gtk3 firefox не соберешь, а готовый бинарный браузер запускается без gtk+3 в системе, значит, все, что ему нужно - у него есть.

И смысл сборки?

Я gtk3 тоже не жалую. Как, впрочем, и qt5. Все упрощают, упрощают что-то, а в действительности программы растут и растут, и в размере и в аппетите.

Offline

#11 2017-02-11 15:14:58

lexeii
Administrator
Registered: 2012-03-21
Posts: 1,853

Re: Где ошибка в рецепте?

Не совсем уловил мысль:

если без gtk3 firefox не соберешь, а готовый бинарный браузер запускается без gtk+3 в системе, значит, все, что ему нужно - у него есть.

И смысл сборки?

Сейчас ему нужен GTK+3 во время сборки из исходников (ну, я так думаю ☺) и ему нужен GTK+3 во время работы:

[c]ldd /opt/mozilla/firefox/libmozgtk.so:
    linux-gate.so.1 =>  (0xffffe000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xb774a000)
    libdl.so.2 => /lib/libdl.so.2 (0xb7745000)
    libgtk-3.so.0 => /usr/lib/libgtk-3.so.0 (0xb7178000)
    libgdk-3.so.0 => /usr/lib/libgdk-3.so.0 (0xb7104000)
    libc.so.6 => /lib/libc.so.6 (0xb6f8d000)
    /lib/ld-2.14.1.so (0xb777e000)
    libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb6f8a000)
    libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb6f81000)
    libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb6f78000)
    libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb6f6c000)
    libXi.so.6 => /usr/lib/libXi.so.6 (0xb6f5d000)
    libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0xb6f5a000)
    libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0xb6f57000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb6f52000)
    libcairo-gobject.so.2 => /usr/lib/libcairo-gobject.so.2 (0xb6f4c000)
    libcairo.so.2 => /usr/lib/libcairo.so.2 (0xb6e6a000)
    libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0xb6de2000)
    libxcb-shm.so.0 => /usr/lib/libxcb-shm.so.0 (0xb6ddf000)
    libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0xb6dd6000)
    libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb6dce000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0xb6dbe000)
    libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0xb6d9f000)
    libatk-bridge-2.0.so.0 => /usr/lib/libatk-bridge-2.0.so.0 (0xb6d74000)
    libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0xb6d53000)
    libatspi.so.0 => /usr/lib/libatspi.so.0 (0xb6d29000)
    libSM.so.6 => /usr/lib/libSM.so.6 (0xb6d22000)
    libuuid.so.1 => /lib/libuuid.so.1 (0xb6d1d000)
    libICE.so.6 => /usr/lib/libICE.so.6 (0xb6d07000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0xb6beb000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb6bcb000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0xb6bc8000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb6bc3000)
    libdbus-1.so.3 => /usr/lib/libdbus-1.so.3 (0xb6b7f000)
    libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb6b6d000)
    libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb6b29000)
    libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb6b27000)
    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb6af5000)
    libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb6ad4000)
    libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0xb6a68000)
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb69c7000)
    libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0xb69b6000)
    libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb689b000)
    libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0xb672e000)
    libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb672a000)
    libz.so.1 => /usr/lib/libz.so.1 (0xb6717000)
    libresolv.so.2 => /lib/libresolv.so.2 (0xb66fe000)
    libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb66bc000)
    libffi.so.6 => /usr/lib/libffi.so.6 (0xb66b6000)
    libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb65c2000)
    libpcre.so.1 => /usr/lib/libpcre.so.1 (0xb6562000)
    librt.so.1 => /lib/librt.so.1 (0xb6559000)
    libm.so.6 => /lib/libm.so.6 (0xb652c000)
    libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0xb6529000)[/c]
Я читал где-то на форумах, что ребята пересобирали Firefox с определенными ключами, так что Firefox не требовал GTK+3 ни во время компиляции, ни во время работы. Не знаю насколько это актуально сейчас...

Offline

#12 2017-02-11 17:44:22

I-Jurij
Member
Registered: 2015-10-10
Posts: 148

Re: Где ошибка в рецепте?

Да, действительно, официальный firefox собран с gtk3 и требует его, firefox-esr - там нет этого костыля libmozgtk.

У парней из arch есть все (или почти все): firefox 51.0.1 gtk2 https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=firefox-gtk2

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.021 seconds, 7 queries executed - Memory usage: 1.57 MiB (Peak: 1.77 MiB) ]