diff --git a/bin/buildiso.in b/bin/buildiso.in
index 8579f52..17be8ac 100755
--- a/bin/buildiso.in
+++ b/bin/buildiso.in
@@ -53,6 +53,11 @@ show_profile(){
msg2 "start_openrc_live: %s" "${start_openrc_live[*]}"
msg2 "disable_openrc: %s" "${disable_openrc[*]}"
fi
+ if ${is_torrent};then
+ msg2 "tracker_url: %s" "${tracker_url}"
+ msg2 "piece_size: %s" "${piece_size}"
+ msg2 "mktorrent_args: %s" "${mktorrent_args[*]}"
+ fi
fi
reset_profile
}
@@ -81,6 +86,7 @@ display_settings(){
msg2 "images_only: %s" "${images_only}"
msg2 "iso_only: %s" "${iso_only}"
msg2 "sign: %s" "${sign}"
+ msg2 "is_torrent: %s" "${is_torrent}"
msg "DIST SETTINGS:"
msg2 "dist_name: %s" "${dist_name}"
@@ -115,6 +121,7 @@ images_only=false
iso_only=false
verbose=false
sign=false
+is_torrent=false
usage() {
echo "Usage: ${0##*/} [options]"
@@ -134,6 +141,7 @@ usage() {
echo ' -x Build images only'
echo ' -z Generate iso only'
echo ' Requires pre built images (-x)'
+ echo ' -w Create iso torrent'
echo ' -v Verbose output to log file, show profile detail (-q)'
echo ' -q Query settings and pretend build'
echo ' -h This help'
@@ -144,7 +152,7 @@ usage() {
orig_argv=("$@")
-opts='p:a:b:r:t:k:i:czxsvqh'
+opts='p:a:b:r:t:k:i:czxswvqh'
while getopts "${opts}" arg; do
case "${arg}" in
@@ -159,6 +167,7 @@ while getopts "${opts}" arg; do
c) clean_first=false ;;
x) images_only=true ;;
z) iso_only=true ;;
+ w) is_torrent=true ;;
v) verbose=true ;;
q) pretend=true ;;
h|?) usage 0 ;;
diff --git a/bin/deployiso.in b/bin/deployiso.in
index 21a5bf7..1e5686f 100644
--- a/bin/deployiso.in
+++ b/bin/deployiso.in
@@ -22,6 +22,7 @@ import ${LIBDIR}/util-publish.sh
show_profile(){
prepare_transfer "$1"
info "Profile: [$1]"
+ msg2 "remote_project: %s" "${remote_project}"
msg2 "src_dir: ${src_dir}"
msg2 "remote_dir: ${remote_dir}"
}
@@ -37,30 +38,20 @@ display_settings(){
msg2 "is_build_list: %s" "${is_build_list}"
msg "OPTIONS:"
-# msg2 "arch: %s" "${target_arch}"
-# msg2 "initsys: %s" "${initsys}"
msg2 "limit: %s kB/s" "${limit}"
msg "ARGS:"
msg2 "update: %s" "${update}"
msg2 "release_create: %s" "${release_create}"
-# msg2 "torrent_create: %s" "${torrent_create}"
msg2 "verbose: %s" "${verbose}"
msg2 "rsync_args: %s" "${rsync_args[*]}"
-# ${torrent_create} && msg2 "mktorrent_args: %s" "${mktorrent_args[*]}"
msg "HOST:"
msg2 "dist_release: %s" "${dist_release}"
msg "REMOTE:"
-# msg2 "remote_url: %s" "${remote_url}"
- msg2 "remote_project: %s" "${remote_project}"
-# msg2 "remote_target: %s" "${remote_target}"
msg2 "remote_user: %s" "${remote_user}"
-# if ${torrent_create};then
-# msg2 "tracker_url: %s" "${tracker_url}"
-# msg2 "piece_size: %s" "${piece_size}"
-# fi
+
msg "UPLOAD QUEUE:"
run show_profile "${build_list_iso}"
}
@@ -75,20 +66,15 @@ pretend=false
release_create=false
update=false
verbose=false
-# torrent_create=false
rsync_args=(-aP --progress -e ssh)
-# mktorrent_args=(-v -p)
usage() {
echo "Usage: ${0##*/} [options]"
echo " -p Source folder to upload [default:${build_list_iso}]"
-# echo " -a Arch to upload [default:${target_arch}]"
-# echo " -i The iso's init system [default:${initsys}]"
echo " -l Limit bandwidth in kB/s [default:${limit}]"
echo ' -c Create new remote release directory'
-# echo ' -t Create a torrent from source folder'
- echo ' -u Update remote iso'
+ echo ' -u Update remote directory'
echo ' -q Query settings and pretend upload'
echo ' -v Verbose output'
echo ' -h This help'
@@ -102,11 +88,8 @@ opts='p:l:cuvqh'
while getopts "${opts}" arg; do
case "${arg}" in
p) build_list_iso="$OPTARG" ;;
-# a) target_arch="$OPTARG" ;;
-# i) initsys="$OPTARG" ;;
l) limit="$OPTARG" ;;
c) release_create=true ;;
-# t) torrent_create=true ;;
u) update=true; rsync_args+=(-u) ;;
v) verbose=true; rsync_args+=(-v --stats) ;;
q) pretend=true; rsync_args+=(-n) ;;
@@ -122,7 +105,6 @@ timer_start=$(get_timer)
eval_build_list "${list_dir_iso}" "${build_list_iso}"
rsync_args+=(--bwlimit=${limit})
-# mktorrent_args+=(-l ${piece_size} -a ${tracker_url})
${pretend} && display_settings && exit 1
diff --git a/data/profile.conf.example b/data/profile.conf.example
index 14c3b4e..74bbd9b 100644
--- a/data/profile.conf.example
+++ b/data/profile.conf.example
@@ -21,6 +21,12 @@
# use pxe
# pxe_boot="true"
+# the torrent tracker urls, comma separated
+# tracker_url=''
+
+# Piece size, 2^n
+# piece_size=21
+
################ install ################
# possible values: grub;systemd-boot
diff --git a/docbook/buildiso.xml b/docbook/buildiso.xml
index 76494c3..790fded 100644
--- a/docbook/buildiso.xml
+++ b/docbook/buildiso.xml
@@ -140,7 +140,13 @@
Generate iso from already created images, for example created with the -x option.
-
+
+
+
+ Create a torrent from iso file.
+
+
+
Verbose output to log file, show profile detail in combination with pretend.
diff --git a/docbook/deployiso.xml b/docbook/deployiso.xml
index 78e0101..2ef0fb4 100644
--- a/docbook/deployiso.xml
+++ b/docbook/deployiso.xml
@@ -77,21 +77,10 @@
you will upload.
-
-
-
- Architecture of the iso to upload. Can be i686 or x86_64.
-
-
- Create new remote edition_type with subtree.
-
-
-
-
- Create a torrent from the source directory.
+ Create new remote release.
diff --git a/docbook/manjaro-tools.conf.xml b/docbook/manjaro-tools.conf.xml
index 431b5ec..f8389c9 100644
--- a/docbook/manjaro-tools.conf.xml
+++ b/docbook/manjaro-tools.conf.xml
@@ -118,6 +118,21 @@
packages.
+
+
+
@@ -282,27 +297,6 @@
-
- remote_url=
-
- Default url to be used for upload.
-
-
-
-
- remote_project=
-
- Default project to be used for upload.
-
-
-
-
- remote_target=
-
- Default server path to be used for upload.
-
-
-
remote_user=
@@ -317,20 +311,7 @@
-
- tracker_url=
- Default tracker announce for the torrent.
- The tracker url can also contain comma separated urls.
-
-
-
-
- piece_size=
-
- Default priece size for the torrent in 2^n.
-
-
diff --git a/docbook/profile.conf.xml b/docbook/profile.conf.xml
index 27ff8a3..2550f62 100644
--- a/docbook/profile.conf.xml
+++ b/docbook/profile.conf.xml
@@ -232,6 +232,21 @@
+
+ tracker_url=
+
+ Default tracker announce for the torrent.
+ The tracker url can also contain comma separated urls.
+
+
+
+
+ piece_size=
+
+ Default priece size for the torrent in 2^n.
+
+
+
diff --git a/lib/util-iso.sh b/lib/util-iso.sh
index ff2bd7f..337b7e6 100644
--- a/lib/util-iso.sh
+++ b/lib/util-iso.sh
@@ -593,12 +593,25 @@ sign_iso(){
su ${OWNER} -c "signfile ${iso_dir}/$1"
}
+make_torrent(){
+ msg2 "Creating torrent ..."
+ local name=$(gen_iso_fn).torrent
+ [[ -f ${iso_dir}/${name} ]] && rm ${iso_dir}/${name}
+ if [[ "${edition}" == 'official' ]];then
+ set_remote_project "${edition}"
+ local webseed_url="http://${remote_url}/projects/${remote_project}/${dist_release}/${profile}/${iso_file}"
+ mktorrent_args+=(-w ${webseed_url})
+ fi
+ mktorrent ${mktorrent_args[*]} -o ${iso_dir}/${name} ${iso_dir}
+}
+
compress_images(){
local timer=$(get_timer)
run_safe "make_iso"
make_checksum "${iso_file}"
chown -R "${OWNER}:users" "${iso_dir}"
${sign} && sign_iso "${iso_file}"
+ ${is_torrent} && make_torrent
show_elapsed_time "${FUNCNAME}" "${timer}"
}
@@ -694,6 +707,8 @@ load_profile(){
iso_dir="${cache_dir_iso}/${edition}/${dist_release}/${profile}"
prepare_dir "${iso_dir}"
+
+ mktorrent_args=(-v -p -l ${piece_size} -a ${tracker_url})
}
get_edition(){
diff --git a/lib/util-publish.sh b/lib/util-publish.sh
index e90f06b..980757e 100644
--- a/lib/util-publish.sh
+++ b/lib/util-publish.sh
@@ -9,37 +9,6 @@
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-# create_subtree_ssh(){
-# local tree=${remote_target}/${remote_project}/${remote_dir}
-# ssh !${remote_user}@${shell_url} [[ ! -d $tree ]] && mkdir -pv $tree
-# }
-
-# gen_iso_fn(){
-# local vars=() name
-# vars+=("${iso_name}")
-# [[ -n ${1} ]] && vars+=("${1}")
-# [[ ${edition} == 'community' ]] && vars+=("${edition}")
-# [[ ${initsys} == 'openrc' ]] && vars+=("${initsys}")
-# vars+=("${dist_release}")
-# vars+=("${target_arch}")
-# for n in ${vars[@]};do
-# name=${name:-}${name:+-}${n}
-# done
-# echo $name
-# }
-#
-# create_torrent(){
-# msg "Create %s.torrent" "$1"
-# local name=$(gen_iso_fn "$1")
-# [[ -f ${src_dir}/${name}.torrent ]] && rm ${src_dir}/${name}.torrent
-# if [[ "${edition}" == 'official' ]];then
-# local webseed_url="http://${remote_url}/projects/${remote_project}/${remote_dir}/${name}.iso"
-# mktorrent_args+=(-w ${webseed_url})
-# fi
-# mktorrent ${mktorrent_args[*]} -o ${src_dir}/${name}.torrent ${src_dir}
-# msg "Done %s.torrent" "$1"
-# }
-
create_release(){
msg2 "Create release (%s) ..." "${dist_release}"
rsync ${rsync_args[*]} /dev/null ${sf_url}/${dist_release}/
@@ -48,29 +17,23 @@ create_release(){
get_edition(){
local result=$(find ${run_dir} -maxdepth 3 -name "$1") path
- [[ -z $result ]] && die "%s is not a valid profile or build list!" "$1"
+# [[ -z $result ]] && die "%s is not a valid profile or build list!" "$1"
path=${result%/*}
path=${path%/*}
echo ${path##*/}
}
prepare_transfer(){
- edition=$(get_edition $1)
- case ${edition} in
- 'community'|'minimal') remote_project='manjaro-community' ;;
- 'official') remote_project='manjaro' ;;
- esac
+ local edition=$(get_edition $1)
+ set_remote_project "${edition}"
sf_url=${remote_user},${remote_project}@frs.${remote_url}:${remote_target}/${remote_project}
-# shell_url=${remote_user},${remote_project}@shell.${remote_url}
-
remote_dir="${dist_release}/$1"
src_dir="${run_dir}/${edition}/${remote_dir}"
}
sync_dir(){
prepare_transfer "$1"
-# ${torrent_create} && create_torrent "$1"
${release_create} && create_release "$1"
msg "Start upload [%s] ..." "$1"
rsync ${rsync_args[*]} ${src_dir}/ ${sf_url}/${remote_dir}/
diff --git a/lib/util.sh b/lib/util.sh
index 067d95b..5223cee 100644
--- a/lib/util.sh
+++ b/lib/util.sh
@@ -141,6 +141,13 @@ show_elapsed_time(){
info "Time %s: %s minutes" "$1" "$(elapsed_time $2)"
}
+set_remote_project(){
+ case "$1" in
+ 'community'|'minimal') remote_project='manjaro-community' ;;
+ 'official') remote_project='manjaro' ;;
+ esac
+}
+
lock() {
eval "exec $1>"'"$2"'
if ! flock -n $1; then
@@ -226,6 +233,10 @@ init_common(){
[[ -z ${build_mirror} ]] && build_mirror='http://mirror.netzspielplatz.de/manjaro/packages'
[[ -z ${tmp_dir} ]] && tmp_dir='/tmp/manjaro-tools'
+
+ [[ -z ${remote_url} ]] && remote_url="sourceforge.net"
+
+ [[ -z ${remote_target} ]] && remote_target="/home/frs/project"
}
init_buildtree(){
@@ -312,19 +323,9 @@ init_buildiso(){
init_deployiso(){
- [[ -z ${remote_target} ]] && remote_target="/home/frs/project"
-
-# [[ -z ${remote_project} ]] && remote_project="manjaro-testing"
-
[[ -z ${remote_user} ]] && remote_user="[SetUser]"
- [[ -z ${remote_url} ]] && remote_url="sourceforge.net"
-
[[ -z ${limit} ]] && limit=100
-
-# [[ -z ${tracker_url} ]] && tracker_url=""
-#
-# [[ -z ${piece_size} ]] && piece_size=21
}
load_config(){
@@ -371,6 +372,8 @@ reset_profile(){
unset packages_custom
unset packages_mhwd
unset login_shell
+ unset tracker_url
+ unset piece_size
}
is_valid_bool(){
@@ -458,6 +461,10 @@ load_profile_config(){
start_openrc_live=('manjaro-live' 'mhwd-live' 'pacman-init')
fi
+ [[ -z ${tracker_url} ]] && tracker_url=()
+
+ [[ -z ${piece_size} ]] && piece_size=21
+
check_profile_vars
return 0