1
0

Supporto a daily e prerelease.

This commit is contained in:
Emiliano Vavassori 2022-03-22 01:24:55 +01:00
parent d1a2b50461
commit 66bcd2b39c
2 changed files with 40 additions and 16 deletions

View File

@ -28,24 +28,26 @@ class Build(object):
# Creating a tempfile # Creating a tempfile
self.builddir = tempfile.mkdtemp() self.builddir = tempfile.mkdtemp()
self.tarballs = {} self.tarballs = {}
self.appname = 'LibreOffice' if not self.query == 'daily' else 'LibreOfficeDev' self.appname = 'LibreOffice' if not self.query == 'daily' and not self.query == 'prerelease' else 'LibreOfficeDev'
self.version = v.version self.version = v.version
self.url = v.basedirurl self.url = v.basedirurl
self.built = False self.built = False
# Building expected AppImageName # Building expected AppImageName
languagepart = "." self.languagepart = "."
if ',' in self.language: if ',' in self.language:
languagepart += self.language.replace(',', '-') self.languagepart += self.language.replace(',', '-')
else: else:
languagepart += self.language self.languagepart += self.language
self.appimagefilename[u'x86'] = self.appname + '-' + self.version + languagepart + ('.help' if self.offline_help else '') + '-x86.AppImage' self.appimagefilename[u'x86'] = self.appname + '-' + self.version + self.languagepart + ('.help' if self.offline_help else '') + '-x86.AppImage'
self.appimagefilename[u'x86_64'] = self.appname + '-' + v.version + languagepart + ('.help' if self.offline_help else '') + '-x86_64.AppImage' self.appimagefilename[u'x86_64'] = self.appname + '-' + v.version + self.languagepart + ('.help' if self.offline_help else '') + '-x86_64.AppImage'
def check(self, storage_path): def check(self, storage_path):
"""Checking if the requested AppImage has been already built.""" """Checking if the requested AppImage has been already built."""
self.storage_path += ('/daily' if self.query == 'daily' else '')
self.storage_path += ('/prerelease' if self.query == 'prerelease' else '')
self.storage_path = storage_path + ('/portable' if self.portable else '') self.storage_path = storage_path + ('/portable' if self.portable else '')
# Incompatibilities - if portable and updatable are asked together, # Incompatibilities - if portable and updatable are asked together,
# only portable will be built. # only portable will be built.
@ -196,8 +198,13 @@ class Build(object):
# Building app # Building app
if self.updatable: if self.updatable:
# for the daily build, updatable builds work if the latest one
# provide updates.
if self.query == 'daily':
zsync = self.appname + self.version.split('-')[0] + self.languagepart + ('.help' if self.offline_help else '') + '-' + arch + '.AppImage.zsync'
else:
zsync = self.appimagefilename[arch] + '.zsync' zsync = self.appimagefilename[arch] + '.zsync'
subprocess.run("VERSION={version} ./appimagetool -u 'zsync|{zsync}' -v ./{appname}.AppDir/".format(version = appversion, zsync = self.appimagefilename[arch] + '.zsync', appname = self.appname), shell=True) subprocess.run("VERSION={version} ./appimagetool -u 'zsync|{zsync}' -v ./{appname}.AppDir/".format(version = appversion, zsync = zsync, appname = self.appname), shell=True)
else: else:
subprocess.run("VERSION={version} ./appimagetool -v ./{appname}.AppDir/".format(version = appversion, appname = self.appname), shell=True) subprocess.run("VERSION={version} ./appimagetool -v ./{appname}.AppDir/".format(version = appversion, appname = self.appname), shell=True)

View File

@ -8,7 +8,8 @@ from packaging.version import parse as parse_version
class BuildVersion(object): class BuildVersion(object):
ARCHIVE = "https://downloadarchive.documentfoundation.org/libreoffice/old/" ARCHIVE = "https://downloadarchive.documentfoundation.org/libreoffice/old/"
RELEASE = "https://download.documentfoundation.org/libreoffice/stable/" RELEASE = "https://download.documentfoundation.org/libreoffice/stable/"
DAILY = "https://dev-builds.libreoffice.org/daily/master/Linux-rpm_deb-x86_64@tb87-TDF/current/" DAILY = "https://dev-builds.libreoffice.org/daily/master/Linux-rpm_deb-x86_64@tb87-TDF/"
PRERELEASE = "https://dev-builds.libreoffice.org/pre-releases/deb/x86_64/"
def __init__(self, query): def __init__(self, query):
self.query = query self.query = query
@ -45,17 +46,33 @@ class BuildVersion(object):
basedirurl = {} basedirurl = {}
version = '' version = ''
if branch == 'daily': if branch == 'daily':
basedirurl = { 'x86_64': BuildVersion.DAILY, 'x86': '-' } # The daily builds can be mostly distinguished by the day of build
version = etree.HTML(urllib.request.urlopen(BuildVersion.DAILY).read()).xpath('//td/a')[1].text.split('_')[1] # (official version is constant.
# The last built version is the next-to-last version [-2] on the page.
fulldailypath = etree.HTML(urllib.request.urlopen(BuildVersion.DAILY).read()).xpath('//td/a')[-2].text
dailyversion = fulldailypath.split('_')[0].replace('-', '')
version
newurl = str.join('/', [ BuildVersion.DAILY, fulldailypath, '' ])
basedirurl = { u'x86_64': newurl, u'x86': '-' }
version = etree.HTML(urllib.request.urlopen(newurl).read()).xpath('//td/a')[1].text.split('_')[1]
return { 'version': version + '-' + dailyversion, 'basedirurl': basedirurl }
if branch == 'prerelease':
version = etree.HTML(urllib.request.urlopen(BuildVersion.PRERELEASE).read()).xpath('//td/a')[1].text.split('_')[1]
basedirurl = { u'x86': '-', u'x86_64': BuildVersion.PRERELEASE }
return { 'version': version, 'basedirurl': basedirurl } return { 'version': version, 'basedirurl': basedirurl }
# Stable releases.
versions = etree.HTML(urllib.request.urlopen(BuildVersion.RELEASE).read()).xpath('//td/a') versions = etree.HTML(urllib.request.urlopen(BuildVersion.RELEASE).read()).xpath('//td/a')
index = 1 index = 1
if branch == 'still': if branch == 'still':
index = 2 index = -2
elif branch == 'fresh': elif branch == 'fresh':
index = 3 index = -1
version = self.__getlatestrel(versions[index].text.strip('/')) version = self.__getlatestrel(versions[index].text.strip('/'))
return { 'version': version, 'basedirurl': self.__getbaseurl(version) } return { 'version': version, 'basedirurl': self.__getbaseurl(version) }
@ -67,10 +84,10 @@ class BuildVersion(object):
# x86 binaries are not anymore offered after 6.3.0. # x86 binaries are not anymore offered after 6.3.0.
if parse_version(version) < parse_version('6.3.0'): if parse_version(version) < parse_version('6.3.0'):
basedirurl['x86'] = url + 'x86/' basedirurl[u'x86'] = url + 'x86/'
else: else:
basedirurl['x86'] = '-' basedirurl[u'x86'] = '-'
basedirurl['x86_64'] = url + 'x86_64/' basedirurl[u'x86_64'] = url + 'x86_64/'
return basedirurl return basedirurl