Skip to content

Build failure with musl 1.2.4 #1164

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jefferyto opened this issue May 17, 2023 · 16 comments
Closed

Build failure with musl 1.2.4 #1164

jefferyto opened this issue May 17, 2023 · 16 comments

Comments

@jefferyto
Copy link

OpenWrt updated musl to 1.2.4 and we are seeing this build failure with ooni/probe-cli (which uses go-sqlite3):

sqlite3-binding.c:35911:42: error: 'pread64' undeclared here (not in a function); did you mean 'pread'?
35911 |   { "pread64",      (sqlite3_syscall_ptr)pread64,    0  },
      |                                          ^~~~~~~
      |                                          pread
sqlite3-binding.c:35929:42: error: 'pwrite64' undeclared here (not in a function); did you mean 'pwrite'?
35929 |   { "pwrite64",     (sqlite3_syscall_ptr)pwrite64,   0  },
      |                                          ^~~~~~~~
      |                                          pwrite
sqlite3-binding.c: In function 'seekAndRead':
sqlite3-binding.c:35915:49: error: unknown type name 'off64_t'; did you mean 'off_t'?
35915 | #define osPread64 ((ssize_t(*)(int,void*,size_t,off64_t))aSyscall[10].pCurrent)
      |                                                 ^~~~~~~
sqlite3-binding.c:38777:11: note: in expansion of macro 'osPread64'
38777 |     got = osPread64(id->h, pBuf, cnt, offset);
      |           ^~~~~~~~~
sqlite3-binding.c:35915:58: error: expected ')' before 'aSyscall'
35915 | #define osPread64 ((ssize_t(*)(int,void*,size_t,off64_t))aSyscall[10].pCurrent)
      |                   ~                                      ^~~~~~~~
sqlite3-binding.c:38777:11: note: in expansion of macro 'osPread64'
38777 |     got = osPread64(id->h, pBuf, cnt, offset);
      |           ^~~~~~~~~
sqlite3-binding.c: In function 'seekAndWriteFd':
sqlite3-binding.c:35933:57: error: unknown type name 'off64_t'; did you mean 'off_t'?
35933 | #define osPwrite64  ((ssize_t(*)(int,const void*,size_t,off64_t))\
      |                                                         ^~~~~~~
sqlite3-binding.c:38906:17: note: in expansion of macro 'osPwrite64'
38906 |   do{ rc = (int)osPwrite64(fd, pBuf, nBuf, iOff);}while( rc<0 && errno==EINTR);
      |                 ^~~~~~~~~~
sqlite3-binding.c:35934:21: error: expected ')' before 'aSyscall'
35934 |                     aSyscall[13].pCurrent)
      |                     ^~~~~~~~
sqlite3-binding.c:38906:17: note: in expansion of macro 'osPwrite64'
38906 |   do{ rc = (int)osPwrite64(fd, pBuf, nBuf, iOff);}while( rc<0 && errno==EINTR);
      |                 ^~~~~~~~~~
sqlite3-binding.c:35933:21: note: to match this '('
35933 | #define osPwrite64  ((ssize_t(*)(int,const void*,size_t,off64_t))\
      |                     ^
sqlite3-binding.c:38906:17: note: in expansion of macro 'osPwrite64'
38906 |   do{ rc = (int)osPwrite64(fd, pBuf, nBuf, iOff);}while( rc<0 && errno==EINTR);
      |                 ^~~~~~~~~~

(This is from a PR for the current version of probe-cli which uses 1.14.16; we are also seeing very similar errors when building an older version of probe-cli which uses 1.14.15.)

This is because in musl 1.2.4, LFS64 interfaces were marked as deprecated (release notes, commit).

Perhaps HAVE_PREAD/HAVE_PWRITE can be set instead of HAVE_PREAD64/HAVE_PWRITE64 in sqlite3.go?

jefferyto added a commit to jefferyto/openwrt-packages that referenced this issue Jul 13, 2023
This version includes support for Go 1.20 (specifically 1.20.5), and a
workaround for musl 1.2.4 compatibility in mattn/go-sqlite3[1].

This also updates the package license; the project was relicensed in
3.13.0[2].

[1]: mattn/go-sqlite3#1164
[2]: ooni/probe-cli#446

Signed-off-by: Jeffery To <[email protected]>
jefferyto added a commit to jefferyto/openwrt-packages that referenced this issue Jul 13, 2023
This version includes support for Go 1.20 (specifically 1.20.5), and a
workaround for musl 1.2.4 compatibility in mattn/go-sqlite3[1].

This also updates the package license; the project was relicensed in
3.13.0[2].

[1]: mattn/go-sqlite3#1164
[2]: ooni/probe-cli#446

Signed-off-by: Jeffery To <[email protected]>
jefferyto added a commit to jefferyto/openwrt-packages that referenced this issue Jul 13, 2023
This version includes support for Go 1.20 (specifically 1.20.5).

This also:

* Adds a workaround for musl 1.2.4 compatibility in mattn/go-sqlite3[1]

* Sets GO_PKG_BUILD_PKG to build the main binary (ooniprobe) only

* Updates the package license; the project was relicensed in 3.13.0[2]

[1]: mattn/go-sqlite3#1164
[2]: ooni/probe-cli#446

Signed-off-by: Jeffery To <[email protected]>
@omerxx
Copy link

omerxx commented Jul 13, 2023

Not sure how come this isn't extremely urgent to users out there but the #1177 save me.
So for what it's worth I added this to my go.mod:

replace github.com/mattn/go-sqlite3 => github.com/leso-kn/go-sqlite3 v0.0.0-20230710125852-03158dc838ed

neheb pushed a commit to openwrt/packages that referenced this issue Jul 13, 2023
This version includes support for Go 1.20 (specifically 1.20.5).

This also:

* Adds a workaround for musl 1.2.4 compatibility in mattn/go-sqlite3[1]

* Sets GO_PKG_BUILD_PKG to build the main binary (ooniprobe) only

* Updates the package license; the project was relicensed in 3.13.0[2]

[1]: mattn/go-sqlite3#1164
[2]: ooni/probe-cli#446

Signed-off-by: Jeffery To <[email protected]>
@nekopsykose
Copy link

nekopsykose commented Jul 14, 2023

you can use CGO_CFLAGS="-D_LARGEFILE64_SOURCE"(passed to go via environment when building) as a workaround too.

jefferyto added a commit to jefferyto/openwrt-packages that referenced this issue Jul 14, 2023
This version includes support for Go 1.20 (specifically 1.20.5).

This also:

* Adds a workaround for musl 1.2.4 compatibility in mattn/go-sqlite3[1]

* Sets GO_PKG_BUILD_PKG to build the main binary (ooniprobe) only

* Updates the package license; the project was relicensed in 3.13.0[2]

[1]: mattn/go-sqlite3#1164
[2]: ooni/probe-cli#446

Signed-off-by: Jeffery To <[email protected]>
(cherry picked from commit dc7382e)
@ghost
Copy link

ghost commented Jul 16, 2023

Issue doesn't fix for me
IMG_20230716_111334_171

graysky2 pushed a commit to graysky2/packages that referenced this issue Aug 9, 2023
This version includes support for Go 1.20 (specifically 1.20.5).

This also:

* Adds a workaround for musl 1.2.4 compatibility in mattn/go-sqlite3[1]

* Sets GO_PKG_BUILD_PKG to build the main binary (ooniprobe) only

* Updates the package license; the project was relicensed in 3.13.0[2]

[1]: mattn/go-sqlite3#1164
[2]: ooni/probe-cli#446

Signed-off-by: Jeffery To <[email protected]>
bouncepaw added a commit to bouncepaw/betula that referenced this issue Aug 24, 2023
lu-zero pushed a commit to domo-iot/packages that referenced this issue Oct 23, 2023
This version includes support for Go 1.20 (specifically 1.20.5).

This also:

* Adds a workaround for musl 1.2.4 compatibility in mattn/go-sqlite3[1]

* Sets GO_PKG_BUILD_PKG to build the main binary (ooniprobe) only

* Updates the package license; the project was relicensed in 3.13.0[2]

[1]: mattn/go-sqlite3#1164
[2]: ooni/probe-cli#446

Signed-off-by: Jeffery To <[email protected]>
alfredfo added a commit to alfredfo/gentoo that referenced this issue Nov 17, 2023
See-also: mattn/go-sqlite3#1164
Closes: 912311
Signed-off-by: Alfred Persson Forsberg <[email protected]>
gentoo-bot pushed a commit to gentoo/gentoo that referenced this issue Nov 17, 2023
[sam: The macro is not ideal at all but patching Go isn't exactly ideal
itself. Besides, this was arleady in the ebuild, but ignored b/c Go doesn't
yet in Gentoo respect CFLAGS et. al, although should soon.]

See-also: mattn/go-sqlite3#1164
Closes: https://bugs.gentoo.org/912311
Signed-off-by: Alfred Persson Forsberg <[email protected]>
Closes: #33863
Signed-off-by: Sam James <[email protected]>
supakeen added a commit to supakeen/images that referenced this issue Dec 8, 2023
Switching to Fedora containers due to an updated musl in alpine causing
build errors in Go bindings to sqlite, see:
mattn/go-sqlite3#1164
supakeen added a commit to supakeen/images that referenced this issue Dec 8, 2023
Switching to Fedora containers due to an updated musl in alpine causing
build errors in Go bindings to sqlite, see:
mattn/go-sqlite3#1164
github-merge-queue bot pushed a commit to osbuild/images that referenced this issue Dec 8, 2023
Switching to Fedora containers due to an updated musl in alpine causing
build errors in Go bindings to sqlite, see:
mattn/go-sqlite3#1164
@avakarev
Copy link

avakarev commented Dec 9, 2023

This is now broken in latest go:alpine image (1.21.5-alpine3.19).
Alpine 3.19 was released on 2023-12-07: https://www.alpinelinux.org/posts/Alpine-3.19.0-released.html
It is shipped with gcc 13.2 and musl-dev 2.14 https://pkgs.alpinelinux.org/packages?name=musl-dev&branch=v3.19&repo=&arch=x86_64

As a temporary workaround, it's possible to downgrade base go image to go:alpine3.18 in Dockerfile.

\cc @mattn

Ishiihara added a commit to chroma-core/chroma that referenced this issue Dec 10, 2023
## Description of changes

*Summarize the changes made by this PR.*
 - Improvements & Bug fixes
- Fix go build issue due to
mattn/go-sqlite3#1164 (comment)
 - New functionality
	 - ...

## Test plan
*How are these changes tested?*

- [ ] Tests pass locally with `pytest` for python, `yarn test` for js

## Documentation Changes
*Are all docstrings for user-facing APIs updated if required? Do we need
to make documentation changes in the [docs
repository](https://github.com/chroma-core/docs)?*
shmn7iii added a commit to sttnbnb/kenkoukun that referenced this issue Dec 10, 2023
Wakeful-Cloud added a commit to Wakeful-Cloud/yarr that referenced this issue Jun 9, 2024
orgads added a commit to orgads/influxdb that referenced this issue Jul 23, 2024
sha256sum in busybox doesn't support --check.

go-sqlite3 fails to build: mattn/go-sqlite3#1164
meiyang1123 pushed a commit to meiyang1123/go-sqlite3 that referenced this issue Aug 28, 2024
natsukagami pushed a commit to natsukagami/kjudge that referenced this issue Sep 14, 2024
* fix: change isolate daemon command in scripts/start_container.sh
* feat: Remove isolate in docker/Dockerfile
* chore: update go-sqlite3 to fix musl build mattn/go-sqlite3#1164
* feat: Dockerfile for gcc-only
* feat: accept arbitrary command for isolate daemon
* feat(isolate): print logs real-time and add Stop()
* chore: update golangci-lint to make tests passable
wehagy added a commit to wehagy/packages that referenced this issue Dec 29, 2024
Partially revert: 7b3d033
 - Revert: Also fixes issue of not being able to build with musl >1.2.4,
   The issue has been resolved as of March 2024. For more details, see:
   mattn/go-sqlite3#1164 (comment)

Signed-off-by: Wesley Gimenes <[email protected]>
wehagy added a commit to wehagy/packages that referenced this issue Dec 29, 2024
Partially revert: 7b3d033
 - Revert: Also fixes issue of not being able to build with musl >1.2.4,
   The issue has been resolved as of March 2024. For more details, see:
   mattn/go-sqlite3#1164 (comment)

Signed-off-by: Wesley Gimenes <[email protected]>
1715173329 pushed a commit to openwrt/packages that referenced this issue Dec 30, 2024
Partially revert: 7b3d033
 - Revert: Also fixes issue of not being able to build with musl >1.2.4,
   The issue has been resolved as of March 2024. For more details, see:
   mattn/go-sqlite3#1164 (comment)

Signed-off-by: Wesley Gimenes <[email protected]>
wehagy added a commit to wehagy/packages that referenced this issue Jan 18, 2025
Partially revert: 7b3d033
 - Revert: Also fixes issue of not being able to build with musl >1.2.4,
   The issue has been resolved as of March 2024. For more details, see:
   mattn/go-sqlite3#1164 (comment)

Signed-off-by: Wesley Gimenes <[email protected]>
(cherry picked from commit 851386d)
wehagy added a commit to wehagy/packages that referenced this issue Jan 18, 2025
Partially revert: 7b3d033
 - Revert: Also fixes issue of not being able to build with musl >1.2.4,
   The issue has been resolved as of March 2024. For more details, see:
   mattn/go-sqlite3#1164 (comment)

Signed-off-by: Wesley Gimenes <[email protected]>
(cherry picked from commit 851386d)
wehagy added a commit to wehagy/packages that referenced this issue Jan 20, 2025
Partially revert: 7b3d033
 - Revert: Also fixes issue of not being able to build with musl >1.2.4,
   The issue has been resolved as of March 2024. For more details, see:
   mattn/go-sqlite3#1164 (comment)

Signed-off-by: Wesley Gimenes <[email protected]>
(cherry picked from commit 851386d)
1715173329 pushed a commit to openwrt/packages that referenced this issue Jan 24, 2025
Partially revert: 7b3d033
 - Revert: Also fixes issue of not being able to build with musl >1.2.4,
   The issue has been resolved as of March 2024. For more details, see:
   mattn/go-sqlite3#1164 (comment)

Signed-off-by: Wesley Gimenes <[email protected]>
(cherry picked from commit 851386d)
pschmitt pushed a commit to pschmitt/packages that referenced this issue Feb 20, 2025
Partially revert: 7b3d033
 - Revert: Also fixes issue of not being able to build with musl >1.2.4,
   The issue has been resolved as of March 2024. For more details, see:
   mattn/go-sqlite3#1164 (comment)

Signed-off-by: Wesley Gimenes <[email protected]>
elizabethengelman added a commit to numeroai/flow-wallet-api that referenced this issue Apr 2, 2025
elizabethengelman added a commit to numeroai/flow-wallet-api that referenced this issue Apr 29, 2025
krnjn pushed a commit to numeroai/flow-wallet-api that referenced this issue Apr 29, 2025
* Upgrade flow-go-sdk to v0.25.0

* Expose port 8888

* Use more up-to-date flow emulator version

* Update custom_account_setup_emulator.cdc

* Use new grpc client

* temporarily comment some of custom acct creation script

* Upgrade to [email protected]

* Updates to match the sdk change that AccountKey Index is now uint32

it was previously and int

* Update to address that cadence.Events no longer expose Fields

and no longer allow accessing fields by index

* Hacky way to handle removal of ToGoValue - should revisit

* Update go container in docker setup to 1.22

* Upgrade go-sqlite3 to to fix build issue in docker

mattn/go-sqlite3#1164

* Update test.yml workflow to use more up-to-date action versions

* Update golangci-lint-action

* Fix tests after upgrade

* Skip tests that aren't relevant to Electables workflow

* Fixes to source code after upgrade

* Update flow cli version in github workflow

* Add upgrade notes to readme

* Update cadence contracts

* Update cadence transaction scripts

* Update custom account setup scripts
krnjn pushed a commit to numeroai/flow-wallet-api that referenced this issue Apr 30, 2025
* Upgrade flow-go-sdk to v0.25.0

* Expose port 8888

* Use more up-to-date flow emulator version

* Update custom_account_setup_emulator.cdc

* Use new grpc client

* temporarily comment some of custom acct creation script

* Upgrade to [email protected]

* Updates to match the sdk change that AccountKey Index is now uint32

it was previously and int

* Update to address that cadence.Events no longer expose Fields

and no longer allow accessing fields by index

* Hacky way to handle removal of ToGoValue - should revisit

* Update go container in docker setup to 1.22

* Upgrade go-sqlite3 to to fix build issue in docker

mattn/go-sqlite3#1164

* Update test.yml workflow to use more up-to-date action versions

* Update golangci-lint-action

* Fix tests after upgrade

* Skip tests that aren't relevant to Electables workflow

* Fixes to source code after upgrade

* Update flow cli version in github workflow

* Add upgrade notes to readme

* Update cadence contracts

* Update cadence transaction scripts

* Update custom account setup scripts

* Start to rebuild update-kms-keys cmd

* Wip - signing AddKeyTx

* WIP - Send tx

* Wip: trying to get the args to be parsed/send over http properly

* Allow api to decode args to cadence as a json string

* Start to add a new add-new-key endpoint

* Upgrade go version

* Use new endpoint in script

* Continue to build add-new-key endpoint

* Get acct from db, generate a new key and encrypt it

* Add the new key via a transaction and save to db

* Add gitignore and remove binary

* Remove runKmsUpdate fn in favor of addNewKey

which pushes all of the key creation logic into the main
flow-wallet-api code

* Use indexes on chain for next index calc and cleanup addNewKey

* Clean up & add next step notes

* Cleanup script

* Add an add key service test to main_test

* Break AddNewKey into smaller funcs

* Revoke old key

* Split add key and revoke into separate endpoints

* Update update-kms-keys command to take a list

* Fix revoke endpoint

* Soft delete the old key from the database

* Add an endpoint for getting aws keys

* Make update-kms-keys more flexible
orgads added a commit to orgads/influxdb that referenced this issue May 11, 2025
sha256sum in busybox doesn't support --check.

go-sqlite3 fails to build: mattn/go-sqlite3#1164
orgads added a commit to orgads/influxdb that referenced this issue May 11, 2025
sha256sum in busybox doesn't support --check.

go-sqlite3 fails to build: mattn/go-sqlite3#1164
@SloCompTech
Copy link

If anyone is still looking for solution, this worked for me:

# Remove previous dependency link
go mod edit -droprequire=github.com/mattn/go-sqlite3

# Add new dependecy link with newest version
go mod edit -require=github.com/mattn/[email protected]

# Update package cache
go mod tidy

# Then build your go project/lib

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests