[lxc-devel] [PATCH] plamo: Update template to use wget when download packages

KATOH Yasufumi karma at jazz.email.ne.jp
Wed Jan 15 16:55:52 UTC 2014


Signed-off-by: TAMUKI Shoichi <tamuki at linet.gr.jp>
Signed-off-by: KATOH Yasufumi <karma at jazz.email.ne.jp>
---
 templates/lxc-plamo.in | 94 ++++++++++++++++++++++++--------------------------
 1 file changed, 45 insertions(+), 49 deletions(-)

diff --git a/templates/lxc-plamo.in b/templates/lxc-plamo.in
index a40bec7..9af29e4 100644
--- a/templates/lxc-plamo.in
+++ b/templates/lxc-plamo.in
@@ -28,52 +28,35 @@
 # ref. https://github.com/Ponce/lxc-slackware/blob/master/lxc-slackware
 #      lxc-ubuntu script
 
-LXC_TEMPLATE_CONFIG="@LXCTEMPLATECONFIG@"
+set -eu
 
 [ -r /etc/default/lxc ] && . /etc/default/lxc
 
+LXC_TEMPLATE_CONFIG="@LXCTEMPLATECONFIG@"
+
+DOWNLOAD_SCHEME=${DOWNLOAD_SCHEME:-"http"}
 MIRRORSRV=${MIRRORSRV:-"ftp.ne.jp"}
 MIRRORPATH=${MIRRORPATH:-"/Linux/distributions/plamolinux"}
 CATEGORY[0]=${CATEGORY:-"00_base"}
-PACKAGES[0]=${PACKAGES:-"aaa_base acl at attr bash btrfs_progs bzip2
-    coreutils cracklib dcron devs dhcp dialog dosfstools dump e2fsprogs
-    ed eject etc extipl file findutils gawk glibc grep groff grub gzip
-    hdsetup hibernate_script iproute2 iputils kbd kmod less libcap
-    libgcc libtirpc lilo linux_pam logrotate lvm2 man
-    mdadm microcode_ctl mlocate ncurses net_tools netkit_combo
-    network_configs nvi openbsd_inetd openssh openssl os_prober pciutils
-    pm_utils procinfo_ng procps_ng readline reiserfsprogs rsyslog sed
-    shadow sudo sysfsutils syslinux sysvinit tar tcp_wrappers tcsh
-    timezone traceroute udev unicon_tools util_linux xz zlib"}
+IGNOREPKG[0]=${IGNOREPKGS:-"grub kernel lilo linux_firmware microcode_ctl"}
 CATEGORY[1]="01_minimum"
-PACKAGES[1]="FDclone autofs bc berkeley_db bsd_games cpio cpufreqd
-    cpufrequtils fortune_mod gc gdbm gpm hddtemp hdparm keyutils libelf
-    libieee1284 libusb libusb_compat libxml2 libzip linux_howto lm_sensors
-    lshw lsof lv man_pages man_pages_ja nilfs_utils nkf pcre perl popt
-    psmisc python recode rpm2targz ruby screen sg3_utils sharutils sqlite
-    squashfs_lzma sysstat texinfo time tree unzip usbutils utempter which
-    yaml zip zsh"
+IGNOREPKG[1]="cpufreqd cpufrequtils gpm"
 CATEGORY[2]="01_minimum/alsa.txz"
-PACKAGES[2]="alsa_lib alsa_plugins alsa_utils"
+IGNOREPKG[2]=""
 CATEGORY[3]="01_minimum/aspell.txz"
-PACKAGES[3]="aspell aspell6_en"
+IGNOREPKG[3]=""
 CATEGORY[4]="01_minimum/devel.txz"
-PACKAGES[4]="autoconf automake binutils bison cloog cvs diffutils flex
-    g++ gcc gdb gettext gmp indent intltool kernel_headers libc libtool
-    m4 make mpc mpfr onig patch pkg_config ppl pth slang strace yasm"
+IGNOREPKG[4]=""
 CATEGORY[5]="01_minimum/gnupg_tls.txz"
-PACKAGES[5]="gnupg gnutls gpgme libassuan libgcrypt libgpg_error libksba
-    libtasn1"
+IGNOREPKG[5]=""
 CATEGORY[6]="01_minimum/network.txz"
-PACKAGES[6]="bind bridge_utils curl cyrus_sasl dnsmasq ethtool fetchmail
-    heimdal hostapd iptables iw libidn libiec61883 libnl3 libpcap
-    libraw1394 libssh2 mailx metamail ncftp ntrack parprouted postfix
-    ppp procmail rsync setserial uml_utilities w3m wget wireless_tools
-    wpa_supplicant"
+IGNOREPKG[6]=""
 CATEGORY[7]="01_minimum/nfs.txz"
-PACKAGES[7]="libevent libnfsidmap nfs_utils rpcbind"
+IGNOREPKG[7]=""
 CATEGORY[8]="01_minimum/tcl.txz"
-PACKAGES[8]="expect itcl tcl tclx"
+IGNOREPKG[8]=""
+
+CATEGORY_PATH=""
 
 download_plamo() {
   # check the mini plamo was not already downloaded
@@ -83,21 +66,36 @@ download_plamo() {
   fi
   # download a mini plamo into a cache
   echo "Downloading Plamo-$release minimal..."
-  echo "open $MIRRORSRV" > /tmp/getpkg
+  cd $ptcache
   for i in `seq 0 $((${#CATEGORY[@]} - 1))` ; do
-    for p in ${PACKAGES[$i]} ; do
-      cat <<- EOF >> /tmp/getpkg
-	mget $MIRRORPATH/Plamo-$release/$arch/plamo/${CATEGORY[$i]}/$p-*.t?z
-	EOF
-    done
+    CATEGORYPATH=${MIRRORPATH}/Plamo-${release}/${arch}/plamo/${CATEGORY[$i]}
+    WGETOPT="-nv -r -l1 -e robots=off -nd --no-parent -c --retr-symlinks -A .txz"
+    EXCLUDE_OPT=""
+    if [ $DOWNLOAD_SCHEME = "http" ] ; then
+      if [ -n "${IGNOREPKG[$i]}" ] ; then
+        for p in ${IGNOREPKG[$i]} ; do
+          EXCLUDE_OPT="${EXCLUDE_OPT} -R ${p}* "
+        done
+      fi
+      if ! wget ${WGETOPT} ${EXCLUDE_OPT} -X ${CATEGORY_PATH}/old http://${MIRRORSRV}${CATEGORYPATH} ; then
+        echo "Failed to download the rootfs, aborting."
+        return 1
+      fi
+    elif [ $DOWNLOAD_SCHEME = "ftp" ] ; then
+      if [ -n "${IGNOREPKG[$i]}" ] ; then
+        for p in ${IGNOREPKG[$i]} ; do
+          EXCLUDE_OPT="${EXCLUDE_OPT} -x ${p} "
+        done
+      fi
+      if ! lftp -c "open ${MIRRORSRV} && cd ${CATEGORYPATH} && mirror -i .txz -x old ${EXCLUDE_OPT} -r ." ; then
+        echo "Failed to download the rootfs, aborting."
+        return 1
+      fi
+    else
+      echo "Invalid DOWNLOAD_SCHEME value (can set http or ftp). "
+      return 1
+    fi
   done
-  echo "close" >> /tmp/getpkg
-  cd $ptcache
-  if ! lftp -f /tmp/getpkg ; then
-    echo "Failed to download the rootfs, aborting."
-    return 1
-  fi
-  rm -f /tmp/getpkg
   mv $ptcache $dlcache
   echo "Download complete."
   return 0
@@ -135,10 +133,8 @@ install_plamo() {
     echo "Installing packages to $rtcache..."
     if [ ! -d $rtcache ] ; then
       mkdir -p $rtcache
-      for i in `seq 0 $((${#CATEGORY[@]} - 1))` ; do
-        for p in ${PACKAGES[$i]} ; do
-          installpkg -root $rtcache -priority ADD $dlcache/$p-*.t?z
-        done
+      for p in `ls $dlcache` ; do
+        installpkg -root $rtcache -priority ADD $p
       done
     fi
     echo "Copy $rtcache to $rootfs..."
-- 
1.8.3.4 (Apple Git-47)



More information about the lxc-devel mailing list