#! /bin/sh #---------------------------------------------------------------------------- # create-developer-eislist - generates an eis-list.txt for all packages # # Creation : 2007-09-18 hbfl # Last Update: $Id$ # # Copyright (c) 2007-2016 the eisfair team, team(at)eisfair(dot)org # # Usage : create-developer-eislist [-q|--quiet] DESTINATION_DIR # # 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 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- #exec 2> create-developer-eislist-trace$$.log #set -x # --------------------------------------------------------------------------- # sub: usage # --------------------------------------------------------------------------- usage () { cat < ${pack_dir}/${list}.txt < Package list of eisfair developer # Copyright (c) 2001-${pyear} the eisfair team, team(at)eisfair(dot)org # Welcome to the eisfair developer package server # ${pack_prefix}/index.txt # # Main ${list} # # All Packages are automated tarballs and NOT tested! EOF } # --------------------------------------------------------------------------- # sub: write eislist header # $1 - list name # --------------------------------------------------------------------------- write_section_eislist_header () { list=${1} # write header cat > ${pack_dir}/${list}.txt < Package list of eisfair developer # Copyright (c) 2001-${pyear} the eisfair team, team(at)eisfair(dot)org # ${pack_prefix}/index.txt # Section ${list} # # All Packages are automated tarballs and NOT tested! EOF } # --------------------------------------------------------------------------- # sub: write eislist footer # $1 - list name # --------------------------------------------------------------------------- write_eislist_footer () { list=${1} # write footer cat >> ${pack_dir}/${list}.txt < # Last database update: ${pdate} ${ptime} EOF chmod 0664 ${pack_dir}/${list}.txt chgrp fleis ${pack_dir}/${list}.txt } # --------------------------------------------------------------------------- # sub: write eislist entry # $1 - list name # --------------------------------------------------------------------------- write_eislist_entry () { list=${1} # SNAME - section name printf "%-15s %-20s %s \n" "#" ${SNAME}.txt ${SNAME} >> ${pack_dir}/${list}.txt } # --------------------------------------------------------------------------- # sub: write sectionlist entry # $1 - list name # $2 - section # $3 - entry # --------------------------------------------------------------------------- write_sectionlist_entry () { list=${1} section_info=${2} section_entry=${3} printf "%-15s %s \n" ${section_info} ${section_entry} >> ${pack_dir}/${list}.txt } # --------------------------------------------------------------------------- # sub: write eislist tmp # --------------------------------------------------------------------------- write_eislist_tmp () { FNAME="${1}" # send section to list case ${FNAME} in update|update-*) _pkg_section=updates ;; esac echo ${_pkg_section} >>${pack_dir}/XZ23-section.list myecho "adding package '${FNAME}' ..." # is section list missing, touch them if [ ! -f ${pack_dir}/XZ23-${_pkg_section}.list ] then touch ${pack_dir}/XZ23-${_pkg_section}.list fi # print to section list printf "%-15s %-60s %s \n" "#" "${FNAME}" "'${_pkg_short}'" \ >> ${pack_dir}/XZ23-${_pkg_section}.list # # split for multiple systems # for _system_pkg in `echo ${_pkg_system} | sed 's/;/ /g'` # do # echo ${_system_pkg} >>${pack_dir}/XZ23-eis-system.list # # echo ${_pkg_section} >>${pack_dir}/${_system_pkg}-XZ23-section.list # # printf "%-15s %-60s %s \n" "#" "${FNAME}" "'${_pkg_short}'" >> ${pack_dir}/${_system_pkg}-XZ23-${_pkg_section}.list # done } # --------------------------------------------------------------------------- # sub: write index # $1 $package # --------------------------------------------------------------------------- createindex () { FNAME=${1} case ${pack_ind} in update|update-*) # output a little bit formatted printf "%-17s %-9s %-11s %s %s\n" base ${_pkg_version_index} \ ${_pkg_status} ${pack_prefix}/${FNAME} ${_pkg_system} \ >> ${pack_dir}/index.txt ;; *) # output a little bit formatted printf "%-17s %-9s %-11s %s %s\n" ${_pkg_name} ${_pkg_version_index} \ ${_pkg_status} ${pack_prefix}/${FNAME} ${_pkg_system} \ >> ${pack_dir}/index.txt ;; esac } # --------------------------------------------------------------------------- # sub: create eislist # --------------------------------------------------------------------------- create_eislist () { # remove all old stuff if [ -f ${dest_dir}/eis-list.txt ] then rm -f ${dest_dir}/*.txt fi # write index header cat > ${dest_dir}/index.txt <${pack_dir}/folder-counter chmod -f 0660 ${pack_dir}/folder-counter chgrp -f fleis ${pack_dir}/folder-counter fi # change dir cd ${pack_dir} # check if .info-files exist p_folder=$(ls *.info 2>/dev/null) if [ -n "${p_folder}" ] then for FNAME in ${p_folder} do # check for prefix separator is given case ${FNAME} in update.*|update-*) # move $packages in folder mv -f ${FNAME} ${dest_dir_updates}/${FNAME} mv -f ${FNAME%.info} ${dest_dir_updates}/${FNAME%.info} set_package_right ;; *${PREFIX_SEPARATOR}*) get_package_folder_number create_package_subfolder # strip prefix fname_strip=${FNAME#*${PREFIX_SEPARATOR}} # move prefix $packages in folder mv ${FNAME} ${folder_number}/${fname_strip} mv ${FNAME%.info} ${folder_number}/${fname_strip%.info} set_package_right ;; *) get_package_folder_number create_package_subfolder # move $packages in folder mv ${FNAME} ${folder_number}/${FNAME} mv ${FNAME%.info} ${folder_number}/${FNAME%.info} set_package_right ;; esac done fi package_subfolder='' # get subfolder packages list package_subfolder=`ls -F | egrep "^[0-9]+/$"` pack_folder='' # list package folder pack_folder="updates/*.info" # folder/*.info for pack_info in ${package_subfolder} do FNAME=`ls ${pack_info}*.info 2>/dev/null` if [ -n "${FNAME}" ] then parse_info_file "${FNAME}" # write_eislist_tmp "${FNAME}" # print index createindex "${FNAME}" fi # for file.info in $pack_info do done # for file.info in $pack_folder do for p_folder in ${pack_folder} do # check if .info-files exist ls ${p_folder} 2>&1 >/dev/null if [ ${?} -eq 0 ] then # first extract the 'short' statement to sort the outprint for FNAME in ${p_folder} do parse_info_file "${FNAME}" # write_eislist_tmp "${FNAME}" # print index createindex "${FNAME}" done fi # for file.info in $pack_info do done # # sort section list and make uniq # section_list=`LANG=C sort -u ${pack_dir}/XZ23-section.list` # # max_nbr=`echo "${section_list}" | wc -l` # # nbr_idx=0 # # # write 'Main-eis-list' # for SNAME in ${section_list} # do # nbr_idx=`expr ${nbr_idx} + 1` # # # write header # if [ ${nbr_idx} -eq 1 ] # then # write_main_eislist_header "eis-list" # fi # # # write entry # write_eislist_entry "eis-list" # # # write footer # if [ ${nbr_idx} -eq ${max_nbr} ] # then # write_eislist_footer "eis-list" # fi # done # # for SECTIONNAME in ${section_list} # do # # sort list infos # LANG=C sort -k 1.80 ${pack_dir}/XZ23-${SECTIONNAME}.list >> ${pack_dir}/XZ23-${SECTIONNAME}$$.list # max_nbr=`cat ${pack_dir}/XZ23-${SECTIONNAME}.list | wc -l` # # nbr_idx=0 # # # write 'Section-list' # while read info line short # do # nbr_idx=`expr $nbr_idx + 1` # # # write header # if [ $nbr_idx -eq 1 ] # then # write_section_eislist_header "${SECTIONNAME}" # fi # # # write entry # write_sectionlist_entry "${SECTIONNAME}" "${info}" "${line}" # # # write footer # if [ $nbr_idx -eq $max_nbr ] # then # write_eislist_footer "${SECTIONNAME}" # fi # done <${pack_dir}/XZ23-${SECTIONNAME}$$.list # done # # stuff to create separate eislists for eisfair systems # _pack_system=`LANG=C sort -u ${pack_dir}/XZ23-eis-system.list` # # for _pkg_list in ${_pack_system} # do # # sort section list and make uniq # section_list=`LANG=C sort -u ${pack_dir}/${_pkg_list}-XZ23-section.list` # # max_nbr=`echo "${section_list}" | wc -l` # # nbr_idx=0 # # # write 'Main-eis-list' # for SNAME in ${section_list} # do # nbr_idx=`expr ${nbr_idx} + 1` # # # write header # if [ ${nbr_idx} -eq 1 ] # then # write_main_eislist_header "${_pkg_list}-eis-list" # fi # # # write entry # write_eislist_entry "${_pkg_list}-eis-list" # # # write footer # if [ ${nbr_idx} -eq ${max_nbr} ] # then # write_eislist_footer "${_pkg_list}-eis-list" # fi # done # # # for SECTIONNAME in ${section_list} # do # # sort list infos # LANG=C sort -k 1.80 ${pack_dir}/${_pkg_list}-XZ23-${SECTIONNAME}.list \ # >> ${pack_dir}/${_pkg_list}-XZ23-${SECTIONNAME}$$.list # max_nbr=`cat ${pack_dir}/${_pkg_list}-XZ23-${SECTIONNAME}.list | # wc -l` # # nbr_idx=0 # # # write 'Section-list' # while read info line short # do # nbr_idx=`expr $nbr_idx + 1` # # # write header # if [ $nbr_idx -eq 1 ] # then # write_section_eislist_header "${_pkg_list}-${SECTIONNAME}" # fi # # # write entry # write_sectionlist_entry "${_pkg_list}-${SECTIONNAME}" "${info}" "${line}" # # # write footer # if [ $nbr_idx -eq $max_nbr ] # then # write_eislist_footer "${_pkg_list}-${SECTIONNAME}" # fi # done <${pack_dir}/${_pkg_list}-XZ23-${SECTIONNAME}$$.list # done # done # remove tmp files rm -f ${pack_dir}/*XZ23-* # cat from Pack-Eis index.txt is deprecated # # write index from Pack-Eis # cat >> ${pack_dir}/index.txt <> ${pack_dir}/index.txt # rm -f ${pack_dir}/eisfair-index.txt chmod -f 0664 ${pack_dir}/index.txt chgrp -f fleis ${pack_dir}/index.txt } myecho () { case ${quietflag} in --quiet) : # nothing to do ;; *) echo ${@} ;; esac } # =========================================================================== # main # =========================================================================== quietflag='' dest_dir='' dest_dir_updates='updates' pack_prefix="https://eisler.nettworks.org/developer/eisfair_tarballs" if [ $# -lt 1 ] then usage exit 1 fi # read parameters while [ ${#} -ne 0 ] do case ${1} in '-q'|'--quiet') # quiet operation quietflag='--quiet' shift ;; * ) dest_dir="${1}" shift ;; esac done # get current directory call_dir=`pwd` # get start directory start_dir=`dirname $0`/.. cd $start_dir start_dir=`pwd` # include eislerlib . $start_dir/_ADMIN/eislerlib . $start_dir/_ADMIN/prefix-separator # check if output-dir exists if [ ! -d ${dest_dir} ] then echo "directory '${dest_dir}' not found, aborted." >&2 exit 1 fi # check for subfolder '$dest_dir_two' and create when missing if [ ! -d $dest_dir/${dest_dir_updates} ] then mkdir -p $dest_dir/${dest_dir_updates} chmod -f 0775 $dest_dir/${dest_dir_updates} chgrp -f fleis $dest_dir/${dest_dir_updates} fi # do work create_eislist # postprocessing for base-updates # remove sub-packages from updates.txt and get missing packages if [ -f ${pack_dir}/${dest_dir_updates}/update.tar.gz.info -a -f ${pack_dir}/base.txt ] then grep -E "^]*>.*$" \ ${pack_dir}/${dest_dir_updates}/update.tar.gz.info | sed -e 's#^]*>\(.*\)\.info.*$#\1#' | while read package do cp ${pack_dir}/base.txt ${pack_dir}/updates-$$ sed -e "/^#[ \t]*${package}\.info$/ D" ${pack_dir}/updates-$$ >${pack_dir}/updates.txt rm -f ${pack_dir}/updates-$$ rm -f ${pack_dir}/updates.txt if [ ! -f ${pack_dir}/${dest_dir_updates}/${package} ] then wget -q -P ${pack_dir}/${dest_dir_updates} \ http://download.eisfair.org/packages/updates/${package} wget -q -P ${pack_dir}/${dest_dir_updates} \ http://download.eisfair.org/packages/updates/${package}.info fi done fi # and now create simple symlink for updates #ln -sf $dest_dir $dest_dir/updates # return to previous directory cd $call_dir # =========================================================================== # end # ===========================================================================