mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-07-11 23:21:57 +00:00
fix lockup in _open_socket_if_not_exists, probably fix ci prereleases
This commit is contained in:
@@ -105,15 +105,29 @@ jobs:
|
|||||||
name: PluginLoader
|
name: PluginLoader
|
||||||
path: dist
|
path: dist
|
||||||
|
|
||||||
|
- name: Get tag 🏷️
|
||||||
|
id: old_tag
|
||||||
|
uses: rafarlopes/get-latest-pre-release-tag-action@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
repository: 'decky-loader'
|
||||||
|
|
||||||
|
- name: Prepare tag ⚙️
|
||||||
|
id: ready_tag
|
||||||
|
run: |
|
||||||
|
echo ::set-output name=${${{ jobs.old_tag.outputs.tag }}#"-pre"}
|
||||||
|
|
||||||
- name: Bump version ⏫
|
- name: Bump version ⏫
|
||||||
id: tag_version
|
id: tag_version
|
||||||
uses: mathieudutour/github-tag-action@v6.0
|
uses: anothrNick/github-tag-action@1.39.0
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
if: ${{ github.event_name == 'workflow_dispatch' }}
|
||||||
with:
|
with:
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
dry_run: true
|
WITH_V: true
|
||||||
|
INITIAL_VERSION: ${{ jobs.ready_tag.outputs.name }}
|
||||||
|
|
||||||
- name: Push tag ⏫
|
- name: Push tag 📤
|
||||||
uses: rickstaa/action-create-tag@v1.3.2
|
uses: rickstaa/action-create-tag@v1.3.2
|
||||||
if: ${{ steps.tag_version.outputs.new_tag && github.event_name == 'workflow_dispatch' }}
|
if: ${{ steps.tag_version.outputs.new_tag && github.event_name == 'workflow_dispatch' }}
|
||||||
with:
|
with:
|
||||||
@@ -130,14 +144,14 @@ jobs:
|
|||||||
prerelease: true
|
prerelease: true
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
|
|
||||||
- name: Bump prerelease
|
- name: Bump prerelease ⏫
|
||||||
id: bump
|
id: bump
|
||||||
if: ${{ github.event_name == 'schedule' }}
|
if: ${{ github.event_name == 'schedule' }}
|
||||||
run: |
|
run: |
|
||||||
git_hash=$(git rev-parse --short "$GITHUB_SHA")
|
git_hash=$(git rev-parse --short "$GITHUB_SHA")
|
||||||
echo ::set-output new_tag="nightly-$git_hash"
|
echo ::set-output new_tag="nightly-$git_hash"
|
||||||
|
|
||||||
- name: Push tag ⏫
|
- name: Push tag 📤
|
||||||
uses: rickstaa/action-create-tag@v1.3.2
|
uses: rickstaa/action-create-tag@v1.3.2
|
||||||
if: ${{ github.event_name == 'schedule' }}
|
if: ${{ github.event_name == 'schedule' }}
|
||||||
with:
|
with:
|
||||||
|
|||||||
+20
-15
@@ -78,12 +78,17 @@ class PluginWrapper:
|
|||||||
|
|
||||||
async def _open_socket_if_not_exists(self):
|
async def _open_socket_if_not_exists(self):
|
||||||
if not self.reader:
|
if not self.reader:
|
||||||
while True:
|
retries = 0
|
||||||
|
while retries < 10:
|
||||||
try:
|
try:
|
||||||
self.reader, self.writer = await open_unix_connection(self.socket_addr)
|
self.reader, self.writer = await open_unix_connection(self.socket_addr)
|
||||||
break
|
return True
|
||||||
except:
|
except:
|
||||||
await sleep(0)
|
await sleep(2)
|
||||||
|
retries += 1
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
if self.passive:
|
if self.passive:
|
||||||
@@ -95,21 +100,21 @@ class PluginWrapper:
|
|||||||
if self.passive:
|
if self.passive:
|
||||||
return
|
return
|
||||||
async def _(self):
|
async def _(self):
|
||||||
await self._open_socket_if_not_exists()
|
if await self._open_socket_if_not_exists():
|
||||||
self.writer.write((dumps({"stop": True})+"\n").encode("utf-8"))
|
self.writer.write((dumps({"stop": True})+"\n").encode("utf-8"))
|
||||||
await self.writer.drain()
|
await self.writer.drain()
|
||||||
self.writer.close()
|
self.writer.close()
|
||||||
get_event_loop().create_task(_(self))
|
get_event_loop().create_task(_(self))
|
||||||
|
|
||||||
async def execute_method(self, method_name, kwargs):
|
async def execute_method(self, method_name, kwargs):
|
||||||
if self.passive:
|
if self.passive:
|
||||||
raise RuntimeError("This plugin is passive (aka does not implement main.py)")
|
raise RuntimeError("This plugin is passive (aka does not implement main.py)")
|
||||||
async with self.method_call_lock:
|
async with self.method_call_lock:
|
||||||
await self._open_socket_if_not_exists()
|
if await self._open_socket_if_not_exists():
|
||||||
self.writer.write(
|
self.writer.write(
|
||||||
(dumps({"method": method_name, "args": kwargs})+"\n").encode("utf-8"))
|
(dumps({"method": method_name, "args": kwargs})+"\n").encode("utf-8"))
|
||||||
await self.writer.drain()
|
await self.writer.drain()
|
||||||
res = loads((await self.reader.readline()).decode("utf-8"))
|
res = loads((await self.reader.readline()).decode("utf-8"))
|
||||||
if not res["success"]:
|
if not res["success"]:
|
||||||
raise Exception(res["res"])
|
raise Exception(res["res"])
|
||||||
return res["res"]
|
return res["res"]
|
||||||
|
|||||||
Reference in New Issue
Block a user