boot-clj / boot-clj/boot

Prefix string too short

Open
#762 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Clojure
Stars
1.7k
Forks
178
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**

Attempting to build an uberjar with Selenium as a dependency raises the following exception:

```
clojure.lang.ExceptionInfo: Prefix string "9" too short: length must be at least 3
```

**To Reproduce**

`build.boot`:

```
(set-env!
:resource-paths #{"."}
:dependencies '[[org.clojure/clojure "1.10.1"]
[org.seleniumhq.selenium/selenium-support "3.141.59"]
[org.seleniumhq.selenium/selenium-remote-driver "3.141.59"]])

(task-options!
pom {:project 'selenium :version "0.1.0-SNAPSHOT"}
aot {:namespace #{'selenium}}
jar {:main 'selenium})
```

`boot.properties`:

```
BOOT_VERSION=2.8.3
BOOT_CLOJURE_VERSION=1.10.1
BOOT_CLOJURE_NAME=org.clojure/clojure
```

`selenium.clj`:

```
(ns selenium (:gen-class))
(defn -main [& args] ())
```

Run `boot aot pom uber jar target`

**Expected behavior**

Successful build and jar written to disk.

**Actual behavior**

```
Compiling 1/1 selenium...
Writing pom.xml and pom.properties...
Adding uberjar entries...
java.lang.Thread.run Thread.java: 832
java.util.concurrent.ThreadPoolExecutor$Worker.run ThreadPoolExecutor.java: 630
java.util.concurrent.ThreadPoolExecutor.runWorker ThreadPoolExecutor.java: 1130
java.util.concurrent.FutureTask.run FutureTask.java: 264
...
clojure.core/binding-conveyor-fn/fn core.clj: 2030
boot.core/boot/fn core.clj: 1031
boot.core/run-tasks core.clj: 1022
boot.task.built-in/eval2944/fn/fn/fn built_in.clj: 800
boot.task.built-in/eval2662/fn/fn/fn built_in.clj: 576
boot.task.built-in/eval2828/fn/fn/fn built_in.clj: 753
clojure.core/reduce core.clj: 6828
clojure.core.protocols/fn/G protocols.clj: 13
clojure.core.protocols/fn protocols.clj: 75
clojure.core.protocols/seq-reduce protocols.clj: 31
clojure.core.protocols/fn/G protocols.clj: 19
clojure.core.protocols/fn protocols.clj: 168
boot.task.built-in/eval2828/fn/reducer built_in.clj: 733
...
boot.core/add-cached-resource core.clj: 622
boot.core/add-cached-resource core.clj: 632
boot.tmpdir.TmpFileSet/add-cached tmpdir.clj: 308
boot.tmpdir/merge-trees! tmpdir.clj: 187
boot.tmpdir/apply-mergers! tmpdir.clj: 148
java.io.File.createTempFile File.java: 2083
java.lang.IllegalArgumentException: Prefix string "9" too short: length must be at least 3
clojure.lang.ExceptionInfo: Prefix string "9" too short: length must be at least 3
line: 15
```

**Desktop:**

I used a container to run the above i.e.

```
docker run -it --rm -v "$PWD":/usr/src/app -w /usr/src/app clojure:openjdk-15-boot-2.8.3-alpine boot aot pom uber jar target
```

Contributor guide

Open the contributing guide

Research direction

Reproduce the failure with build.boot, boot.properties, selenium.clj, and the documented `boot aot pom uber jar target` command. Start from the boot.task.built-in and boot.tmpdir stack frames around File.createTempFile, then verify that the command completes and writes the uberjar to disk.

Written by the indexing model from the issue text.

Assessment

Tech stack
clojure, java
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.