1
0
Fork 0

Compare commits

...

4 Commits

Author SHA1 Message Date
Emiliano Vavassori b087e85ec5 Semplificati alcuni messaggi nell'output.
continuous-integration/drone/push Build is passing Details
2023-01-07 23:22:35 +01:00
Emiliano Vavassori 3a9f13594c Fix probabilmente definitivo.
continuous-integration/drone/push Build is passing Details
2023-01-07 23:08:33 +01:00
Emiliano Vavassori 1f83db6105 Ristrutturazione codice di verifica.
continuous-integration/drone/push Build is passing Details
2023-01-07 22:57:15 +01:00
Emiliano Vavassori 8b5c87f801 Correzioni su full path.
continuous-integration/drone/push Build is passing Details
2023-01-07 22:52:11 +01:00
1 changed files with 36 additions and 35 deletions

View File

@ -10,7 +10,6 @@ import re
import shlex
import tempfile
import urllib.request
import hashlib
from lxml import etree
import loaih
@ -47,7 +46,7 @@ class Build(loaih.RemoteBuild):
self.portable = False
self.updatable = True
self.sign = True
self.remoterepo = False
self.repo_type = 'local'
self.remote_host = ''
self.remote_path = ''
self.storage_path = '/mnt/appimage'
@ -82,7 +81,16 @@ class Build(loaih.RemoteBuild):
"""Calculate exclusions and other variables."""
print("--- Calculate Phase ---")
# let's check here if we are on a remote repo or local.
if self.storage_path.startswith("http"):
# Final repository is remote
self.repo_type = 'remote'
print("Repo is remote.")
else:
self.repo_type = 'local'
print("Repo is local.")
# AppName
if self.query in { 'prerelease', 'daily' }:
self.appname = 'LibreOfficeDev'
@ -126,11 +134,22 @@ class Build(loaih.RemoteBuild):
if self.portable:
self.relative_path.append('portable')
fullpath_arr = self.storage_path.split('/')
# Joining relative path only if it is not null
if len(self.relative_path) > 0:
fullpath_arr.extend(self.relative_path)
self.full_path = re.sub(r"/+", '/', str.join('/', fullpath_arr))
# Fullpath might be intended two ways:
if self.repo_type == 'remote':
# Repository is remote
# we build full_path as it is absolute to the root of the
# storage_path.
self.full_path = '/'
if len(self.relative_path) >= 1:
self.full_path += str.join('/', self.relative_path)
else:
# Repository is local
# If it is remote or if it is local
fullpath_arr = self.storage_path.split('/')
# Joining relative path only if it is not null
if len(self.relative_path) > 0:
fullpath_arr.extend(self.relative_path)
self.full_path = re.sub(r"/+", '/', str.join('/', fullpath_arr))
def check(self):
@ -142,26 +161,17 @@ class Build(loaih.RemoteBuild):
self.calculate()
for arch in self.arch:
print(f"Searching for {self.appimagefilename[arch]}")
# First, check if by metadata the repo is remote or not.
if self.remoterepo or 'http' in self.storage_path:
self.remoterepo = True
if self.repo_type == 'remote':
# Remote storage. I have to query a remote site to know if it
# was already built.
name = self.appimagefilename[arch]
if len(self.relative_path) == 0:
path_arr = [ self.storage_path, '' ]
elif len(self.relative_path) == 1:
path_arr = [ self.storage_path, self.relative_path[0], '' ]
else:
path_arr = self.relative_path
path_arr.insert(0, self.storage_path)
path = str.join('/', path_arr)
url = self.storage_path.rstrip('/') + self.full_path + '/'
matching = []
try:
with urllib.request.urlopen(path) as url:
matching = etree.HTML(url.read()).xpath(
with urllib.request.urlopen(url) as response:
matching = etree.HTML(response.read()).xpath(
f"//a[contains(@href, '{name}')]/@href"
)
@ -175,7 +185,6 @@ class Build(loaih.RemoteBuild):
else:
# Repo is local
print(f"Searching for {self.appimagefilename[arch]}")
command = f"find {self.full_path} -name {self.appimagefilename[arch]}"
res = subprocess.run(shlex.split(command),
capture_output=True,
@ -189,11 +198,10 @@ class Build(loaih.RemoteBuild):
if res.stdout and len(res.stdout.strip("\n")) > 0:
# All good, the command was executed fine.
print(f"Build for {self.version} found.")
self.built[arch] = True
if self.built[arch]:
print(f"The requested AppImage already exists on storage for {arch}. I'll skip downloading, building and moving the results.")
print(f"Found requested AppImage: {self.appimagefilename[arch]}.")
def download(self):
@ -205,7 +213,7 @@ class Build(loaih.RemoteBuild):
for arch in self.arch:
# Checking if a valid path has been provided
if self.url[arch] == '-':
print(f"No build has been provided for the requested AppImage for {arch}. Continue with other options.")
print(f"Cannot build for arch {arch}. Continuing with other arches.")
# Faking already built it so to skip other checks.
self.built[arch] = True
continue
@ -436,17 +444,10 @@ class Build(loaih.RemoteBuild):
os.chdir(self.appnamedir)
# Two cases here: local and remote storage_path.
if self.remoterepo:
if self.repo_type == 'remote':
# Remote first.
# Build destination directory
if len(self.relative_path) == 0:
remotepath = str.join('/', [ self.remote_path, '' ])
elif len(self.relative_path) == 1:
remotepath = str.join('/', [ self.remote_path, self.relative_path[0], '' ])
else:
path_arr = self.relative_path
path_arr.insert(0, self.remote_path)
remotepath = str.join('/', path_arr)
remotepath = self.remote_path.rstrip('/') + self.full_path
try:
subprocess.run(
r"rsync -rlIvz --munge-links *.AppImage* " +