Last active
February 26, 2017 05:34
-
-
Save furandon-pig/32f95165c990a8de1b4c2099b88cab66 to your computer and use it in GitHub Desktop.
NetBSDのソースコードを取得するシェルスクリプトです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# example) | |
# ${BASE_URL}/NetBSD-7.0/${SRC_DIR} | |
BASE_URL=http://ftp.jaist.ac.jp/pub/NetBSD/ | |
SRC_DIR=source/sets/ | |
TEMP_DIR=${HOME}/.nbsd_kernsrc_list | |
KERNSRC_LIST_HTML=${TEMP_DIR}/kernsrc_list.html | |
KERNSRC_LIST=${TEMP_DIR}/kernsrc_list.txt | |
DOWNLOAD_SRC_LIST=" | |
MD5 | |
SHA512 | |
sharesrc.tgz | |
syssrc.tgz | |
gnusrc.tgz | |
src.tgz | |
" | |
#xsrc.tgz 2015-09-25 17:03 158M | |
SRC_LIST_COUNT=0 | |
for i in ${DOWNLOAD_SRC_LIST} | |
do | |
SRC_LIST_COUNT=$((SRC_LIST_COUNT + 1)) | |
done | |
# detect OS type | |
if [ "`uname -s`" = 'NetBSD' ]; then | |
# NetBSD | |
CURL=curl | |
#elif [ -f /etc/lsb-release ]; then | |
# # Debian/Ubuntu | |
#elif [ -f /etc/redhat-release ]; then | |
# # RedHat/CentOS | |
else | |
echo 'Err: not supported OS.(T_T)' | |
exit 1 | |
fi | |
# check args | |
if [ $# -lt 1 ]; then | |
echo 'Err:' | |
exit 1 | |
fi | |
cmd=$1 | |
# create temp directory | |
[ ! -d ${TEMP_DIR} ] && mkdir -p ${TEMP_DIR} | |
# parse command and execute | |
case ${cmd} in | |
list) | |
if [ ! -f ${KERNSRC_LIST} ]; then | |
${CURL} -s -o ${KERNSRC_LIST_HTML} ${BASE_URL} | |
grep 'DIR.*href="NetBSD-[0-9]' ${KERNSRC_LIST_HTML} \ | |
| sed -e "s/\/<\/a.*$//" -e "s/^.*NetBSD/NetBSD/" \ | |
> ${KERNSRC_LIST} | |
fi | |
# listup source directory | |
echo " Available NetBSD source archive." | |
cat ${KERNSRC_LIST} | awk '{ print " * "$1 }' | |
;; | |
download) | |
target_version=$2 | |
if [ -z "${target_version}" ]; then | |
echo 'Err: download <NetBSD-version>' | |
exit 1 | |
fi | |
if [ `grep -w ${target_version} ${KERNSRC_LIST} | wc -l` -eq 0 ]; then | |
echo 'Err: not found source version.' | |
exit 1 | |
fi | |
count=1 | |
for item in ${DOWNLOAD_SRC_LIST} | |
do | |
url=${BASE_URL}/${target_version}/${SRC_DIR}/${item} | |
if [ ! -f ${item} ]; then | |
echo " [${count}/${SRC_LIST_COUNT}]download ${item}" | |
count=$((count + 1)) | |
curl -s -O ${url} | |
fi | |
done | |
;; | |
checksum) | |
for item in `/bin/ls *.tgz` | |
do | |
if [ ! -f ${item} ]; then | |
echo " [ OK ] ${item} (file not found)" | |
else | |
expect_val=`grep -w ${item} SHA512|awk '{ print $4 }'` | |
test_val=`shasum -a 512 ${item}|awk '{ print $1 }'` | |
if [ "${test_val}" = "${expect_val}" ]; then | |
echo " [ OK ] ${item}" | |
else | |
echo " [FAIL] ${item}" | |
fi | |
fi | |
done | |
;; | |
help) | |
echo ' list:' | |
echo ' show NetBSD version list.' | |
echo ' download <version>:' | |
echo ' download NetBSD source archive.' | |
echo ' checksum:' | |
echo ' check sha-512 each download files.' | |
echo ' help:' | |
echo ' show this message.' | |
echo | |
echo ' * download src files' | |
for item in ${DOWNLOAD_SRC_LIST} | |
do | |
echo " - ${item}" | |
done | |
;; | |
*) | |
echo "Err: unknown command '${cmd}'." | |
exit 1 | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment