Opened 6 years ago

Closed 6 years ago

#31399 closed defect (fixed)

fossil 1.19 will not open new repositories after an error-free build

Reported by: spamivore+macports@… Owned by: ci42
Priority: Normal Milestone:
Component: ports Version: 2.0.3
Keywords: Cc:
Port: fossil

Description (last modified by ci42)

The current fossil port does not seem to build correctly against sqlite3. The build appears to complete successfully, but the fossil application triggers a sqlite3 error. For example:

$ fossil new foo
project-id: c5bbf69fd327b1a7d821b01285b5b35a68bc391a
server-id:  db3f22e0eb0ba9dd284890556cb0f6abdbc33f50
admin-user: codegnome (initial password is "2536a5")

$ fossil open foo
fossil: SQLITE_READONLY: statement aborts at 19: [INSERT OR IGNORE INTO global_config(name,value)VALUES('repo:/private/tmp/foo',1)] attempt to write a readonly database
fossil: attempt to write a readonly database
INSERT OR IGNORE INTO global_config(name,value)VALUES('repo:/private/tmp/foo',1)

If you have recently updated your fossil executable, you might
need to run "fossil all rebuild" to bring the repository
schemas up to date.

$ fossil version
This is fossil version 1.19 [6517b5c857] 2011-09-01 18:25:19 UTC

This error is not location dependent, and happens regardless of the directory or filename used to create/open the repository. As a result, the binary is essentially non-functional. Uninstalling and reinstalling the port seems to make no difference, either. The results are the same.

If it matters, I'm running OS X Lion with the latest version of MacPorts and the ports tree is current. The same binary seems to work when compiled against libsqlite3-0 v3.7.8-1 under Debian, so it's difficult to tell if the problem is the fossil port itself, or the version of sqlite3 it is compiling against.

Change History (5)

comment:1 Changed 6 years ago by mf2k (Frank Schima)

  • Owner changed from macports-tickets@… to ciserlohn@…

comment:2 Changed 6 years ago by ci42

  • Description modified (diff)

comment:3 in reply to: ↑ description Changed 6 years ago by ci42

Replying to spamivore+macports@…:

The current fossil port does not seem to build correctly against sqlite3.

The port uses the sqlite version which is bundled with fossil and is not linkend against an external sqlite.

This error is not location dependent, and happens regardless of the directory or filename used to create/open the repository.

What are the file permissions of your repository and who is the file owner (output of ls -l)? The error message suggest that the repository is read-only.

If it matters, I'm running OS X Lion with the latest version of MacPorts and the ports tree is current. The same binary seems to work when compiled against libsqlite3-0 v3.7.8-1 under Debian, so it's difficult to tell if the problem is the fossil port itself, or the version of sqlite3 it is compiling against.

I'm running OS X 10.6.8 and I can't reproduce the described behaviour. As sqlite should not be the problem, this seems to be an problem with your file permissions or something related to OS X 10.7.

comment:4 Changed 6 years ago by ci42

Please check the file owner and permissions of the ".fossil" file in your home directory. If you don't have write permission for it the aforementioned error occurs.

comment:5 Changed 6 years ago by ci42

  • Resolution set to fixed
  • Status changed from new to closed

Fixed in r84762.

The fossil port tries to find and rebuild existing repositories after upgrading or installing fossil. Fossil stores information about existing repositories in a '.fossil' file in the users home directory. If there is no '.fossil' file, it will be created when the port tries to find and rebuild the existing repositories. Unfortunately if created by the port the '.fossil' file is owned by root and not writable by the user and therefor causing the aforementioned error.

Fossil should work fine if you change the file owner of '.fossil' to your user. The new version of the port checks if a '.fossil' exists. If not, it will not create a '.fossil' of it own.

Note: See TracTickets for help on using tickets.