add new ebuild app-emulation/harbor

This commit is contained in:
Alexander Miroshnichenko 2019-10-01 13:20:30 +03:00
parent 87408f78cb
commit b8fdb889a8
No known key found for this signature in database
GPG Key ID: E93720C6C73A77F4
5 changed files with 1424 additions and 0 deletions

View File

@ -0,0 +1 @@
DIST harbor-1.9.0.tar.gz 19457995 SHA256 4aca4c1f157b648f35e35382216723c191b948c54c7db1b5df02e0823a3a2b93 SHA512 e03868b83223309651d0f1c98137b98170a9884899fb65033f12bb44b8c12a256dae37e857c9c872614ea28e8340fd9cd0d700fc83d7840b42dcd937e01a830a WHIRLPOOL f32f123649e1f2aa0cd3d1f742ef7c9c4bb8ed4dd4d8d31f32c7dfc01aaec49b0b46ac6fb6113ca4f4c34c42ba7ef16178dc9bed47dbfbe3caea9f9388002ab8

View File

@ -0,0 +1,55 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
GOLANG_PKG_IMPORTPATH="github.com/goharbor"
GOLANG_PKG_VERSION="${PV}"
GOLANG_PKG_HAVE_TEST=1
GOLANG_PKG_BUILDPATH="/src/core /src/jobservice /src/registryctl"
GOLANG_PKG_HAVE_TEST=1
inherit user golang-single
DESCRIPTION="An open source trusted cloud native registry project that stores, signs, and scans content."
HOMEPAGE="https://goharbor.io/"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 ~x86"
IUSE="+adminserver +ui +jobservice +registryctl"
DEPEND="dev-lang/go
net-libs/nodejs
<dev-python/pyyaml-4"
RDEPEND=""
BDEPEND=""
pkg_setup() {
enewgroup ${PN}
enewuser ${PN} -1 -1 /usr/share/${PN} ${PN}
}
src_compile() {
golang-single_src_compile
cd ${S}/src/portal
python2 -c 'import sys, yaml, json; y=yaml.load(sys.stdin.read()); print json.dumps(y)' < ../../docs/swagger.yaml > swagger.json
npm config set prefix "${PWD}/usr"
npm install
npm run build_lib
npm run link_lib
node --max_old_space_size=8192 'node_modules/@angular/cli/bin/ng' build --prod
}
src_install() {
newbin ${GOBIN}/core ${PN}-core
newbin ${GOBIN}/jobservice ${PN}-jobservice
newbin ${GOBIN}/registryctl ${PN}-registryctl
insinto /usr/share/${PN}/static
doins -r ${S}/src/portal/dist/*
doins ${S}/docs/swagger.yaml
doins ${S}/src/portal/swagger.json
doins ${S}/src/portal/lib/LICENSE
}

1026
eclass/golang-common.eclass Normal file

File diff suppressed because it is too large Load Diff

157
eclass/golang-live.eclass Normal file
View File

@ -0,0 +1,157 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
# @ECLASS: golang-live.eclass
# @MAINTAINER:
# Mauro Toffanin <toffanin.mauro@gmail.com>
# @AUTHOR:
# Mauro Toffanin <toffanin.mauro@gmail.com>
# @BLURB: Eclass for fetching and unpacking HEAD shapshot of go repositories
# @DESCRIPTION:
# This eclass is written to ease the maintenance of live ebuilds
# of software written in the Go programming language.
inherit golang-common
EXPORT_FUNCTIONS src_prepare src_unpack src_configure src_compile src_install src_test
if [[ -z ${_GOLANG_LIVE_ECLASS} ]]; then
_GOLANG_LIVE_ECLASS=1
# @ECLASS-VARIABLE: EGO_LIVESTORE_DIR
# @INTERNAL
# @DESCRIPTION:
# Storage directory for Go sources.
# Ebuilds must not set it.
# @ECLASS-VARIABLE: EVCS_UMASK
# @DEFAULT_UNSET
# @DESCRIPTION:
# Set this variable to a custom umask. This is intended to be set by
# users. By setting this to something like 002, it can make life easier
# for people who do development as non-root (but are in the portage
# group), and then switch over to building with FEATURES=userpriv.
# Or vice-versa. Shouldn't be a security issue here as anyone who has
# portage group write access already can screw the system over in more
# creative ways.
# Validates use of GOLANG_PKG_DEPENDENCIES.
# NOTE: a live ebuild should not have go dependencies.
# TODO: check also if GOLANG_PKG_DEPENDENCIES is an array
if [[ -n ${GOLANG_PKG_DEPENDENCIES} ]]; then
eerror "Ebuild ${CATEGORY}/${PF} specifies GOLANG_PKG_DEPENDENCIES."
eerror "Please, fix it by removing GOLANG_PKG_DEPENDENCIES entirely."
die "Banned variable GOLANG_PKG_DEPENDENCIES is set"
fi
# @FUNCTION: golang-live_src_fetch
# @DESCRIPTION:
# Fetch a go package along with its dependencies.
golang-live_src_fetch() {
debug-print-function ${FUNCTION} "$@"
[[ -z ${EGO_LIVESTORE_DIR} ]] && die "No EGO_LIVESTORE_DIR set (golang-live_src_unpack not called?)."
# Fetch the go package
[[ -n ${EVCS_UMASK} ]] && eumask_push ${EVCS_UMASK}
set -- env \
GOPATH="${EGO_LIVESTORE_DIR}" \
go get -d -u -v -t -tags="${GOLANG_PKG_TAGS}" ${@}
echo "$@"
"$@" || die
[[ -n ${EVCS_UMASK} ]] && eumask_pop
}
# @FUNCTION: golang-live_src_unpack
# @DESCRIPTION:
# Unpack the source archive.
golang-live_src_unpack() {
debug-print-function ${FUNCNAME} "$@"
# Creates EGO_LIVESTORE_DIR if necessary.
local distdir=${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}
: EGO_LIVESTORE_DIR=${EGO_LIVESTORE_DIR:=${distdir}/go-${PN}-livesrc}
[[ -n ${EVCS_UMASK} ]] && eumask_push ${EVCS_UMASK}
if [[ ! -d ${EGO_LIVESTORE_DIR} ]]; then
(
addwrite /
mkdir -p "${EGO_LIVESTORE_DIR}"
) || die "${ECLASS}: unable to create ${EGO_LIVESTORE_DIR}"
fi
addwrite "${EGO_LIVESTORE_DIR}"
[[ -n ${EVCS_UMASK} ]] && eumask_pop
# Retrieves the GOLANG_PKG_IMPORTPATH go package.
golang-live_src_fetch "${GOLANG_PKG_IMPORTPATH}/${GOLANG_PKG_NAME}"/...
# Creates SOURCE directory.
mkdir -p "${S}" || die
}
# @FUNCTION: golang-live_src_prepare
# @DESCRIPTION:
# Prepare source code.
golang-live_src_prepare() {
debug-print-function ${FUNCNAME} "${@}"
# Sets up GoLang build environment.
golang_setup
# Imports all go dependencies
ebegin "Importing all the sources in ${GOPATH}"
cp -r "${EGO_LIVESTORE_DIR}/src" "${GOPATH}" || die "Unable to copy sources to ${GOPATH}"
eend
golang-common_src_prepare
}
# @FUNCTION: golang-live_src_configure
# @DESCRIPTION:
# Configure the package.
golang-live_src_configure() {
debug-print-function ${FUNCNAME} "$@"
golang-common_src_configure
}
# @FUNCTION: golang-live_src_compile
# @DESCRIPTION:
# Compiles the package.
golang-live_src_compile() {
debug-print-function ${FUNCNAME} "$@"
golang-common_src_compile
}
# @FUNCTION: golang-live_src_install
# @DESCRIPTION:
# Installs binaries and documents from DOCS or HTML_DOCS arrays.
golang-live_src_install() {
debug-print-function ${FUNCNAME} "$@"
golang-common_src_install
}
# @FUNCTION: golang-live_src_test
# @DESCRIPTION:
# Runs the unit tests for the main package.
golang-live_src_test() {
debug-print-function ${FUNCNAME} "$@"
golang-common_src_test
}
fi

185
eclass/golang-single.eclass Normal file
View File

@ -0,0 +1,185 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
# @ECLASS: golang-single.eclass
# @MAINTAINER:
# Mauro Toffanin <toffanin.mauro@gmail.com>
# @AUTHOR:
# Mauro Toffanin <toffanin.mauro@gmail.com>
# @BLURB: An eclass for GoLang packages not installed inside GOPATH/GOBIN.
# @DESCRIPTION:
# This eclass allows to install arbitrary packages written in GoLang which
# don't support being installed inside the Go environment.
# This mostly includes traditional packages (C/C++/GUI) embedding tools written
# in GoLang, and GoLang packages that need to be compiled with GCC instead of
# the standard Go interpreter.
#
# @EXAMPLE:
# Typical ebuild using golang-single.eclass:
#
# @CODE
# EAPI=5
#
# GOLANG_PKG_IMPORTPATH="github.com/captObvious"
# GOLANG_PKG_ARCHIVESUFFIX=".zip"
# GOLANG_PKG_HAVE_TEST
# inherit golang-single qt4-r2
#
# DESCRIPTION="Foo bar application"
# HOMEPAGE="http://example.org/foo/"
#
# LICENSE="MIT"
# KEYWORDS="~amd64 ~x86"
# SLOT="0"
# IUSE="doc qt4"
#
# CDEPEND="
# qt4? (
# dev-qt/qtcore:4
# dev-qt/qtgui:4
# )"
# RDEPEND="${CDEPEND}
# !media-gfx/bar"
# DEPEND="${CDEPEND}
# doc? ( app-doc/doxygen )"
#
# DOCS=(AUTHORS ChangeLog README "Read me.txt" TODO)
#
# PATCHES=(
# "${FILESDIR}/${P}-qt4.patch" # bug 123458
# "${FILESDIR}/${P}-as-needed.patch"
# )
#
# src_install() {
# use doc && HTML_DOCS=("${BUILD_DIR}/apidocs/html/")
# autotools-utils_src_install
# if use examples; then
# dobin "${BUILD_DIR}"/foo_example{1,2,3} \\
# || die 'dobin examples failed'
# fi
# }
#
# @CODE
inherit golang-common
EXPORT_FUNCTIONS src_prepare src_unpack src_configure src_compile src_install src_test
if [[ -z ${_GOLANG_SINGLE_ECLASS} ]]; then
_GOLANG_SINGLE_ECLASS=1
# This eclass uses GOLANG_PKG_IMPORTPATH to populate SRC_URI.
SRC_URI="${SRC_URI:="https://${GOLANG_PKG_IMPORTPATH}/${GOLANG_PKG_NAME}/archive/${GOLANG_PKG_ARCHIVEPREFIX}${GOLANG_PKG_VERSION}${GOLANG_PKG_ARCHIVESUFFIX} -> ${P}${GOLANG_PKG_ARCHIVESUFFIX}"}"
# This eclass uses GOLANG_PKG_DEPENDENCIES associative array to populate SRC_URI
# with the required snapshots of the supplied GoLang dependencies.
if [[ ${#GOLANG_PKG_DEPENDENCIES[@]} -gt 0 ]]; then
for i in ${!GOLANG_PKG_DEPENDENCIES[@]} ; do
# Collects all the tokens of the dependency.
local -A DEPENDENCY=()
while read -d $'\n' key value; do
[[ -z ${key} ]] && continue
DEPENDENCY[$key]="${value}"
done <<-EOF
$( _factorize_dependency_entities "${GOLANG_PKG_DEPENDENCIES[$i]}" )
EOF
# Debug
debug-print "${FUNCNAME}: DEPENDENCY = ${GOLANG_PKG_DEPENDENCIES[$i]}"
debug-print "${FUNCNAME}: importpath = ${DEPENDENCY[importpath]}"
debug-print "${FUNCNAME}: revision = ${DEPENDENCY[revision]}"
# Downloads the archive.
case ${DEPENDENCY[importpath]} in
github*)
SRC_URI+=" https://${DEPENDENCY[importpath]}/archive/${DEPENDENCY[revision]}${GOLANG_PKG_ARCHIVESUFFIX} -> ${DEPENDENCY[importpath]//\//-}-${DEPENDENCY[revision]}${GOLANG_PKG_ARCHIVESUFFIX}"
;;
bitbucket*)
SRC_URI+=" https://${DEPENDENCY[importpath]}/get/${DEPENDENCY[revision]}.zip -> ${DEPENDENCY[importpath]//\//-}-${DEPENDENCY[revision]}.zip"
;;
code.google*)
SRC_URI+=" https://${DEPENDENCY[project_name]}.googlecode.com/archive/${DEPENDENCY[revision]}.tar.gz -> ${DEPENDENCY[importpath]//\//-}-${DEPENDENCY[revision]}.tar.gz"
;;
*) die "This eclass doesn't support '${DEPENDENCY[importpath]}'" ;;
esac
done
fi
# @FUNCTION: golang-single_src_unpack
# @DESCRIPTION:
# Unpack the source archive.
golang-single_src_unpack() {
debug-print-function ${FUNCNAME} "${@}"
default
# Creates S.
mkdir -p "${S%/*}" || die
# Moves main GoLang package from WORKDIR into GOPATH.
if [[ "${GOLANG_PKG_IMPORTPATH}" != "${GOLANG_PKG_IMPORTPATH_ALIAS}" ]]; then
local alias_abspath="${WORKDIR}/gopath/src/${GOLANG_PKG_IMPORTPATH_ALIAS}/${GOLANG_PKG_NAME}"
mkdir -p "${alias_abspath%/*}" || die
mv "${GOLANG_PKG_NAME}-${GOLANG_PKG_VERSION}" "${alias_abspath}"/ || die
else
mv "${GOLANG_PKG_NAME}-${GOLANG_PKG_VERSION}" "${S}"/ || die
fi
}
# @FUNCTION: golang-single_src_prepare
# @DESCRIPTION:
# Prepare source code.
golang-single_src_prepare() {
debug-print-function ${FUNCNAME} "$@"
# Sets up GoLang build environment.
golang_setup
golang-common_src_prepare
}
# @FUNCTION: golang-single_src_configure
# @DESCRIPTION:
# Configure the package.
golang-single_src_configure() {
debug-print-function ${FUNCNAME} "$@"
golang-common_src_configure
}
# @FUNCTION: golang-single_src_compile
# @DESCRIPTION:
# Compiles the package.
golang-single_src_compile() {
debug-print-function ${FUNCNAME} "$@"
golang-common_src_compile
}
# @FUNCTION: golang-single_src_install
# @DESCRIPTION:
# Installs binaries and documents from DOCS or HTML_DOCS arrays.
golang-single_src_install() {
debug-print-function ${FUNCNAME} "$@"
golang-common_src_install
}
# @FUNCTION: golang-single_src_test
# @DESCRIPTION:
# Runs the unit tests for the main package.
golang-single_src_test() {
debug-print-function ${FUNCNAME} "$@"
golang-common_src_test
}
fi