summaryrefslogtreecommitdiff
path: root/org.metamuffin.hurrycurry.client.yaml
blob: 2bf669ef61d22b6b38d3c18e6440abc4dae0a554 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
app-id: org.metamuffin.hurrycurry.client
runtime: org.freedesktop.Platform
runtime-version: "24.08"
sdk: org.freedesktop.Sdk
sdk-extensions:
  - org.freedesktop.Sdk.Extension.node20
command: hurrycurry
finish-args:
  - --share=ipc
  - --socket=wayland
  - --socket=fallback-x11
  - --socket=pulseaudio
  - --device=dri
  - --share=network

build-options:
  arch:
    x86_64:
      env:
        # Only enable link-time optimization when targeting x86_64
        # (causes issues on other architectures)
        SCONS_FLAGS_EXTRA: use_lto=yes

  env:
    BUILD_NAME: hurrycurry

modules:
  - shared-modules/glu/glu-9.json

  - name: scons
    buildsystem: simple
    cleanup: ["*"]

    sources:
      - type: archive
        sha256: 6e928fc97984e719814270f6863f2183b3b72180b0162a5ed09db68c9994100c
        url: https://downloads.sourceforge.net/project/scons/scons/4.8.0/SCons-4.8.0.tar.gz

    build-commands:
      - python3 -m pip install --no-index --no-build-isolation --prefix=/app .

  - name: godot
    buildsystem: simple

    sources:
      - type: archive
        sha256: 751e55bfad8e04b846f9cf7b6eb80e058986a2cb1b103fc0fe6a4d8526a20e56
        url: https://downloads.tuxfamily.org/godotengine/4.3/godot-4.3-stable.tar.xz

      - type: file
        path: custom.py

    build-commands:
      - python3 /app/bin/scons $SCONS_FLAGS_EXTRA profile=custom.py target=editor -j "$FLATPAK_BUILDER_N_JOBS"
      - python3 /app/bin/scons $SCONS_FLAGS_EXTRA profile=custom.py target=template_release -j "$FLATPAK_BUILDER_N_JOBS"
      - install -Dm755 bin/godot.linuxbsd.template_release.* /app/bin/godot
      - install -Dm755 bin/godot.linuxbsd.editor.* /app/bin/godot-editor
  - name: rust
    buildsystem: simple
    build-options:
      strip: false
      no-debuginfo: true
    cleanup: ["*"]

    sources:
      - type: archive
        only-arches:
          - aarch64
        dest: rust
        url: https://static.rust-lang.org/dist/2024-09-30/rust-nightly-aarch64-unknown-linux-gnu.tar.xz
        sha256: 1f62e18f4097a7dee54867ea143e838a0e7f76fe72939da004b778ab97f45af4
      - type: archive
        only-arches:
          - x86_64
        dest: rust
        url: https://static.rust-lang.org/dist/2024-09-30/rust-nightly-x86_64-unknown-linux-gnu.tar.xz
        sha256: 4292aae15c11b6559c903743d1db309ee82f7f632644f8a9492571b2358931df
    build-commands:
      - cd rust && ./install.sh --prefix=/app/sdk/rust-nightly --without=rust-docs --without=rust-docs-json-preview --disable-ldconfig --verbose

  - name: hurrycurry
    buildsystem: simple
    build-options:
      append-path: /usr/lib/sdk/node20/bin:/app/sdk/rust-nightly/bin
      env:
        CARGO_HOME: /run/build/hurrycurry/cargo
    sources:
      - type: archive
        sha256: f842d76a5691fbfbca25270ae991a966dfed9fea665798459288c2a0f322851a
        url: https://codeberg.org/hurrycurry/hurrycurry/archive/v2.1.0.tar.gz

      - generated-sources.json

      - type: file
        sha256: 294062c1e23a47f6bf4277ab5bcd51c9ddcb65fd5ece22b48c0171b465a9d3e7
        url: https://s.metamuffin.org/static/hurrycurry-2.0/book.webp.tar.zst

      - type: archive
        sha256: 9a75463341f59146cf3b9885ec2e7bfde821c12741c1bd752193475af9cc342d
        url: https://codeberg.org/hurrycurry/hurrycurry-dist-extra/archive/v2.1.0.tar.gz

    build-commands:
      - tar -xf book.webp.tar.zst -C client/menu/book
      - cargo --offline fetch --manifest-path Cargo.toml
      - make JSR=node -C data
      - make DATA_SEARCH_PATH=/app/share/hurrycurry/data CARGOFLAGS=--offline -C server discover server
      - make -C client
      - install -Dm755 target/release/hurrycurry-server /app/bin/hurrycurry-server
      - install -Dm755 target/release/hurrycurry-discover /app/bin/hurrycurry-discover
      - install -dD /app/share/hurrycurry/data/recipes
      - install -dD /app/share/hurrycurry/data/maps
      - cp -v data/index.yaml /app/share/hurrycurry/data/index.yaml
      - cp -vr data/recipes/*.yaml /app/share/hurrycurry/data/recipes
      - cp -vr data/maps/*.yaml /app/share/hurrycurry/data/maps
      - godot-editor --headless --export-pack wasm32-unknown-unknown /app/share/hurrycurry/client.pck client/project.godot
      - rm /app/bin/godot-editor
      - install -Dm755 hurrycurry /app/bin/hurrycurry
      - install -Dm644 org.metamuffin.hurrycurry.client.desktop /app/share/applications/org.metamuffin.hurrycurry.client.desktop
      - install -Dm644 org.metamuffin.hurrycurry.client.metainfo.xml /app/share/metainfo/org.metamuffin.hurrycurry.client.metainfo.xml
      - >
        for size in {32,64,128,256,512}; do
          ffmpeg -i client/icons/main.png -vf scale=${size}:${size} "$size.png"
          install -Dm644 "$size.png" "/app/share/icons/hicolor/${size}x${size}/apps/org.metamuffin.hurrycurry.client.png"
        done