Functional version 1.1
This commit is contained in:
parent
dfd59d987e
commit
8a64dc90c5
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
variables.conf
|
@ -4,11 +4,14 @@
|
||||
### Version 1
|
||||
In a nutshell:
|
||||
* this script is run punctually, on a dedicated Arch VM;
|
||||
* Proces:
|
||||
* Process:
|
||||
* it takes all packages in the repository;
|
||||
* checks online if a new version is available
|
||||
* if so build it and then add it to the repository
|
||||
|
||||
### Version 1.1
|
||||
Version 1.1 is an adapted version 1, with remote repository. The idea is to replace NFS by FTP for everything related
|
||||
Version 1.1 is an adapted version 1, with remote repository. The idea is to replace NFS by SCP for everything related
|
||||
with connection to repository.
|
||||
|
||||
#### TODO
|
||||
* clear function is not implemented yet
|
||||
|
@ -9,6 +9,7 @@
|
||||
# Make sure the following packages are installed before running this script:
|
||||
# package-query aurutils git
|
||||
|
||||
|
||||
# Functions
|
||||
|
||||
##################################################################
|
||||
@ -81,19 +82,21 @@ init() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source ../variables.conf
|
||||
eval "$(ssh-agent)"
|
||||
ssh-add $ssh_key
|
||||
|
||||
# TODO Check if required packages are installed
|
||||
|
||||
echo "ArchRepo update script"
|
||||
}
|
||||
|
||||
ftpFetch() {
|
||||
ftp fetch $remote_repository/$repo_db_file $run_directory_path # TODO use real syntax ^^'
|
||||
}
|
||||
|
||||
checkUpdates() {
|
||||
echo "Checking for updates:"
|
||||
upgraded_packages=""
|
||||
#stream=$(tar xOf $repo_directory/$repo_db_file --wildcards */desc | awk -f $awk_rules_file)
|
||||
scp $ssh_options $remote_repository/$repo_db_file $remote_repository/$repo_db_filesfile $run_directory_path/
|
||||
# scp $ssh_options $remote_repository/$repo_db_file $run_directory_path/
|
||||
# cp $run_directory_path/../$repo_db_filesfile $run_directory_path/
|
||||
stream=$(tar xOf $run_directory_path/$repo_db_file --wildcards */desc | awk -f $awk_rules_file)
|
||||
|
||||
OIFS=$IFS
|
||||
@ -122,7 +125,6 @@ checkUpdates() {
|
||||
continue 1
|
||||
fi
|
||||
|
||||
exlist=""
|
||||
if echo $exlist | grep -w $name > /dev/null; then
|
||||
echo -e "\nSkipping $name ($version, temporary exception)."
|
||||
continue 1
|
||||
@ -135,6 +137,7 @@ checkUpdates() {
|
||||
result=$?
|
||||
if [[ $result -eq 1 ]]; then
|
||||
echo "New version for $name: $version -> $aur_version"
|
||||
IFS=$OIFS
|
||||
createPackage $name
|
||||
addPackageToRepo $name $aur_version
|
||||
upgraded_packages="$upgraded_packages $name"
|
||||
@ -161,33 +164,28 @@ createPackage() { # Create package $1
|
||||
aur fetch $1 # TODO This could be replaced by a git clone or even a wget+tar thanks to package-query
|
||||
echo "Making $1 package..."
|
||||
cd $1
|
||||
# if linux-lts{414,49} then download kernel source from local repo (saves ~100MB each time)
|
||||
# WARNING this onlys works because we already have said sources AND because PKBUILD follow this particular line
|
||||
# (not the same in 419 nor 54)
|
||||
reg="(linux-lts).+"
|
||||
if [[ $1 =~ $reg ]]; then
|
||||
sed -i -e "s/\"https:\/\/www.kernel.org\/pub\/linux\/kernel\/v4.x\/\${_srcname}.tar.xz\"/\"https:\/\/archlinux.kto.black\/resources\/\${_srcname}.tar.xz\"/g" ./PKGBUILD
|
||||
fi
|
||||
## if linux-lts{414,49} then download kernel source from local repo (saves ~100MB each time)
|
||||
## WARNING this onlys works because we already have said sources AND because PKBUILD follow this particular line
|
||||
## (not the same in 419 nor 54)
|
||||
#reg="(linux-lts).+"
|
||||
#if [[ $1 =~ $reg ]]; then
|
||||
#sed -i -e "s/\"https:\/\/www.kernel.org\/pub\/linux\/kernel\/v4.x\/\${_srcname}.tar.xz\"/\"https:\/\/archlinux.kto.black\/resources\/\${_srcname}.tar.xz\"/g" ./PKGBUILD
|
||||
#fi
|
||||
makepkg -s --noconfirm --noprogressbar
|
||||
cd $run_directory_path
|
||||
}
|
||||
|
||||
ftpSend() {
|
||||
|
||||
}
|
||||
|
||||
# TODO: try manually: can we update db file before sending to remote repo?
|
||||
addPackageToRepo() { # Add package $1
|
||||
echo "Adding $1 to repository..."
|
||||
#cp $run_directory_path/$1/$1-$2*.pkg.tar.xz $repo_directory
|
||||
repo-add $repo_db_file $1-$2*.pkg.tar.xz
|
||||
ftp send $repo_db_file $repo_db_file.old $remote_repository
|
||||
ftp send packages $remote_repository
|
||||
scp $ssh_options $run_directory_path/$1/$1-$2*.pkg.tar.xz $remote_repository/
|
||||
repo-add $repo_db_file $run_directory_path/$1/$1-$2*.pkg.tar.xz
|
||||
scp $ssh_options $run_directory_path/$repo_db_file $run_directory_path/$repo_db_file.old $run_directory_path/$repo_db_filesfile $run_directory_path/$repo_db_filesfile.old $remote_repository/
|
||||
reg="(linux-lts).+"
|
||||
if [[ $name =~ $reg ]]; then
|
||||
echo "Adding $1-headers and $1-docs to repository..."
|
||||
cp $run_directory_path/$1/$1-headers-$2*.pkg.tar.xz $run_directory_path/$1/$1-docs-$2*.pkg.tar.xz $repo_directory
|
||||
repo-add $repo_directory/$repo_db_file $repo_directory/$1-headers-$2*.pkg.tar.xz $repo_directory/$1-docs-$2*.pkg.tar.xz
|
||||
repo-add $repo_db_file $run_directory_path/$1/$1-headers-$2*.pkg.tar.xz $run_directory_path/$1/$1-docs-$2*.pkg.tar.xz
|
||||
scp $ssh_options $run_directory_path/$1/$1-headers-$2*.pkg.tar.xz $run_directory_path/$1/$1-docs-$2*.pkg.tar.xz $remote_repository/
|
||||
fi
|
||||
}
|
||||
|
||||
@ -246,8 +244,8 @@ run_directory_path=$(pwd)
|
||||
repo_directory='/mnt/archrepo'
|
||||
repo_name='kto'
|
||||
repo_db_file=$repo_name.db.tar
|
||||
repo_db_filesfile=$repo_name.files.tar
|
||||
awk_rules_file='../parser.awk'
|
||||
#repo_db_file='kto.db.tar' # You can set db name manually here if different
|
||||
|
||||
# Main process
|
||||
|
||||
|
9
variables.conf.template
Normal file
9
variables.conf.template
Normal file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copy this file as variables.conf, with the correct values
|
||||
|
||||
remote_repository=""
|
||||
ssh_key=""
|
||||
ssh_options=""
|
||||
|
||||
exlist=""
|
Loading…
Reference in New Issue
Block a user