Functional version 1.1
This commit is contained in:
		
							
								
								
									
										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=""
 | 
			
		||||
		Reference in New Issue
	
	Block a user