hackage.sh 1014 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/bin/bash
  2. function remove_broken() {
  3. working_dir=$1
  4. cd $working_dir
  5. mkdir -p package
  6. filelist="/tmp/hackage_filelist_$$.txt"
  7. brokenlist="/tmp/hackage_brokenlist_$$.txt"
  8. ls > ${filelist}
  9. touch $brokenlist
  10. while read line; do echo $line ; tar -tzf $line >/dev/null || echo $line >>$brokenlist; done <$filelist
  11. cat $brokenlist | xargs rm
  12. rm $brokenlist
  13. }
  14. function hackage_mirror() {
  15. working_dir=$1
  16. cd $working_dir
  17. # echo "Cleaning up..."
  18. # rm 00-index.tar.gz
  19. mkdir -p package
  20. echo "Downloading index..."
  21. rm index.tar.gz
  22. axel http://hdiff.luite.com/packages/archive/index.tar.gz -o index.tar.gz
  23. for splitpk in `tar ztf index.tar.gz | cut -d/ -f 1,2 2>/dev/null`; do
  24. pk=`echo $splitpk | sed 's|/|-|'`
  25. name=$pk.tar.gz
  26. if [[ ! -a package/$name ]]; then
  27. axel http://hackage.haskell.org/package/$pk/$name -o package/$name
  28. fi
  29. done
  30. rm package/preferred-versions.tar.gz
  31. cp index.tar.gz 00-index.tar.gz
  32. }
  33. remove_broken "${TUNASYNC_WORKING_DIR}/"
  34. hackage_mirror "${TUNASYNC_WORKING_DIR}/"