From bd16b61a2be9d158778244c3e2b184a65a496e5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?coadde=20=5BM=C3=A1rcio=20Alexandre=20Silva=20Delgado=5D?= Date: Sat, 29 Aug 2015 08:22:51 -0300 Subject: replace all db-* exec with xbs, create all db-* compability, and add DISTRO_TYPE on all platform configs --- src/bin/xbs | 206 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 src/bin/xbs (limited to 'src/bin/xbs') diff --git a/src/bin/xbs b/src/bin/xbs new file mode 100644 index 0000000..7b5bea6 --- /dev/null +++ b/src/bin/xbs @@ -0,0 +1,206 @@ +#!/bin/bash +# X Build System +# Copyright (C) 2012-2015 Parabola Hackers + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +############################################################## + +xbs_error_platform-not-found() { + die "This %s plataform doesn't exist" "${plataform}" +} + +xbs_rename-variable_platform-config() { + # Rename ("${_plataform}") to easily script usage + _platform="${_platform/\//+}" + _platform="${_platforms,,}" +} + +xbs_source_platform-config() { + source "${PLATAFORM_CONFIG}" +} + +xbs_variable_platform-config() { + PLATAFORM_CONFIG="${CONFIG_DIR}/xbs.d/${_platform}.cfg" +} + +xbs-add() { + xbs-add_check-permission + xbs-pkg + for 'tarch' in "${tarches[@]}"; do + for 'pkg_file' in "${pkg_files[@]}"; do + if [[ ! -f "${repo_path}/${arch}/${pkg_file##*/}" ]]; then + die "Package file %s not found in %s" "${pkg_file##*/}" "${repo_path}/${arch}/" + else + msg "Adding %s to [%s]..." "${pkg_file}" "${repo}" + fi + done + pkg_repo_add "${repo}" "${tarch}" "${pkg_files[@]}" + repo_unlock "${repo}" "${tarch}" + done +} + +xbs-add_check-permission() { + if ! check_repo_permission "${repo}"; then + die "You don't have permission to add packages to %s" "${repo}" + fi +} + +xbs-init() { + mkdir -p -- "${PKG_MAIN_POOLS}" "${SRC_MAIN_POOLS}" "${CLEANUP_DESTDIR}" "${SOURCE_CLEANUP_DESTDIR}" "${STAGING}" + # "${BIN_DIR}/db-repo-add" "${_platform}" "${PKG_REPOS[@]}" +} + +xbs-pkg() { + repo_path="${REPO_DIR}/${repo}/os" + if [ "${arch}" == "{any}" ]; then + tarches=("${ARCHES[@]}") + else + tarches=("${arch}") + fi + for 'tarch' in "${tarches[@]}"; do + if [[ ! -d "${repo_path} ]]; then + die "This [%s] doesn't exist" "${repo}" + elif [[ ! -d "${repo_path}/${tarch}" ]]; then + die "This [%s] doesn't support %s archictecture" "${repo}" "${arch}" + else + repo_lock "${repo}" "${tarch}" || exit 1 + fi + done +} + +xbs-rm() { + xbs-rm_check-permission + xbs-pkg + for 'tarch' in "${tarches[@]}"; do + for 'pkg_name' in "${pkg_names[@]}"; do + msg "Removing %s from [%s]..." "${pkg_name}" "${repo}" + done + pkg_repo_rm "${repo}" "${tarch}" "${pkgnames[@]}" + repo_unlock "${repo}" "${tarch}" + done +} + +xbs-rm_check-permission() { + if ! check_repo_permission "${repo}"; then + die "You don't have permission to remove packages to %s" "${repo}" + fi +} + + +xbs-sync() { + +} + +############################################################## + +CONFIG_DIR="$(dirname "$(readlink -e "$0")")/etc" + +source "${CONFIG_DIR}/xbs.cfg" +source "${SHARE_DIR}/xbs-functions" + +if [ "${#}" -eq '0' ]; then + msg "usage: %s {add,init,rm,sync} ..." "${0##*/}" +fi + +rules=${1} + +case "${rules}" in + add) + # Add package to repository defined in config + if [ "${#}" -lt '5' ]; then + msg "usage: %s add ..." "${0##*/}" + exit 1 + } + platform="${2}" + repo="${3}" + arch="${4}" + pkg_files=("${@:5}") + for '_platform' in "${platforms[@]}"; do + xbs_rename-variable_platform-config + xbs_variable_platform-config + if [ -f "${PLATAFORM_CONFIG}" ]; then + xbs_source_platform-config + xbs-add + else + xbs_error_platform-not-found + fi + done + ;; + init) + # Creates the repository structure defined in config + platforms=("${@:2}") + if [ "${#}" -lt '2' ]; then + for '_platform' in "${PLATFORMS[@]}"; do + xbs_variable_platform-config + xbs_source_platform-config + xbs-init + done + else + for '_platform' in "${platforms[@]}"; do + xbs_rename-variable_platform-config + xbs_variable_platform-config + if [ -f "${PLATAFORM_CONFIG}" ]; then + xbs_source_platform-config + xbs-init + else + xbs_error_platform-not-found + fi + done + fi + ;; + rm|remove) + # Remove package to repository defined in config + if [ "${#}" -lt '5' ]; then + msg "usage: %s rm ..." "${0##*/}" + exit 1 + fi + platform="${2}" + repo="${3}" + arch="${4}" + pkg_names=("${@:5}") + for '_platform' in "${platforms[@]}"; do + xbs_rename-variable_platform-config + xbs_variable_platform-config + if [ -f "${PLATAFORM_CONFIG}" ]; then + xbs_source_platform-config + xbs-rm + else + xbs_error_platform-not-found + fi + done + ;; + sync|import) + # Import and sync the derivated repositories based on info contained in repo.db files + platforms=("${@:2}") + if [ "${#}" -lt '2' ]; then + for '_platform' in "${DD_PLATFORMS[@]}"; do + xbs_variable_platform-config + xbs_source_platform-config + xbs-sync + done + else + for '_platform' in "${platforms[@]}"; do + xbs_rename-variable_platform-config + xbs_variable_platform-config + if [ -f "${PLATAFORM_CONFIG}" && "${DISTRO_TYPE}" == 'derivated' ]; then + xbs_source_platform-config + xbs-sync + else + xbs_error_platform-not-found + fi + done + fi + ;; +esac -- cgit v1.2.3