123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556 |
- #!/bin/sh
- #(c) Copyright 2009 Barry Kauler.
- #100331 bad hack for t2 8.0rc/8.0rcXorg7.3 variants. 100412 removed.
- #100617 add support for slackware .txz pkgs.
- #100622 fixed control panel.
- #100622 hack for pet search.
- #100730 if subdir field not specified in pet.specs, use pet_packages-${DISTRO_COMPAT_VERSION}.
- #100801 some common code extracted to support/inline_get_pet,inline_get_compat.
- #100911 fix so will download more kernel pets.
- #110523 Iguleder: support Scientific Linux rpm pkgs.
- #110607 replace 'quirky' with 'common' repo.
- #110615 support mageia
- #110616 fix path for downloading kernel pets.
- #110724 optional execute support/1buildversiondeps. 110817 removed.
- #110725 handle exception host folder pet_packages-drake
- #110819 support/findpkgs is new script to find all pkgs to be used in Puppy build.
- #110823 moved kernel pet download code up, choose which kernel, fix control panel.
- #111121 noryb009: improve arch linux support, patched: 0setup, 1download, 2createpackages, 3builddistro, DISTRO_COMPAT_REPOS-arch, support/arch/runDotInstalls
- #111127 no longer check if host has 'printcols', 'vercmp', it is done in 'merge2out' script.
- #120501 support arm build.
- #120515 build from "gentoo" binary tarballs (refer support/gentoo).
- #120719 support raspbian.
- #120812 db category now allows optional subcategory (for which an icons exists in /usr/local/lib/X11/mini-icons).
- #121102 file DISTRO_SPECS has new variable DISTRO_DB_SUBNAME. ex: for 14.0-based slacko, DISTRO_DB_SUBNAME=slacko14
- #121102 pet_packages-${DISTRO_COMPAT_VERSION} (or pet_packages-${DISTRO_FILE_PREFIX}) is now pet_packages-${DISTRO_DB_SUBNAME.
- #130306 arch linux: gz now xz. maybe only 'DISTRO_COMPAT_REPOS-arch'.
- export LANG=C #faster.
- . ./DISTRO_SPECS
- [ ! "$DISTRO_DB_SUBNAME" ] && DISTRO_DB_SUBNAME="$DISTRO_COMPAT_VERSION" #121102 fallback if DISTRO_DB_SUBNAME not defined in file DISTRO_SPECS.
- if [ -f ./DISTRO_COMPAT_REPOS-${DISTRO_BINARY_COMPAT}-${DISTRO_COMPAT_VERSION} ];then
- . ./DISTRO_COMPAT_REPOS-${DISTRO_BINARY_COMPAT}-${DISTRO_COMPAT_VERSION}
- else
- . ./DISTRO_COMPAT_REPOS-${DISTRO_BINARY_COMPAT} #130306
- fi
- if [ -f ./DISTRO_PKGS_SPECS-${DISTRO_BINARY_COMPAT}-${DISTRO_COMPAT_VERSION} ];then #w478
- . ./DISTRO_PKGS_SPECS-${DISTRO_BINARY_COMPAT}-${DISTRO_COMPAT_VERSION} #has FALLBACKS_COMPAT_VERSIONS
- else
- . ./DISTRO_PKGS_SPECS-${DISTRO_BINARY_COMPAT} #has FALLBACKS_COMPAT_VERSIONS
- fi
- . ./DISTRO_PET_REPOS #has PACKAGELISTS_PET_ORDER
- #the files that have compatible-distro pkg docs (these were downloaded by 0setup)...
- PKGLISTS_COMPAT="`echo "$PKG_DOCS_DISTRO_COMPAT" | tr ' ' '\n' | cut -f 3 -d '|' | tr '\n' ' '`" #see file DISTRO_PKGS_SPECS-ubuntu
- #...format ex: 'Packages-ubuntu-intrepid-main packages-ubuntu-intrepid-universe'
- #w469 modify compat-distro fallback list...
- if [ "$FALLBACKS_COMPAT_VERSIONS" != "" ];then
- FALLBACKS_COMPAT_VERSIONS="`echo -n "$FALLBACKS_COMPAT_VERSIONS" | grep -o "${DISTRO_COMPAT_VERSION}.*"`"
- #ex: 'koala jaunty intrepid' gets reduced to 'jaunty intrepid' if DISTRO_COMPAT_VERSION=jaunty
- fi
- #w469 refer to file DISTRO_PET_REPOS...
- PACKAGELISTS_PET_PRIMARY="`echo -n "$PACKAGELISTS_PET_ORDER" | cut -f 1 -d ' '`"
- PACKAGELISTS_PET_SECOND="`echo -n "$PACKAGELISTS_PET_ORDER" | cut -f 2 -d ' '`" #100911
- if [ "$DISTRO_TARGETARCH" = "arm" ];then #120501
- PACKAGELISTS_PET_2NDARCH="`echo -n "$PACKAGELISTS_PET_ORDER" | tr ' ' '\n' | grep -v '\-noarch' | tr '\n' ' ' | cut -f 2 -d ' '`"
- [ "$PACKAGELISTS_PET_2NDARCH" = "$PACKAGELISTS_PET_PRIMARY" ] && PACKAGELISTS_PET_2NDARCH=''
- else
- PACKAGELISTS_PET_2NDARCH='Packages-puppy-common-official'
- fi
- #remove comments from PKGS_SPECS_TABLE... make sure '|' on end... get rid of old |+udev,+whatever on end...
- PKGS_SPECS_TABLE="`echo "$PKGS_SPECS_TABLE" | grep -v '^#' | grep -v '^$' | tr '\t' ' ' | tr -s ' ' | tr '+' '&' | sed -e 's%|&.*%%' | tr '&' '+' | sed -e 's% #.*%%' -e 's% $%%' -e 's%$%|%' -e 's%||$%|%'`"
- BINARIES='deb' #download to packages-deb.
- [ "$DISTRO_BINARY_COMPAT" = "t2" ] && BINARIES="bz2" #download to packages-bz2-${DISTRO_COMPAT_VERSION}.
- [ "$DISTRO_BINARY_COMPAT" = "slackware" ] && BINARIES="tgz_txz" #100617 download to packages-tgz_txz-${DISTRO_COMPAT_VERSION}.
- [ "$DISTRO_BINARY_COMPAT" = "slackware64" ] && BINARIES="tgz_txz" #140716 download to packages-tgz_txz-${DISTRO_COMPAT_VERSION}.
- [ "$DISTRO_BINARY_COMPAT" = "debian" ] && BINARIES="deb" #download to packages-deb-${DISTRO_COMPAT_VERSION}.
- [ "$DISTRO_BINARY_COMPAT" = "devuan" ] && BINARIES="deb" #download to packages-deb-${DISTRO_COMPAT_VERSION}.
- [ "$DISTRO_BINARY_COMPAT" = "arch" ] && BINARIES="tar_xz" #download to packages-tar_xz-${DISTRO_COMPAT_VERSION}. 130306
- [ "$DISTRO_BINARY_COMPAT" = "puppy" ] && BINARIES="pet" #w018 built entirely from pet pkgs.
- [ "$DISTRO_BINARY_COMPAT" = "scientific" ] && BINARIES="rpm" #110523 Iguleder: download to packages-rpm-${DISTRO_COMPAT_VERSION}.
- [ "$DISTRO_BINARY_COMPAT" = "mageia" ] && BINARIES="rpm" #110615
- [ "$DISTRO_BINARY_COMPAT" = "gentoo" ] && BINARIES="gentoo" #120515 download to packages-gentoo-gap6
- [ "$DISTRO_BINARY_COMPAT" = "raspbian" ] && BINARIES="deb_raspbian" #download to packages-deb_raspbian-${DISTRO_COMPAT_VERSION}.
- BINARIES="${BINARIES}-${DISTRO_COMPAT_VERSION}" #w478
- mkdir -p packages-${BINARIES}
- mkdir -p packages-pet
- #find out what pet repos are working...
- echo "Finding what PET repos are working..."
- PET_URLS=""
- for ONE_PET_REPO in $PET_REPOS
- do
- ONE_PET_SITE="`echo -n "$ONE_PET_REPO" | cut -f 1 -d '|'`"
- ONE_PET_URL="`echo -n "$ONE_PET_REPO" | cut -f 2 -d '|'`"
- #w013 changed timeout from 20 to 30 seconds...
- #if wget -t 2 -T 20 --waitretry=20 --spider -S $ONE_PET_SITE -o /dev/stdout | grep '200 OK'
- if [ "`wget -t 2 -T 30 --waitretry=20 --spider -S $ONE_PET_SITE -o /dev/stdout 2>/dev/null | grep '200 OK'`" != "" ];then
- echo "Okay: $ONE_PET_URL"
- PET_URLS="$PET_URLS$ONE_PET_URL " #success.
- fi
- done
- if [ "$PET_URLS" = "" ];then
- echo "Failure. Is Internet working?"
- echo -n "Press ENTER key to quit script: "
- read yesgetout
- exit
- fi
- echo "Finding what $BINARIES repos are working..."
- BIN_URLS=""
- for ONE_BIN_REPO in $REPOS_DISTRO_COMPAT #from DISTRO_PKGS_SPECS-$DISTRO_BINARY_COMPAT.
- do
- ONE_BIN_SITE="`echo -n "$ONE_BIN_REPO" | cut -f 1 -d '|'`"
- ONE_BIN_URL="`echo -n "$ONE_BIN_REPO" | cut -f 2 -d '|'`"
- #w013 ditto...
- if [ "`wget -t 2 -T 30 --waitretry=20 --spider -S $ONE_BIN_SITE -o /dev/stdout 2>/dev/null | grep '200 OK'`" != "" ];then
- echo "Okay: $ONE_BIN_URL"
- BIN_URLS="$BIN_URLS$ONE_BIN_URL " #success.
- fi
- done
- if [ "$BIN_URLS" = "" ];then
- echo "Failure. Is Internet working?"
- echo -n "Press ENTER key to quit script: "
- read yesgetout
- exit
- fi
- rm -f DOWNLOAD-FAILS-PET 2>/dev/null
- rm -f DOWNLOAD-FAILS-${BINARIES} 2>/dev/null
- rm -f DOWNLOAD-ERRORS
- #start the gui controlpanel...
- echo 'Run' > /tmp/1download-status-request
- ./support/1download_controlpanel &
- ######################
- #110823 moved downloading kernels PETs up here.
- #download all the linux kernel pkgs from pet repo...
- echo
- echo "Downloading Linux kernel packages..."
- for PKGLISTFILE in $PACKAGELISTS_PET_PRIMARY #$PACKAGELISTS_PET_2NDARCH #$PACKAGELISTS_PET_SECOND #$PACKAGELISTS_PET_THIRD #110616
- do
- if [ "$DISTRO_KERNEL_PET" = "Huge_Kernel" ];then
- echo "You are doing a Huge style build, not downloading a kernel now."
- echo "This will occur when you run 3builddistro-Z or click 'HUGE BUILD DISTRO'"
- echo "in the Woof GUI."
- echo
- break
- fi
- if [ "$DISTRO_KERNEL_PET" != "" ] ; then
- SUBDIRTRAIL="`echo -n "$PKGLISTFILE" | cut -f 3 -d '-'`" #ex: common
- SPEC_LINUXKERNELS="`cat $PKGLISTFILE | grep $DISTRO_KERNEL_PET | cut -f 2-99 -d ':' | cut -f 7,8 -d '|' | tr '\n' ' '`"
- if [ "$SPEC_LINUXKERNELS" = "" ]; then
- echo
- echo "WARNING: Can not find the kernel pet specified in"
- echo "DISTRO_SPECS file"
- echo "Please update your DISTRO_SPECS file with one"
- echo "of the available kernels."
- echo "Will now download ALL the kernels available in the repos..."
- echo
- sleep 5
- SUBDIRTRAIL="`echo -n "$PKGLISTFILE" | cut -f 3 -d '-'`" #ex: common
- SPEC_LINUXKERNELS="`cat $PKGLISTFILE | grep '^linux_kernel\-' | cut -f 2-99 -d ':' | cut -f 7,8 -d '|' | tr '\n' ' '`"
- fi
- else
- SUBDIRTRAIL="`echo -n "$PKGLISTFILE" | cut -f 3 -d '-'`" #ex: common
- SPEC_LINUXKERNELS="`cat $PKGLISTFILE | grep '^linux_kernel\-' | cut -f 2-99 -d ':' | cut -f 7,8 -d '|' | tr '\n' ' '`"
- fi
-
- for SPEC_ONEKERNEL in $SPEC_LINUXKERNELS
- do
- ONEKERNEL="`echo -n "$SPEC_ONEKERNEL" | cut -f 2 -d '|'`"
- ONEKERNEL="`basename $ONEKERNEL .pet`"
- PATHKERNEL="`echo -n "$SPEC_ONEKERNEL" | cut -f 1 -d '|'`"
-
- [ "$PATHKERNEL" = "" ] && PATHKERNEL="pet_packages-${SUBDIRTRAIL}" #110616
-
- SUCCESS="no"
- [ -f packages-pet/${ONEKERNEL}.pet ] && continue
- for ONE_PET_URL in $PET_URLS
- do
- wget --spider --tries=1 --timeout=20 ${ONE_PET_URL}/${PATHKERNEL}/${ONEKERNEL}.pet
- [ $? -ne 0 ] && continue
- cd packages-pet
- wget ${ONE_PET_URL}/${PATHKERNEL}/${ONEKERNEL}.pet
- sync
- #check file downloaded correctly...
- if [ -f ${ONEKERNEL}.pet ];then
- cp -f ${ONEKERNEL}.pet tempfileonly.pet
- pet2tgz tempfileonly.pet
- [ $? -eq 0 ] && SUCCESS='yes'
- rm -f tempfileonly.pet 2>/dev/null
- rm -f tempfileonly.tar.gz 2>/dev/null
- [ "$SUCCESS" = "no" ] && rm -f ${ONEKERNEL}.pet
- fi
- cd ..
-
- #check controlpanel, whether need to pause, resume or quit...
- CP_STATUS_REQ="`cat /tmp/1download-status-request`" #Run, Pause, Resume, Quit
- pausecnt=0; PIDCP=0
- while [ "$CP_STATUS_REQ" = "Pause" ];do
- #echo "Status: paused ${pausecnt}seconds"
- if [ $PIDCP -eq 0 ];then
- yaf-splash -close never -placement top -bg orange -text "1download script is currently in paused state" &
- PIDCP=$!
- fi
- sleep 5
- pausecnt=`expr $pausecnt + 5`
- CP_STATUS_REQ="`cat /tmp/1download-status-request`"
- done
- [ $PIDCP -ne 0 ] && kill $PIDCP
- if [ "$CP_STATUS_REQ" = "Quit" ];then
- sync
- kill `cat /tmp/1download_controlpanel_pid` #1download_controlpanel
- rm -f /tmp/1download_controlpanel_pid
- echo
- echo "1download aborted."
- echo -n "Press ENTER key to quit script: "
- read yesgetout
- exit
- fi
- [ "$SUCCESS" = "yes" ] && continue 2
- done
- echo "Failed to download ${ONEKERNEL}.pet."
- done
- done
- ####choose kernel####
- case "$DISTRO_KERNEL_PET" in
- Huge*)echo "" ;;
- *)KERNELPKG="$DISTRO_KERNEL_PET"
- if [ -f packages-pet/$DISTRO_KERNEL_PET ];then
- KMSG="This package exists in directory packages-pet, so ok. But you can change
- it now if you wish."
- KOK=''
- else
- KMSG="This package does not exist in directory packages-pet, so you cannot use it.
- You must choose a linux kernel PET package from those available."
- KOK='no'
- fi
- echo
- echo "The kernel to be used is specified in variable DISTRO_KERNEL_PET in file"
- echo "DISTRO_SPECS. Currently DISTRO_KERNEL_PET=${DISTRO_KERNEL_PET}"
- echo "$KMSG"
- if [ "$KOK" = "" ];then
- echo -n "Press ENTER only to use this kernel, press any other char to change: "
- read KOK
- fi
- if [ "$KOK" ];then
- CNTLOOP=1
- AVAILKERNELS="`ls -1 packages-pet/linux_kernel-*.pet`"
- [ "$AVAILKERNELS" = "" ] && echo 'No linux_kernel pkgs avail in packages-pet. Press CTRL-C.'
- for ONEKERNEL in $AVAILKERNELS
- do
- echo "$CNTLOOP $ONEKERNEL"
- CNTLOOP=`expr $CNTLOOP + 1`
- done
- echo
- echo -n 'Type number for kernel you want to use [1]: '
- read numkernel
- [ "$numkernel" = "" ] && numkernel=1
- KERNELPKG="`echo "$AVAILKERNELS" | head -n $numkernel | tail -n 1 | rev | cut -f 1 -d '/' | rev`"
- fi
- if [ "$KERNELPKG" != "$DISTRO_KERNEL_PET" ];then
- dkpPATTERN="s%^DISTRO_KERNEL_PET.*%DISTRO_KERNEL_PET='${KERNELPKG}'%"
- sed -i -e "$dkpPATTERN" ./DISTRO_SPECS
- echo "...DISTRO_SPECS now set to use $KERNELPKG"
- fi
- ;;
- esac
- ##################################
- #120501 support arm build, download sd images...
- if [ "$DISTRO_TARGETARCH" = "arm" ];then
- mkdir -p sd-skeleton-images
- echo
- echo 'Please wait, probing for online SD skeleton image files...'
- wget -4 -t 2 -T 20 --waitretry=20 --spider --recursive --level=1 --accept '*.xz' -S http://distro.ibiblio.org/quirky/arm/sd-skeleton-images/ 2>&1 | grep '\.xz$' | rev | cut -f 1 -d '/' | rev > /tmp/1download-sd-images-probe
- sync
- if [ ! -s /tmp/1download-sd-images-probe ];then
- echo 'Sorry, could not access any SD images at http://distro.ibiblio.org/quirky/arm/sd-skeleton-images/'
- echo 'Press ENTER to continue script regardless: '
- read keepgoing
- [ "$keepgoing" != "" ] && exit
- else
-
- #ask which sd-image to download...
- ALREADYDOWN="`ls -1 sd-skeleton-images | grep 'xz$'`"
- [ "$ALREADYDOWN" = "" ] && ALREADYDOWN='none'
- SDIMAGEBUTTONS=''
- for ONESDIMAGE in `cat /tmp/1download-sd-images-probe | sort -u | tr '\n' ' '`
- do
- #SDIMAGENAME="`basename $ONESDIMAGE .xz`"
- [ -f sd-skeleton-images/$ONESDIMAGE ] && continue #already downloaded.
- SDIMAGEBUTTONS="${SDIMAGEBUTTONS}<radiobutton><label>${ONESDIMAGE}</label><variable>RADIO_URL_${ONESDIMAGE}</variable></radiobutton>"
- done
- if [ "$SDIMAGEBUTTONS" != "" ];then
- export SDIMAGE_DIALOG="<window title=\"SD Image Downloader: choose file\" icon-name=\"gtk-about\" window_position=\"1\">
- <vbox>
- <text><label>These are already downloaded:</label></text>
- <text><label>\"${ALREADYDOWN}\"</label></text>
- <text><label>Please choose an SD-image file that you would like to download (Click Cancel button to not download any):</label></text>
- <frame>
- ${SDIMAGEBUTTONS}
- </frame>
- <hbox>
- <button ok></button>
- <button cancel></button>
- </hbox>
- </vbox>
- </window>"
- while [ 1 ];do
- RETPARAMS="`gtkdialog3 --program=SDIMAGE_DIALOG`"
- SDIMAGE_FILE=''
- [ "`echo "$RETPARAMS" | grep '^EXIT' | grep 'OK'`" != "" ] && SDIMAGE_FILE="`echo "$RETPARAMS" | grep 'RADIO_URL_' | grep '"true"' | cut -f 1 -d '=' | cut -f 3-9 -d '_'`"
- if [ "$SDIMAGE_FILE" ];then
- cd sd-skeleton-images
- wget -4 http://distro.ibiblio.org/quirky/arm/sd-skeleton-images/$SDIMAGE_FILE
- sync
- wget -4 http://distro.ibiblio.org/quirky/arm/sd-skeleton-images/${SDIMAGE_FILE}.md5.txt
- sync
- cd ..
- echo "...${SDIMAGE_FILE} downloaded to folder sd-skeleton-images"
- if [ -s ${SDIMAGE_FILE}.md5.txt ];then
- CORRECTMD5="`cat ${SDIMAGE_FILE}.md5.txt | cut -f 1 -d ' '`"
- DLMD5="`md5sum ${SDIMAGE_FILE} | cut -f 1 -d ' '`"
- if [ "$CORRECTMD5" != "$DLMD5" ];then
- echo "...however, the md5sum is incorrect. Deleting downloaded file..."
- rm -f $SDIMAGE_FILE
- echo -n "Press ENTER only to continue script, any other key to try download again..."
- read tryagain
- [ "$tryagain" != "" ] && continue
- fi
- fi
- fi
- break
- done
- fi
-
- fi
- fi
- ##################################
- #110817 new script to find all pkgs for build...
- ./support/findpkgs
- #...returns file status/findpkgs_FINAL_PKGS-${DISTRO_BINARY_COMPAT}-${DISTRO_COMPAT_VERSION}
- # each line is full db entry for pkg, prefixed with :generic-name:, pet/compat and repo-filename.
- # ex: :a52dec:|compat|Packages-puppy-wary5-official|a52dec-0.7.4-w5|a52dec|0.7.4-w5||BuildingBlock|68K||a52dec-0.7.4-w5.pet||A free ATSC A52 stream decoder|puppy|wary5||
- if [ $? -ne 0 ];then
- echo
- echo "ERROR: Script support/findpkgs aborted with an error, exiting."
- exit 1
- fi
- if [ ! -f status/findpkgs_FINAL_PKGS-${DISTRO_BINARY_COMPAT}-${DISTRO_COMPAT_VERSION} ];then
- echo
- echo "ERROR: Something went wrong with support/findpkgs, exiting."
- exit 1
- fi
- echo
- echo "Downloading packages..."
- LINECNT=1
- cat status/findpkgs_FINAL_PKGS-${DISTRO_BINARY_COMPAT}-${DISTRO_COMPAT_VERSION} |
- while read ONEDBENTRY
- do
- #120812 optional subcategory...
- #ONEDBENTRY=:GENERICNAME:|PETorCOMPAT|DBFILE|pkgname|nameonly|version|pkgrelease|category[;subcategory]|size|path|fullfilename|dependencies|description|compileddistro|compiledrelease|repo|
- #...pkgname onwards is the full db entry for a package.
- LINECNT=$(($LINECNT + 1))
- PETorCOMPAT="`echo -n "$ONEDBENTRY" | cut -f 2 -d '|'`" #ex: compat
- if [ "$PETorCOMPAT" != "pet" -a "$PETorCOMPAT" != "compat" ];then
- echo
- echo "Syntax ERROR in status/findpkgs_FINAL_PKGS-${DISTRO_BINARY_COMPAT}-${DISTRO_COMPAT_VERSION},"
- echo "line number ${LINECNT}:"
- echo "$ONEDBENTRY"
- echo -n "Ignoring this line, press ENTER to continue (CTRL-C to abort): "
- read KEEPITGOING
- continue
- fi
- DBFILE="`echo -n "$ONEDBENTRY" | cut -f 3 -d '|'`" #ex: Packages-puppy-5-official
- DB_pkgname="`echo -n "$ONEDBENTRY" | cut -f 4 -d '|'`" #ex: abiword-2.3.4-w5
- DB_fullfilename="`echo -n "$ONEDBENTRY" | cut -f 11 -d '|'`" #ex: abiword-2.3.4-w5.pet
- DB_path="`echo -n "$ONEDBENTRY" | cut -f 10 -d '|'`" #ex: pet_packages-5
- if [ ! "$DB_path" ];then
- ONLINESUBDIR="`echo -n "$DBFILE" | cut -f 3 -d '-'`" #ex: 5
- if [ "$PETorCOMPAT" = "pet" ];then #120515
- DB_path="pet_packages-${ONLINESUBDIR}"
- else
- DB_path="compat_packages-${ONLINESUBDIR}"
- fi
- fi
-
- echo -n "$DB_fullfilename "
-
- if [ "$PETorCOMPAT" = "pet" ];then
-
- #see if pkg already downloaded...
- PETPKG="`basename $DB_fullfilename .pet`"
- [ -f packages-pet/${PETPKG}.pet ] && continue
- echo "Downloading ${DB_fullfilename}..."
- SUCCESS='no'
- for ONE_PET_URL in $PET_URLS
- do
- wget --spider --tries=1 --timeout=30 ${ONE_PET_URL}/${DB_path}/${PETPKG}.pet #w013 was 20
- [ $? -ne 0 ] && continue
- cd packages-pet
- #rxvt -name pet -bg orange -geometry 80x10 -e wget ${ONE_PET_URL}/${DB_path}/${PETPKG}.pet
- wget ${ONE_PET_URL}/${DB_path}/${PETPKG}.pet
- sync
- #check file downloaded correctly...
- if [ -f ${PETPKG}.pet ];then
- cp -f ${PETPKG}.pet tempfileonly.pet
- pet2tgz tempfileonly.pet
- [ $? -eq 0 ] && SUCCESS='yes'
- rm -f tempfileonly.pet 2>/dev/null
- rm -f tempfileonly.tar.gz 2>/dev/null
- [ "$SUCCESS" = "no" ] && rm -f ${PETPKG}.pet
- fi
- cd ..
- [ "$SUCCESS" = "yes" ] && break
- done
- #if fail to find it, log failure, request manual download.
- [ "$SUCCESS" = "no" ] && echo "DOWNLOAD FAIL: ${PETPKG}.pet"
- [ "$SUCCESS" = "no" ] && echo "${PETPKG}.pet" >> DOWNLOAD-FAILS-PET
- else #compat
-
- #check if already downloaded...
- [ -f packages-${BINARIES}/$DB_fullfilename ] && continue
- #arch is a bit awkward, as the pkg may or may not have '-i686' in the name...
- if [ "$DISTRO_BINARY_COMPAT" = "arch" ];then
- altDB_fullfilename="`echo -n "$DB_fullfilename" | sed -e 's%\-i686\.pkg%.pkg%'`"
- [ -f packages-${BINARIES}/$altDB_fullfilename ] && continue
- fi
- #...probably don't need this anymore ###NOTE###
- #use wget to see if pkg on a repository, if not try a secondary repo, then a third.
- #if found, download to packages-${BINARIES} (packages-deb).
- #if fail, log failure, request manual download.
- SUCCESS='no'
- ONEFILE="${DB_path}/${DB_fullfilename}"
- for ONE_BIN_URL in $BIN_URLS
- do
- wget --spider --tries=1 --timeout=20 ${ONE_BIN_URL}/${ONEFILE} > /dev/null 2>&1
- RETSPIDER=$?
- if [ "$DISTRO_BINARY_COMPAT" = "arch" -a $RETSPIDER -ne 0 ];then #pkg naming inconsistency problem.
- altONEFILE="`echo -n "$ONEFILE" | sed -e 's%\-i686\.pkg%.pkg%'`"
- wget --spider --tries=1 --timeout=20 ${ONE_BIN_URL}/${altONEFILE} > /dev/null 2>&1
- RETSPIDER=$?
- if [ $RETSPIDER -eq 0 ];then
- ONEFILE="$altONEFILE"
- DB_fullfilename="$altDB_fullfilename"
- fi
- fi
- #...probably don't need this anymore ###NOTE###
- [ $RETSPIDER -ne 0 ] && continue
- cd packages-${BINARIES}
- #rxvt -name pet -bg orange -geometry 80x10 -e wget ${ONE_BIN_URL}/${ONEFILE}
- wget ${ONE_BIN_URL}/${ONEFILE}
- sync
- #check file downloaded correctly...
- if [ -f $DB_fullfilename ];then
- case $DISTRO_BINARY_COMPAT in #exs: ubuntu, debian
- ubuntu|trisquel|debian|devuan|raspbian)
- dpkg-deb --extract $DB_fullfilename tempdironly
- [ $? -eq 0 ] && SUCCESS='yes'
- ;;
- arch)
- xz --test $DB_fullfilename > /dev/null 2>&1
- if [ $? -eq 0 ];then
- SUCCESS='yes'
- else
- gzip --test $DB_fullfilename > /dev/null 2>&1
- [ $? -eq 0 ] && SUCCESS='yes'
- fi
- ;;
- slackware*) #100617 support .txz... #140716 support 64 bit
- xz --test $DB_fullfilename > /dev/null 2>&1
- if [ $? -eq 0 ];then
- SUCCESS='yes'
- else
- gzip --test $DB_fullfilename > /dev/null 2>&1
- [ $? -eq 0 ] && SUCCESS='yes'
- fi
- ;;
- puppy) #w017
- PETPKG="`basename $DB_fullfilename .pet`"
- cp -f ${PETPKG}.pet tempfileonly.pet
- pet2tgz tempfileonly.pet
- [ $? -eq 0 ] && SUCCESS='yes'
- rm -f tempfileonly.pet 2>/dev/null
- rm -f tempfileonly.tar.gz 2>/dev/null
- ;;
- t2)
- bzip2 --test $DB_fullfilename > /dev/null 2>&1
- [ $? -eq 0 ] && SUCCESS='yes'
- ;;
- scientific|mageia) #110523 Iguleder. 110615
- busybox rpm -qpl $DB_fullfilename > /dev/null 2>&1
- [ $? -eq 0 ] && SUCCESS='yes'
- ;;
- gentoo) #120515
- bzip2 --test $DB_fullfilename > /dev/null 2>&1
- [ $? -eq 0 ] && SUCCESS='yes'
- ;;
- esac
- fi
- rm -rf tempdironly 2>/dev/null
- [ "$SUCCESS" = "no" ] && rm -f ${DB_fullfilename} 2>/dev/null
- cd ..
- [ "$SUCCESS" = "yes" ] && break
- done
- #if failed to find it, log failure, request manual download...
- [ "$SUCCESS" = "no" ] && echo "$DB_fullfilename" >> DOWNLOAD-FAILS-${BINARIES}
-
- fi #end if PETorCOMPAT
- #check controlpanel, whether need to pause, resume or quit...
- CP_STATUS_REQ="`cat /tmp/1download-status-request`" #Run, Pause, Resume, Quit
- pausecnt=0; PIDCP=0
- while [ "$CP_STATUS_REQ" = "Pause" ];do
- #echo "Status: paused ${pausecnt}seconds"
- if [ $PIDCP -eq 0 ];then
- yaf-splash -close never -placement top -bg orange -text "1download script is currently in paused state" &
- PIDCP=$!
- fi
- sleep 5
- pausecnt=`expr $pausecnt + 5`
- CP_STATUS_REQ="`cat /tmp/1download-status-request`"
- done
- [ $PIDCP -ne 0 ] && kill $PIDCP
- [ "$CP_STATUS_REQ" = "Quit" ] && break 2 #pipe into while above is a separate process, need '2' to break out.
- done
- if [ "$CP_STATUS_REQ" = "Quit" ];then
- sync
- kill `cat /tmp/1download_controlpanel_pid` #1download_controlpanel
- rm -f /tmp/1download_controlpanel_pid
- echo
- echo "1download aborted."
- echo -n "Press ENTER key to quit script: "
- read yesgetout
- exit
- fi
- ############################
- sync
- kill `cat /tmp/1download_controlpanel_pid` #1download_controlpanel
- rm -f /tmp/1download_controlpanel_pid
- echo
- echo
- echo "Finished."
- echo -n "Press ENTER key to quit script: "
- read yesgetout
- ###END###
|