From 8b5c87f80170f814cad0cc9de6510d2bbc898038 Mon Sep 17 00:00:00 2001 From: Emiliano Vavassori Date: Sat, 7 Jan 2023 22:52:11 +0100 Subject: [PATCH 1/4] Correzioni su full path. --- loaih/build.py | 59 +++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/loaih/build.py b/loaih/build.py index b42c9ff..9116ad9 100644 --- a/loaih/build.py +++ b/loaih/build.py @@ -47,7 +47,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' @@ -126,11 +126,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): @@ -138,30 +149,27 @@ class Build(loaih.RemoteBuild): print("--- Check 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' + else: + self.repo_type = 'local' + if len(self.appimagefilename) != 2: self.calculate() for arch in self.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 + '/' + name 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" ) @@ -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* " + From 1f83db6105678aaf9a40cbf08c5bb5be7b17db9f Mon Sep 17 00:00:00 2001 From: Emiliano Vavassori Date: Sat, 7 Jan 2023 22:57:15 +0100 Subject: [PATCH 2/4] Ristrutturazione codice di verifica. --- loaih/build.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/loaih/build.py b/loaih/build.py index 9116ad9..e06a2b4 100644 --- a/loaih/build.py +++ b/loaih/build.py @@ -82,7 +82,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' @@ -149,13 +158,6 @@ class Build(loaih.RemoteBuild): print("--- Check 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' - else: - self.repo_type = 'local' - if len(self.appimagefilename) != 2: self.calculate() From 3a9f13594c62c621fb5b209f4eff46abd8dc1b8f Mon Sep 17 00:00:00 2001 From: Emiliano Vavassori Date: Sat, 7 Jan 2023 23:08:33 +0100 Subject: [PATCH 3/4] Fix probabilmente definitivo. --- loaih/build.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/loaih/build.py b/loaih/build.py index e06a2b4..8bf07fb 100644 --- a/loaih/build.py +++ b/loaih/build.py @@ -10,7 +10,6 @@ import re import shlex import tempfile import urllib.request -import hashlib from lxml import etree import loaih @@ -167,7 +166,7 @@ class Build(loaih.RemoteBuild): # Remote storage. I have to query a remote site to know if it # was already built. name = self.appimagefilename[arch] - url = self.storage_path.rstrip('/') + self.full_path + '/' + name + url = self.storage_path.rstrip('/') + self.full_path + '/' matching = [] try: with urllib.request.urlopen(url) as response: From b087e85ec5c3abfb1a0049065e2bb013e56b08aa Mon Sep 17 00:00:00 2001 From: Emiliano Vavassori Date: Sat, 7 Jan 2023 23:22:35 +0100 Subject: [PATCH 4/4] Semplificati alcuni messaggi nell'output. --- loaih/build.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/loaih/build.py b/loaih/build.py index 8bf07fb..0c619d5 100644 --- a/loaih/build.py +++ b/loaih/build.py @@ -161,6 +161,7 @@ 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.repo_type == 'remote': # Remote storage. I have to query a remote site to know if it @@ -184,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, @@ -198,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): @@ -214,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