Block a user
depot (0.293.0)
Published 2026-08-07 19:37:31 -04:00 by flan
Installation
docker pull git.arch.fyi/flan/depot:0.293.0sha256:75d2a4622332d7576661ab8fb5ad48bc802b1b9165572ac4497e2e0af3ba88fa
Images
| Digest | OS / Arch | Size |
|---|---|---|
| e90f541963 | linux/amd64 | 897 MiB |
Image Layers ( linux/amd64)
| # debian.sh --arch 'amd64' out/ 'bookworm' '@1785715200' |
| ENV DEBIAN_FRONTEND=noninteractive |
| RUN /bin/sh -c (grep -rl 'Components:' /etc/apt/sources.list.d/ 2>/dev/null | xargs -r sed -i 's/Components: main/Components: main contrib non-free non-free-firmware/' ; sed -i 's/ main$/ main contrib non-free non-free-firmware/' /etc/apt/sources.list 2>/dev/null || true) ; dpkg --add-architecture i386 && apt-get update && apt-get install -y --no-install-recommends wine wine32 wine64 xvfb openbox xdotool imagemagick x11-utils x11-apps p7zip-full p7zip-rar unzip rsync openssh-client python3 python3-venv curl ca-certificates innoextract unshield yara clamav procps findutils coreutils sed grep util-linux iproute2 && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN /bin/sh -c freshclam --quiet --stdout || true; chmod -R a+rX /var/lib/clamav && printf 'X5O!P%%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/eicar.com && clamscan --no-summary /tmp/eicar.com 2>&1 | grep -q 'Eicar-Test-Signature FOUND' && rm -f /tmp/eicar.com && echo "clamav: signatures loaded and detection verified ($(du -sh /var/lib/clamav | cut -f1))" # buildkit |
| COPY requirements.txt requirements.lock /opt/depot/ # buildkit |
| RUN /bin/sh -c python3 -m venv /opt/venv && /opt/venv/bin/pip install --no-cache-dir --require-hashes -r /opt/depot/requirements.lock && /opt/venv/bin/python -c "import cheroot, cryptography, yaml, defusedxml; print('deps ok')" # buildkit |
| ENV PATH=/opt/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN /bin/sh -c mkdir -p /opt/ssl11 && cd /tmp && { curl -fsSL -o l.deb "https://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u8_amd64.deb" || curl -fsSL -o l.deb "https://snapshot.debian.org/archive/debian-security/20260615T025018Z/pool/updates/main/o/openssl/libssl1.1_1.1.1w-0+deb11u8_amd64.deb"; } && echo "dcc68a543de6cb955a57077b66dcdb15f61d1e31e072f2c6cc4082c37da1b00d l.deb" | sha256sum -c - && dpkg-deb -x l.deb x && cp x/usr/lib/x86_64-linux-gnu/libssl.so.1.1 x/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /opt/ssl11/ && rm -rf x l.deb # buildkit |
| RUN /bin/sh -c mkdir -p /opt/redist-cache && curl -sL -o /opt/redist-cache/vcredist_2008_x86.exe "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe" && echo "8742bcbf24ef328a72d2a27b693cc7071e38d3bb4b9b44dec42aa3d2c8d61d92 /opt/redist-cache/vcredist_2008_x86.exe" | sha256sum -c - # buildkit |
| RUN /bin/sh -c innoextract --version && command -v unshield && apt-get update && apt-get install -y --no-install-recommends dolphin-emu && rm -rf /var/lib/apt/lists/* && test -x /usr/games/dolphin-tool # buildkit |
| RUN /bin/sh -c dpkg-query -W -f='${Package}\t${Version}\t${Architecture}\n' | sort > /opt/depot-packages.txt && printf 'recorded %s packages\n' "$(wc -l < /opt/depot-packages.txt)" # buildkit |
| COPY depot/ /opt/depot/depot/ # buildkit |
| COPY code/ /opt/depot/code/ # buildkit |
| COPY docker/depot.sh docker/entrypoint.sh docker/migrate.sh docker/midclt /opt/depot/docker/ # buildkit |
| COPY Dockerfile docker-compose.yml build.sh lock-requirements.sh /opt/depot/ # buildkit |
| COPY docs/INCIDENT.md docs/PORT-GO.md /opt/depot/docs/ # buildkit |
| COPY .gitea/workflows/release.yml .gitea/workflows/ci.yml .gitea/workflows/go.yml /opt/depot/.gitea/workflows/ # buildkit |
| COPY .github/workflows/ci.yml /opt/depot/.github/workflows/ # buildkit |
| COPY go/build-static.sh go/check-static.sh go/check-cleanroom.sh go/proof-db.py /opt/depot/go/ # buildkit |
| COPY go/internal/depotdb/sql/schema.sql /opt/depot/go/internal/depotdb/sql/ # buildkit |
| RUN /bin/sh -c chmod -R a+rX /opt/depot && chmod a+rx /opt/depot/docker/* /opt/depot/depot/*.sh /opt/depot/code/*.sh /opt/depot/code/wizard/*.sh 2>/dev/null || true # buildkit |
| RUN /bin/sh -c set -e; for f in /opt/depot/docker/entrypoint.sh /opt/depot/docker/depot.sh /opt/depot/depot/depot-lib.sh; do su -s /bin/sh -c "test -r $f && test -x $f" nobody || { echo "FATAL: $f is not readable+executable by a non-root user"; ls -l "$f"; exit 1; }; done; echo "entrypoint is readable and executable by a non-root user" # buildkit |
| RUN /bin/sh -c cd /opt/depot && python3 -m py_compile depot/*.py && python3 -c "import importlib.util,sys,glob,os; sys.path.insert(0,'depot'); [importlib.util.spec_from_file_location('m'+str(i),f).loader.exec_module(importlib.util.module_from_spec(importlib.util.spec_from_file_location('m'+str(i),f))) for i,f in enumerate(sorted(glob.glob('depot/*.py'))) if os.path.basename(f) not in ('sorter.py','pc-pipeline.py','clean-names.py','dedup-roms.py','switch-organize.py','to_chd.py','gen-m3u.py','scrape-art.py','verify-roms.py','switch-manifest.py','install-content-store.py','digest.py','wishlist.py','linux_games.py','pc_supplements.py','gog_normalize.py','dashboard.py','fix-iso-platform.py')]" && python3 -c "import importlib.util as u; s=u.spec_from_file_location('fip','depot/fix-iso-platform.py'); m=u.module_from_spec(s); s.loader.exec_module(m); assert callable(m.evict_repack_payloads)" && python3 depot/tests/test_classifiers.py && python3 depot/tests/test_nus.py && python3 depot/tests/test_content_store.py && python3 depot/tests/test_names.py && python3 depot/tests/test_linux_games.py && python3 depot/tests/test_gog_normalize.py && python3 depot/tests/test_gamelang.py && python3 depot/tests/test_freearc_extract.py && python3 depot/tests/test_db.py && python3 depot/tests/test_systems.py && python3 depot/tests/test_index.py && python3 depot/tests/test_api.py && python3 depot/tests/test_lifecycle.py && python3 depot/tests/test_acquire.py && python3 depot/tests/test_download_clients.py && python3 depot/tests/test_integrations.py && python3 depot/tests/test_console_media.py && python3 depot/tests/test_dedup.py && python3 depot/tests/test_scheduler.py && python3 depot/tests/test_steam_ids.py && python3 depot/tests/test_loadout_status.py && python3 depot/tests/test_metrics.py && python3 depot/tests/test_verify.py && python3 depot/tests/test_verify_roms.py && python3 depot/tests/test_scripts_run.py && python3 depot/tests/test_bincue.py && python3 depot/tests/test_m3u_disc_folders.py && python3 depot/tests/test_download_state.py && python3 depot/tests/test_wizard_gui.py && python3 depot/tests/test_size_cap.py && python3 depot/tests/test_stranded_sources.py && python3 depot/tests/test_pc_installed.py && python3 depot/tests/test_appid.py && python3 depot/tests/test_alias_identity.py && python3 depot/tests/test_alias_exchange.py && python3 depot/tests/test_ui.py && python3 depot/tests/test_i18n.py && python3 depot/tests/test_console_art.py && python3 depot/tests/test_collections.py && python3 depot/tests/test_catalogue.py && python3 depot/tests/test_artwork.py && python3 depot/tests/test_igdb_artwork.py && python3 depot/tests/test_cover_card.py && python3 depot/tests/test_store_capsule_shape.py && python3 depot/tests/test_titles.py && python3 depot/tests/test_tags.py && python3 depot/tests/test_supplements.py && python3 depot/tests/test_supplement_decline.py && python3 depot/tests/test_ps4_meta.py && python3 depot/tests/test_ps3_firmware.py && python3 depot/tests/test_switch_supplements.py && python3 depot/tests/test_ps3_rpcs3.py && python3 depot/tests/test_xvfb_reason.py && python3 depot/tests/test_http_perf.py && python3 depot/tests/test_paging.py && python3 depot/tests/test_query_ceilings.py && python3 depot/tests/test_search_index.py && python3 depot/tests/test_stream.py && python3 depot/tests/test_stats.py && python3 depot/tests/test_css_collisions.py && python3 depot/tests/test_bios_check.py && python3 depot/tests/test_bios_acquire.py && python3 depot/tests/test_manuals.py && python3 depot/tests/test_api_ui_contract.py && python3 depot/tests/test_users.py && python3 depot/tests/test_requests.py && python3 depot/tests/test_import_lists.py && python3 depot/tests/test_owned_rows.py && python3 depot/tests/test_owned_page.py && python3 depot/tests/test_profile_dialog.py && python3 depot/tests/test_identify.py && python3 depot/tests/test_runtime_python.py && python3 depot/tests/test_indexer_politeness.py && python3 depot/tests/test_health.py && python3 depot/tests/test_corrections_bulk.py && python3 depot/tests/test_tags_import.py && python3 depot/tests/test_custom_formats.py && python3 depot/tests/test_profiles.py && python3 depot/tests/test_naming.py && python3 depot/tests/test_recycle.py && python3 depot/tests/test_gamelist.py && python3 depot/tests/test_retention.py && python3 depot/tests/test_library_import.py && python3 depot/tests/test_relabel.py && python3 depot/tests/test_pwenc.py && python3 depot/tests/test_backup.py && python3 depot/tests/test_pending.py && python3 depot/tests/test_connect.py && python3 depot/tests/test_ical.py && python3 depot/tests/test_attention.py && python3 depot/tests/test_history.py && python3 depot/tests/test_updates.py && python3 depot/tests/test_setup.py && python3 depot/tests/test_ps3_meta.py && python3 depot/tests/test_formats.py && python3 depot/tests/test_library_paths.py && python3 depot/tests/test_roots.py && python3 depot/tests/test_standalone.py && python3 depot/tests/test_security.py && python3 depot/tests/test_invites.py && python3 depot/tests/test_indexer_parse.py && python3 depot/tests/test_indexer_defs.py && python3 depot/tests/test_arr_app.py && python3 depot/tests/test_arr_client.py && python3 depot/tests/test_trash_sync.py && python3 depot/tests/test_rescue_grabs.py && python3 depot/tests/test_config_gate.py && python3 depot/tests/test_switch_organize.py && python3 depot/tests/test_direct_sources.py && python3 depot/tests/test_auto_supplements.py && python3 depot/tests/test_media_mgmt.py && python3 depot/tests/test_add_flow.py && python3 depot/tests/test_clickthrough.py && python3 depot/tests/test_game_meta.py && python3 depot/tests/test_mobile.py && python3 depot/tests/test_release_console.py && python3 depot/tests/test_parse.py && python3 depot/tests/test_cutoff_unmet.py && python3 depot/tests/test_upgrade_same_game.py && python3 depot/tests/test_requires_local.py && python3 depot/tests/test_per_title_language.py && python3 depot/tests/test_request_rating.py && python3 depot/tests/test_file_misfiled.py && python3 depot/tests/test_release_calendar.py && python3 depot/tests/test_signing.py && python3 depot/tests/test_vendored.py && python3 depot/tests/test_scope_claims.py && python3 depot/tests/test_appimage.py && python3 depot/tests/test_steam_hashed_capsule.py && python3 depot/tests/test_split_default.py && python3 depot/tests/test_moved_not_removed.py && python3 depot/tests/test_proxy_health.py && python3 depot/tests/test_store_portrait.py && python3 depot/tests/test_scan_reach.py && python3 depot/tests/test_files_memo.py && python3 depot/tests/test_scan_signals.py && python3 depot/tests/test_reinstall.py && python3 depot/tests/test_view_switch.py && python3 depot/tests/test_identity.py && python3 depot/tests/test_dead_controls.py && python3 depot/tests/test_clickthrough_faults.py && python3 depot/tests/test_missing_chip.py && python3 depot/tests/test_convert_gate.py && python3 depot/tests/test_wbfs.py && python3 depot/tests/test_repair_discs.py && python3 depot/tests/test_unicode_keys.py && python3 depot/tests/test_tracker_health.py && python3 depot/tests/test_pc_source_identity.py && python3 depot/tests/test_installed_lookup_folds.py && python3 depot/tests/test_positive_evidence.py && python3 depot/tests/test_installed_authority.py && python3 depot/tests/test_sources_manual.py && python3 depot/tests/test_staged_tracks.py && python3 depot/tests/test_known_bad.py && python3 depot/tests/test_disc_tools.py && python3 depot/tests/test_bios_grab_loop.py && python3 depot/tests/test_quiet_task_logs.py && python3 depot/tests/test_pipeline_events.py && python3 depot/tests/test_extract_reports.py && python3 depot/tests/test_idle_backoff.py && python3 depot/tests/test_manifest_write_only.py && python3 depot/tests/test_tool_handoff.py && python3 depot/tests/test_digest.py && python3 depot/tests/test_stage_reporting.py && python3 depot/tests/test_search_backoff.py && python3 depot/tests/test_ps3_psn_once.py && python3 depot/tests/test_sort_triggers_index.py && python3 depot/tests/test_sort_exit_code.py && python3 depot/tests/test_place_source.py && python3 depot/tests/test_extract_batch.py && python3 depot/tests/test_low_space.py && python3 depot/tests/test_give_up_cap.py && python3 depot/tests/test_src_signature.py && python3 depot/tests/test_cycle_lock.py && python3 depot/tests/test_match_key_agrees.py && python3 depot/tests/test_schema_contract.py && python3 depot/tests/test_api_contract.py && python3 depot/tests/test_consumer_contract.py && python3 depot/tests/test_self_published.py && python3 depot/tests/test_grab_fail_cap.py && python3 depot/tests/test_image_gate_complete.py && python3 depot/tests/test_metric_parity.py && python3 depot/tests/test_divergence_ledger.py && python3 depot/tests/test_pending_go_tests.py && python3 depot/tests/test_bios_harvest.py && python3 depot/tests/test_definition_protocol.py && python3 depot/tests/test_disc_check.py && python3 depot/tests/test_extract_per_archive.py && python3 depot/tests/test_js_modules.py && python3 depot/tests/test_namefold.py && python3 depot/tests/test_go_static.py && python3 depot/tests/test_one_table.py && python3 depot/tests/test_pc_disc_sets.py && python3 depot/tests/test_platform_hint.py && python3 depot/tests/test_port_differential.py && python3 depot/tests/test_provider_not_a_store.py && python3 depot/tests/test_queued_install_guard.py && python3 depot/tests/test_source_protocol.py && python3 depot/tests/test_stage_summary_last.py && python3 depot/tests/test_titlekey_wants.py && python3 depot/tests/test_wiiu_titles.py && python3 depot/tests/test_xbox_xiso.py && bash depot/tests/smoke.sh # buildkit |
| ARG DEPOT_VERSION=0.293.0 |
| ARG DEPOT_SHA=6af9f88 |
| COPY /out/ /opt/depot/bin/ # buildkit |
| RUN |2 DEPOT_VERSION=0.293.0 DEPOT_SHA=6af9f88 /bin/sh -c chmod -R a+rX /opt/depot/bin /opt/depot/go && python3 /opt/depot/go/proof-db.py /tmp/depot-proof.db >/dev/null && bash /opt/depot/go/check-static.sh /opt/depot/bin /tmp/depot-proof.db && su -s /bin/sh -c "/opt/depot/bin/depot-differential --version" nobody >/dev/null && echo "the Go binary is executable by a non-root user" && rm -f /tmp/depot-proof.db # buildkit |
| ENV REDIST_CACHE=/opt/redist-cache DEPOT_LIB=/data/games DEPOT_QBIT=/data/downloads DEPOT_DATA=/data/games/_unsorted DEPOT_CONFIG=/config DEPOT_STATE=/state DEPOT_HELPERS=/opt/depot/depot DEPOT_VERSION=0.293.0 DEPOT_SHA=6af9f88 DEPOT_BIND=0.0.0.0 |
| RUN |2 DEPOT_VERSION=0.293.0 DEPOT_SHA=6af9f88 /bin/sh -c install -d -m 1777 /home/depot && chmod -R a+rwX /opt/redist-cache # buildkit |
| ENV HOME=/home/depot |
| USER 1000:1000 |
| ENTRYPOINT ["/opt/depot/docker/entrypoint.sh"] |