mirror of
https://github.com/decompme/decomp.me.git
synced 2026-02-15 10:59:18 -06:00
Fix 2 bugs (#200)
* fix source_code null issue for non-mips * fix preset setting not changing opts * CompilerPreset type * try to fix gh actions * libprotobuf-dev * protobuf-compiler * libnl-route-3-dev * oopth
This commit is contained in:
2
.env
2
.env
@@ -2,6 +2,6 @@ DEBUG=on
|
||||
SECRET_KEY=django-insecure-nm#!8%z$hc0wwi#m_*l9l)=m*6gs4&o_^-e5b5vj*k05&yaqc1
|
||||
DATABASE_URL=sqlite:///dev.db
|
||||
API_BASE=http://127.0.0.1:8000/api
|
||||
USE_SANDBOX_JAIL=off
|
||||
USE_SANDBOX_JAIL=on
|
||||
GITHUB_CLIENT_ID=
|
||||
GITHUB_CLIENT_SECRET=
|
||||
|
||||
9
.github/workflows/pr.yml
vendored
9
.github/workflows/pr.yml
vendored
@@ -27,8 +27,13 @@ jobs:
|
||||
python-version: 3.9
|
||||
- run: pip install -r backend/requirements.txt
|
||||
name: Install Python dependencies
|
||||
- run: sudo apt install binutils-mips-linux-gnu
|
||||
name: Install binutils-mips-linux-gnu
|
||||
- run: sudo apt install binutils-mips-linux-gnu libprotobuf-dev libnl-route-3-dev protobuf-compiler
|
||||
name: Install dependencies
|
||||
- run: |
|
||||
git clone --recursive --branch=3.0 https://github.com/google/nsjail && cd nsjail
|
||||
make
|
||||
sudo cp nsjail /usr/bin/
|
||||
name: Install nsjail
|
||||
- run: ./backend/compilers/download.sh
|
||||
name: Download compilers
|
||||
- run: python backend/manage.py test backend
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -16,3 +16,4 @@ sandbox/
|
||||
/frontend/public/sw.*
|
||||
/frontend/public/workbox-*
|
||||
/frontend/storybook-static
|
||||
.vscode/launch.json
|
||||
|
||||
@@ -232,6 +232,7 @@ def create_scratch(request):
|
||||
source_code = data.get("source_code")
|
||||
if not source_code:
|
||||
default_source_code = f"void {diff_label or 'func'}(void) {{\n // ...\n}}\n"
|
||||
source_code = default_source_code
|
||||
arch = CompilerWrapper.arch_from_platform(platform)
|
||||
if arch in ["mips", "mipsel"]:
|
||||
try:
|
||||
|
||||
@@ -60,6 +60,12 @@ export type CompilerOptsT = {
|
||||
compiler_flags: string
|
||||
}
|
||||
|
||||
export type CompilerPreset = {
|
||||
name: string
|
||||
compiler: string
|
||||
opts: string
|
||||
}
|
||||
|
||||
export type Props = {
|
||||
platform?: string
|
||||
value: CompilerOptsT
|
||||
@@ -86,6 +92,13 @@ export default function CompilerOpts({ platform, value, onChange, title, isPopup
|
||||
})
|
||||
}
|
||||
|
||||
const setPreset = (preset: CompilerPreset) => {
|
||||
onChange({
|
||||
compiler: preset.compiler,
|
||||
compiler_flags: preset.opts,
|
||||
})
|
||||
}
|
||||
|
||||
return <OptsContext.Provider value={{
|
||||
checkFlag(flag: string) {
|
||||
return (" " + opts + " ").includes(" " + flag + " ")
|
||||
@@ -103,7 +116,7 @@ export default function CompilerOpts({ platform, value, onChange, title, isPopup
|
||||
}}>
|
||||
<div className={styles.header} data-is-popup={isPopup}>
|
||||
{title || "Compiler Options"}
|
||||
<PresetSelect platform={platform} compiler={compiler} setCompiler={setCompiler} opts={opts} setOpts={setOpts} />
|
||||
<PresetSelect platform={platform} compiler={compiler} opts={opts} setPreset={setPreset} />
|
||||
</div>
|
||||
<div className={styles.container} data-is-popup={isPopup}>
|
||||
<OptsEditor platform={platform} compiler={compiler} setCompiler={setCompiler} opts={opts} setOpts={setOpts} />
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
import Select from "../Select"
|
||||
|
||||
import { CompilerPreset } from "./CompilerOpts"
|
||||
import { useCompilersForPlatform } from "./compilers"
|
||||
|
||||
export const PRESETS = [
|
||||
@@ -66,13 +67,12 @@ export const PRESETS = [
|
||||
},
|
||||
]
|
||||
|
||||
export default function PresetSelect({ className, platform, compiler, opts, setCompiler, setOpts, serverCompilers }: {
|
||||
export default function PresetSelect({ className, platform, compiler, opts, setPreset, serverCompilers }: {
|
||||
className?: string
|
||||
platform: string
|
||||
compiler: string
|
||||
opts: string
|
||||
setCompiler: (compiler: string) => void
|
||||
setOpts: (opts: string) => void
|
||||
setPreset: (preset: CompilerPreset) => void
|
||||
serverCompilers?: Record<string, { platform: string | null }>
|
||||
}) {
|
||||
const compilers = useCompilersForPlatform(platform, serverCompilers)
|
||||
@@ -87,8 +87,7 @@ export default function PresetSelect({ className, platform, compiler, opts, setC
|
||||
|
||||
const preset = presets.find(p => p.name === (e.target as HTMLSelectElement).value)
|
||||
|
||||
setOpts(preset.opts)
|
||||
setCompiler(preset.compiler)
|
||||
setPreset(preset)
|
||||
}}>
|
||||
{!selectedPreset && <option value="custom" selected>Custom</option>}
|
||||
{presets.map(preset =>
|
||||
|
||||
@@ -6,6 +6,7 @@ import Head from "next/head"
|
||||
import { useRouter } from "next/router"
|
||||
|
||||
import AsyncButton from "../../components/AsyncButton"
|
||||
import { CompilerPreset } from "../../components/compiler/CompilerOpts"
|
||||
import { useCompilersForPlatform } from "../../components/compiler/compilers"
|
||||
import PresetSelect, { PRESETS } from "../../components/compiler/PresetSelect"
|
||||
import Editor from "../../components/Editor"
|
||||
@@ -76,6 +77,11 @@ export default function NewScratch({ serverCompilers }: {
|
||||
|
||||
const [lineNumbers, setLineNumbers] = useState(false)
|
||||
|
||||
const setPreset = (preset: CompilerPreset) => {
|
||||
setCompiler(preset.compiler)
|
||||
setCompilerOpts(preset.opts)
|
||||
}
|
||||
|
||||
// Load fields from localStorage
|
||||
useEffect(() => {
|
||||
try {
|
||||
@@ -209,8 +215,7 @@ export default function NewScratch({ serverCompilers }: {
|
||||
platform={platform}
|
||||
compiler={compiler}
|
||||
opts={compilerOpts}
|
||||
setCompiler={setCompiler}
|
||||
setOpts={setCompilerOpts}
|
||||
setPreset={setPreset}
|
||||
serverCompilers={serverCompilers.compilers}
|
||||
/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user