LINUX.ORG.RU

Помогите написать Ebuild

 ,


0

1

!!! getFetchMap(): 'net-p2p/tixati-3.19' SRC_URI has no file name: 'https://download1.tixati.com/download/'

Не работает это

MY_P="
	x86? ( ${P}-${PKGREL}.i686.manualinstall )
	amd64? ( ${P}-${PKGREL}.x86_64.manualinstall )
"
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit desktop

DESCRIPTION="Tixati P2P Client"
HOMEPAGE="http://www.tixati.com"

PKGREL=1
MY_P="
	x86? ( ${P}-${PKGREL}.i686.manualinstall )
	amd64? ( ${P}-${PKGREL}.x86_64.manualinstall )
"

SRC_URI="
	https://download1.tixati.com/download/${MY_P}.tar.gz
	https://download2.tixati.com/download/${MY_P}.tar.gz
	https://download3.tixati.com/download/${MY_P}.tar.gz
"

LICENSE=""
SLOT="0"
KEYWORDS="~amd64"
RESTRICT="mirror bindist"
IUSE=""

S="${WORKDIR}/${MY_P}"

QA_PREBUILT="
	opt/${PN}/${PN}
"

src_install() {
	dodoc *.txt
	doicon ${PN}.png
	domenu ${PN}.desktop

	into /opt/${PN}
	dobin ${PN}
}

Перемещено hobbit из general

Могу предположить что эти «x86?» «amd64?» (если такое вообще допустимо) должны быть в SRC_URI. Иначе получается вообще чушь. А вообще посмотри как у других сделано.

Вот это: ${MY_P} означает дословную подстановку на это место содержимого MY_P (которое у тебя начинается с перевода строки).

То есть вот этот код

MY_P="
	x86? ( ${P}-${PKGREL}.i686.manualinstall )
	amd64? ( ${P}-${PKGREL}.x86_64.manualinstall )
"

SRC_URI="
	https://download1.tixati.com/download/${MY_P}.tar.gz
	https://download2.tixati.com/download/${MY_P}.tar.gz
	https://download3.tixati.com/download/${MY_P}.tar.gz
"
Эквивалентен такому:
SRC_URI="
	https://download1.tixati.com/download/
	x86? ( ${P}-${PKGREL}.i686.manualinstall )
	amd64? ( ${P}-${PKGREL}.x86_64.manualinstall )
.tar.gz
	https://download2.tixati.com/download/
	x86? ( ${P}-${PKGREL}.i686.manualinstall )
	amd64? ( ${P}-${PKGREL}.x86_64.manualinstall )
.tar.gz
	https://download3.tixati.com/download/
	x86? ( ${P}-${PKGREL}.i686.manualinstall )
	amd64? ( ${P}-${PKGREL}.x86_64.manualinstall )
.tar.gz
"
По одному виду которого ясно что с ним то-то не так.

bash я тоже не знаю.

Причём тут баш?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)

PKGREL это не из генты. В генте другие переменные - https://devmanual.gentoo.org/ebuild-writing/variables/index.html

«В документации Arch Linux по PKGBUILD (файлы сборки пакетов Arch Linux) упоминается, что переменные pkgname, pkgver, pkgrel и arch являются обязательными переменными для PKGBUILD. Переменная pkgrel используется для указания версии сборки пакета и позволяет пользователям различать между собой разные сборки пакетов.»

В Gentoo это ${PV}

MY_P тоже не для того, чтобы держать в ней названия файлов

Насчёт того, что альтернативы над бы в SRC_URI вставить - это хорошее замечание выше.

SRC_URI="
	x86? ( https://download1.tixati.com/download/${PN}-${PV}.i686.manualinstall.tar.gz )
	amd64? ( https://download1.tixati.com/download/${PN}-${PV}.x86_64.manualinstall.tar.gz )
"
Shushundr ★★★
()
Ответ на: комментарий от cheyota

Ну, отдельно выстави SRC_URI, как в примере на странице https://devmanual.gentoo.org/ebuild-writing/variables/index.html#src_uri

потом отдельно выстави значение S, как надо (не обязательно, чтобы внутри S использовалось MY_P)

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

«A use-conditional group, which consists of an optional exclamation mark, followed by a use flag name, followed by a question mark, followed by whitespace, followed by an open parenthesis, followed by whitespace, followed by zero or more of (a dependency item of any kind followed by whitespace), followed by a close parenthesis. More formally: use-conditional ::= ’!’? flag-name ’?’ whitespace ’(’ whitespace (item whitespace)* ’)’. Permitted in all specification style variables

Списка этих «specification style variables» я не нашел. И входит ли туда S непонятно.

Можно ещё как-то так попробовать:

src_configure() {
  if use flag1; then
    # Set ${S} to a specific directory
    S="${WORKDIR}/source1"
  elif use flag2; then
    # Set ${S} to another directory
    S="${WORKDIR}/source2"
  else
    # Set ${S} to the default directory
    S="${WORKDIR}/default_source"
  fi
  ...
}

Только я смотрю, что у тебя проверять-то надо не USE-флаги, а архитектуры… Как это сделать, я не знаю. Ну или можно в строку IUSE="" добавить USE-флаги, соответствующие архитектурам.

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

Никак, все страшно выглядит и лучше совсем не делать.
Самое простое это взять deb архив, у него будут простые пути после распаковки.
Но цель у меня это понять как делать разные S и сделать красиво.

call-monster
()
Ответ на: комментарий от call-monster

понять как делать разные S

Выше же написан вариант с ифами (if).

и сделать красиво

Ну можно поместить не в src_configure, а в src_prepare.
Всё по документации, что тут некрасивого?

Shushundr ★★★
()