endlesssoftware / sqlite3

SQLite for OpenVMS
25 stars 12 forks source link

build problems #9

Open hb-- opened 11 years ago

hb-- commented 11 years ago
EDIT/TECO/EXECUTE= MAKE_SYMBOL_VECTOR.TEC       "SYS$DISK:[]SYMBOL_VECTOR.TXT=SYS$DISK:[.ETC-AXP]SQLITE3.LIS SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT"
?FNF    File not found "
%MMK-F-ERRUPD, error status %X1000002C occurred when updating target SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT
$ 

and without knowning what teco does ...

$ copy nl: SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT
$ mmk
%MMK-F-CANTUPD, cannot update target SYS$DISK:[]SQLITE3_SHR.AXP_OPT - sources unknown
$ copy nl: SYS$DISK:[]SQLITE3_SHR.AXP_OPT
$ mmk
@MAKE_VERSION SYS$DISK:[]SQLITE3.H SYS$DISK:[.ETC-AXP]VERSION.OPT
LINK/SHARE=SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL        SYS$DISK:[]SQLITE3_SHR.AXP_OPT/OPT,SYS$DISK:[.ETC-AXP]VERSION.OPT/OPT,  SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT/OPT
%LINK-F-NOMODS, no input modules specified (or found)
%MMK-F-ERRUPD, error status %X1064839C occurred when updating target SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE
$

OK, no surprise that the linker is unhappy, although the linker is my friend :-)

tesneddon commented 11 years ago

My apologies. I am still working on straightening out the build procedure. It is the next thing on my list, and mentioned in the commit for the description file (I think). A big change will be to only generate the vector when requested. TECO is a text editing language. I wrote the symbol vector generator in it.

tesneddon commented 11 years ago

As part of this we need to separate MAKE_SYMBOL_VECTOR.TES into one procedure that generates/updates SYMBOL_VECTOR.TXT and then into two separate procedures that use it to generate symbol vectors for the different architectures; maybe MAKE_LINKER_VECTOR.TEC and MAKE_VAX_VECTOR.TEC. These can then be run any time it is needed.

The symbol vector should be updated automagically if there are changes in sqlite3.h, relative to SYMBOL_VECTOR.TXT. It was previously the object library, but the public interface is listed in the header file, so changes will be recorded in there.

Also, don't generate SYMBOL_VECTOR.TXT on a VAX as yet. The LIBRARY utility only lists routine names when using the /NAMES qualifier on VAX, where as on Alpha/I64 it lists the global symbols also.

tesneddon commented 11 years ago

Significant changes to how the symbol vector is generated. It is now possible to generate all targets without being local. SYMBOL_VECTOR.TXT (used to maintain order of the transfer vector) can only be run on Alpha or Itanium due to data symbols not appearing the listing from LIBRARY/LIST/NAME on VAX. This might change in the future. However, for now it is good enough. The build of SYMBOL_VECTOR.TXT is now linked against sqlite3.h, instead of the object library. If public routines are going to appear, they need to be in the public header file.

hb-- commented 11 years ago

... out of the zip box, obviously on Alpha:

$ mmk
#define SQLITE_OMIT_WAL 1
...
CC/NOLIST/OBJECT=SYS$DISK:[.BIN-AXP]WHERE.OBJ/NAME=AS_IS/WARN=DISABLE=(LONGEXTERN,EMPTYFILE)  /FIRST_INCLUDE=SYS$DISK:[.ETC-AXP]CONFIG.H/FLOAT=IEEE_FLOAT SYS$DISK:[]WHERE.C+SYS$LIBRARY:SYS$LIB_C/LIB
LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]WHERE.OBJ
%MMK-F-CANTUPD, cannot update target SYS$DISK:[]SQLITE3_SHR.AXP_OPT - sources un
known
$ 
$ copy nl: SQLITE3_SHR.AXP_OPT
$ mmk
LINK/SHARE=SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL        SYS$DISK:[]SQLITE3_SHR.AXP_OPT/OPT,SYS$DISK:[.ETC-AXP]VERSION.OPT/OPT,      SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT/OPT
%LINK-F-OPTSYNERR, syntax error in options file USR_SCRATCH:[SQLITE3-MASTER]SQLITE3_VECTOR.AXP_OPT;1
-LINK-E-OPTLIN, options line in error
'       CASE_SENSITIVE=YES'
%MMK-F-ERRUPD, error status %X106483B4 occurred when updating target SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE
$ 

interesting, where does this file come from?

$ mc sys$login:fats SQLITE3_VECTOR.AXP_OPT
File USR_SCRATCH:[SQLITE3-MASTER]SQLITE3_VECTOR.AXP_OPT;1
credate="17-APR-2013 08:58:34.00"
revdate="17-APR-2013 08:58:34.00"
expdate="17-NOV-1858 00:00:00.00"
bakdate="17-NOV-1858 00:00:00.00"
org=seq
rfm=stmlf
rat=cr
lrl=0
hbk=36
ebk=36
ffb=103
bks=0
fsz=0
deq=5
mrs=0
gbc=0
vrs=0
$ set file/attr=rfm=stm SQLITE3_VECTOR.AXP_OPT
$ mmk
LINK/SHARE=SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL        SYS$DISK:[]SQLITE3_SHR.AXP_OPT/OPT,SYS$DISK:
[.ETC-AXP]VERSION.OPT/OPT,      SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT/OPT
%LINK-W-NUDFSYMS, 182 undefined symbols:
%LINK-I-UDFSYM,         sqlite3_aggregate_context 
%LINK-I-UDFSYM,         sqlite3_aggregate_count 
%LINK-I-UDFSYM,         sqlite3_auto_extension 
%LINK-I-UDFSYM,         sqlite3_backup_finish 
...

Obviously, SQLITE3_SHR.AXP_OPT should contain some object modules or libraries.

$ cre SQLITE3_SHR.AXP_OPT
SYS$DISK:[.BIN-AXP]SQLITE3.OLB/lib
 Exit 
$ mmk
LINK/SHARE=SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL        SYS$DISK:[]SQLITE3_SHR.AXP_OPT/OPT,SYS$DISK:
[.ETC-AXP]VERSION.OPT/OPT,      SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT/OPT
%MMK-F-CANTUPD, cannot update target SYS$DISK:[]SQLITE3.AXP_OPT - sources unknown
$ 
$ copy nl: SQLITE3.AXP_OPT
$ mmk
DEFINE/USER SQLITE3_SHR BIN_DIR:SQLITE3_SHR.EXE
LINK/EXE=SYS$DISK:[.BIN-AXP]SQLITE3.EXE/NOTRACEBACK/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL  SYS$DISK:[]SQLITE3.AXP_OPT/OPT,SYS$DISK:[.ET
C-AXP]VERSION.OPT/OPT
%LINK-F-NOMODS, no input modules specified (or found)
%MMK-F-ERRUPD, error status %X1064839C occurred when updating target SYS$DISK:[.BIN-AXP]SQLITE3.EXE
$ cre SQLITE3.AXP_OPT
SYS$DISK:[.BIN-AXP]shell
SYS$DISK:[.BIN-AXP]SQLITE3_SHR/share
 Exit 
$ 
DEFINE/USER SQLITE3_SHR BIN_DIR:SQLITE3_SHR.EXE
LINK/EXE=SYS$DISK:[.BIN-AXP]SQLITE3.EXE/NOTRACEBACK/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL  SYS$DISK:[]SQLITE3.AXP_OPT/OPT,SYS$DISK:[.ET
C-AXP]VERSION.OPT/OPT
%LINK-W-NUDFSYMS, 4 undefined symbols:
%LINK-I-UDFSYM,         vms_getname 
%LINK-I-UDFSYM,         vms_read_history 
%LINK-I-UDFSYM,         vms_readline 
%LINK-I-UDFSYM,         vms_write_history 
...
$ append tt: SQLITE3.AXP_OPT
SYS$DISK:[.BIN-AXP]vmsshell
 Exit 
$ mmk
DEFINE/USER SQLITE3_SHR BIN_DIR:SQLITE3_SHR.EXE
LINK/EXE=SYS$DISK:[.BIN-AXP]SQLITE3.EXE/NOTRACEBACK/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL  SYS$DISK:[]SQLITE3.AXP_OPT/OPT,SYS$DISK:[.ET
C-AXP]VERSION.OPT/OPT
$ 

Hmm, I do see .I64_OPTs. Maybe I should kust used them. The SQLITE3.I64_OPT has a SQLITE3_SHR/SHARE, which explains the DEFINE/USER (a BIN_DIR:SQLITE3_SHR/SHARE should do, and would be consistent with the other options). The SQLITE3_SHR.I64_OPT has a PSECT_ATTR=$CODE$,SHR. Isn't that default for code? It also contains a collect option for $CODE$,$CODE. Just curious, what's the reason for collecting code into the first cluster?

hb-- commented 11 years ago

Sorry, there is more ... I changed os_vms.c to remove the system lock:

$ mmk
LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]ALTER.OBJ
LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]ANALYZE.OBJ
LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]ATTACH.OBJ
...
LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]OS.OBJ
CC/NOLIST/OBJECT=SYS$DISK:[.BIN-AXP]OS_VMS.OBJ/NAME=AS_IS/WARN=DISABLE=(LONGEXTERN,EMPTYFILE)  /FIRST_INCLUDE=SYS$DISK:[.ETC-AXP]CON
FIG.H/FLOAT=IEEE_FLOAT SYS$DISK:[]OS_VMS.C+SYS$LIBRARY:SYS$LIB_C/LIB
LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]OS_VMS.OBJ
LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]PAGER.OBJ
...

Why is the library updated for all the object modules?

...
LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]WHERE.OBJ
EDIT/TECO/EXECUTE= SYS$DISK:[]SQU.TEC "/L:Y/B:Y/T:Y/C:Y/A:Y SYS$DISK:[]MAKE_SYMBOL_VECTOR.TEC=SYS$DISK:[]MAKE_SYMBOL_VECTOR.TES"

Squishing "USR_SCRATCH:[BECKER_H.SQLITE3-MASTER]MAKE_SYMBOL_VECTOR.TES;1"
Creating "USR_SCRATCH:[BECKER_H.SQLITE3-MASTER]MAKE_SYMBOL_VECTOR.TEC;2"
LIBRARY/LIST=SYS$DISK:[.ETC-AXP]SQLITE3.LIS/NAMES SYS$DISK:[.BIN-AXP]SQLITE3.OLB/OBJECT
EDIT/TECO/EXECUTE= MAKE_SYMBOL_VECTOR.TEC       "SYS$DISK:[]SYMBOL_VECTOR.TXT=SYS$DISK:[.ETC-AXP]SQLITE3.LIS"
MAKE_SYMBOL_VECTOR  V2.0
...Reading symbol vector table from library listing...done...
...Loading public header file for comparison...sorting...done...
...Loading existing symbol vector table...done...
...Building new symbol vector table......done...
...Checking for changes in symbol vector table....
   ...sqlite3_set_authorizer is missing.
   ...sqlite3_backup_finish is missing.
   ...sqlite3_backup_init is missing.
   ...sqlite3_backup_pagecount is missing.
...

Whatever triggered this after a change in a source module, not a/the header.

...
   ...sqlite3_vtab_config is missing.
   ...sqlite3_vtab_on_conflict is missing.
   ...sqlite3_set_authorizer is new.
   ...sqlite3_backup_finish is new.
   ...sqlite3_backup_init is new.
   ...sqlite3_backup_pagecount is new.
...

Doesn't make sense to me. There shouldn't be any change. Does stmlf strike again?

    ...sqlite3_vtab_config is new.
   ...sqlite3_vtab_on_conflict is new
...symbol table has changed...done...
EDIT/TECO/EXECUTE= SYS$DISK:[]SQU.TEC "/L:Y/B:Y/T:Y/C:Y/A:Y SYS$DISK:[]MAKE_LINKER_VECTOR.TEC=SYS$DISK:[]MAKE_LINKER_VECTOR.TES"

Squishing "USR_SCRATCH:[BECKER_H.SQLITE3-MASTER]MAKE_LINKER_VECTOR.TES;1"
Creating "USR_SCRATCH:[BECKER_H.SQLITE3-MASTER]MAKE_LINKER_VECTOR.TEC;2"
EDIT/TECO/EXECUTE= MAKE_LINKER_VECTOR.TEC "SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT=SYS$DISK:[]SYMBOL_VECTOR.TXT"
MAKE_LINKER_VECTOR  V1.0
...Loading existing symbol vector table...done...
...Generating Linker Options Symbol Vector...done...
LINK/SHARE=SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL        SYS$DISK:[]SQLITE3_SHR.AXP_OPT/OPT,SYS$DISK:
[.ETC-AXP]VERSION.OPT/OPT,      SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT/OPT
%LINK-F-OPTSYNERR, syntax error in options file USR_SCRATCH:[SQLITE3-MASTER]SQLITE3_VECTOR.AXP_OPT;2
-LINK-E-OPTLIN, options line in error
        _VECTOR=(sqlite3_set_authorizer='SPARE',SQLITE3_SET_AUTHORIZER/sqlite3_s
%MMK-F-ERRUPD, error status %X106483B4 occurred when updating target SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE
$ 

Even if it were correct to have spare entries, here, spare is an entry by its own:

$ pipe help/nopage/noprompt LINK SYMBOL_VECTOR Option_Values |search sys$pipe spare/window=(0,15) |search sys$pipe "***************" /match=nand
         SPARE            Use this keyword to create a placeholder.
                          SPARE allows you to preserve the order of the
                          symbol vector entries when you need to create an
                          upwardly compatible shareable image. The SPARE
                          keyword is used alone; it is not preceded by a
                          symbol name and equal sign.
tesneddon commented 11 years ago

Hi @hb--,

Thanks for checking this out. I hadn't had a chance to run the build on Alpha. I had (wrongly) assumed that I had built on Alpha already and filled out those other options files. I'll take care of that today when I do run the build on an Alpha.

As for the collect; yeah, those are defaults. The options files are just copied out of a larger collection of templates I have that include a raft of other options, etc. I had trimmed a lot, just not everything. I'll tidy that up too.

Regards, Tim.

hb-- notifications@github.com wrote:

... out of the zip box, obviously on Alpha:

$ mmk #define SQLITE_OMIT_WAL 1 ... CC/NOLIST/OBJECT=SYS$DISK:[.BIN-AXP]WHERE.OBJ/NAME=AS_IS/WARN=DISABLE=(LONGEXTERN,EMPTYFILE) /FIRST_INCLUDE=SYS$DISK:[.ETC-AXP]CONFIG.H/FLOAT=IEEE_FLOAT SYS$DISK:[]WHERE.C+SYS$LIBRARY:SYS$LIB_C/LIB LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]WHERE.OBJ %MMK-F-CANTUPD, cannot update target SYS$DISK:[]SQLITE3_SHR.AXP_OPT - sources un known $ $ copy nl: SQLITE3_SHR.AXP_OPT $ mmk LINK/SHARE=SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL SYS$DISK:[]SQLITE3_SHR.AXP_OPT/OPT,SYS$DISK:[.ETC-AXP]VERSION.OPT/OPT, SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT/OPT %LINK-F-OPTSYNERR, syntax error in options file USR_SCRATCH:[SQLITE3-MASTER]SQLITE3_VECTOR.AXP_OPT;1 -LINK-E-OPTLIN, options line in error ' CASE_SENSITIVE=YES' %MMK-F-ERRUPD, error status %X106483B4 occurred when updating target SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE $

interesting, where does this file come from?

$ mc sys$login:fats SQLITE3_VECTOR.AXP_OPT File USR_SCRATCH:[SQLITE3-MASTER]SQLITE3_VECTOR.AXP_OPT;1 credate="17-APR-2013 08:58:34.00" revdate="17-APR-2013 08:58:34.00" expdate="17-NOV-1858 00:00:00.00" bakdate="17-NOV-1858 00:00:00.00" org=seq rfm=stmlf rat=cr lrl=0 hbk=36 ebk=36 ffb=103 bks=0 fsz=0 deq=5 mrs=0 gbc=0 vrs=0 $ set file/attr=rfm=stm SQLITE3_VECTOR.AXP_OPT $ mmk LINK/SHARE=SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL SYS$DISK:[]SQLITE3_SHR.AXP_OPT/OPT,SYS$DISK: [.ETC-AXP]VERSION.OPT/OPT, SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT/OPT %LINK-W-NUDFSYMS, 182 undefined symbols: %LINK-I-UDFSYM, sqlite3_aggregate_context %LINK-I-UDFSYM, sqlite3_aggregate_count %LINK-I-UDFSYM, sqlite3_auto_extension %LINK-I-UDFSYM, sqlite3_backup_finish ...

Obviously, SQLITE3_SHR.AXP_OPT should contain some object modules or libraries.

$ cre SQLITE3_SHR.AXP_OPT SYS$DISK:[.BIN-AXP]SQLITE3.OLB/lib Exit $ mmk LINK/SHARE=SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL SYS$DISK:[]SQLITE3_SHR.AXP_OPT/OPT,SYS$DISK: [.ETC-AXP]VERSION.OPT/OPT, SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT/OPT %MMK-F-CANTUPD, cannot update target SYS$DISK:[]SQLITE3.AXP_OPT - sources unknown $ $ copy nl: SQLITE3.AXP_OPT $ mmk DEFINE/USER SQLITE3_SHR BIN_DIR:SQLITE3_SHR.EXE LINK/EXE=SYS$DISK:[.BIN-AXP]SQLITE3.EXE/NOTRACEBACK/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL SYS$DISK:[]SQLITE3.AXP_OPT/OPT,SYS$DISK:[.ET C-AXP]VERSION.OPT/OPT %LINK-F-NOMODS, no input modules specified (or found) %MMK-F-ERRUPD, error status %X1064839C occurred when updating target SYS$DISK:[.BIN-AXP]SQLITE3.EXE $ cre SQLITE3.AXP_OPT SYS$DISK:[.BIN-AXP]shell SYS$DISK:[.BIN-AXP]SQLITE3_SHR/share Exit $ DEFINE/USER SQLITE3_SHR BIN_DIR:SQLITE3_SHR.EXE LINK/EXE=SYS$DISK:[.BIN-AXP]SQLITE3.EXE/NOTRACEBACK/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL SYS$DISK:[]SQLITE3.AXP_OPT/OPT,SYS$DISK:[.ET C-AXP]VERSION.OPT/OPT %LINK-W-NUDFSYMS, 4 undefined symbols: %LINK-I-UDFSYM, vms_getname %LINK-I-UDFSYM, vms_read_history %LINK-I-UDFSYM, vms_readline %LINK-I-UDFSYM, vms_write_history ... $ append tt: SQLITE3.AXP_OPT SYS$DISK:[.BIN-AXP]vmsshell Exit $ mmk DEFINE/USER SQLITE3_SHR BIN_DIR:SQLITE3_SHR.EXE LINK/EXE=SYS$DISK:[.BIN-AXP]SQLITE3.EXE/NOTRACEBACK/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL SYS$DISK:[]SQLITE3.AXP_OPT/OPT,SYS$DISK:[.ET C-AXP]VERSION.OPT/OPT $

Hmm, I do see .I64_OPTs. Maybe I should kust used them. The SQLITE3.I64_OPT has a SQLITE3_SHR/SHARE, which explains the DEFINE/USER (a BIN_DIR:SQLITE3_SHR/SHARE should do, and would be consistent with the other options). The SQLITE3_SHR.I64_OPT has a PSECT_ATTR=$CODE$,SHR. Isn't that default for code? It also contains a collect option for $CODE$,$CODE. Just curious, what's the reason for collecting code into the first cluster?

— Reply to this email directly or view it on GitHub.

tesneddon commented 11 years ago

Hi @hb--,

I'm not sure what triggered that. Although, it did expose a bug in the symbol vector generator.

That shouldn't have triggered and I'll check that out also. I'll recheck file attributes while I am at it.

Regards, Tim.

hb-- notifications@github.com wrote:

Sorry, there is more ... I changed os_vms.c to remove the system lock:

$ mmk LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]ALTER.OBJ LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]ANALYZE.OBJ LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]ATTACH.OBJ ... LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]OS.OBJ CC/NOLIST/OBJECT=SYS$DISK:[.BIN-AXP]OS_VMS.OBJ/NAME=AS_IS/WARN=DISABLE=(LONGEXTERN,EMPTYFILE) /FIRST_INCLUDE=SYS$DISK:[.ETC-AXP]CON FIG.H/FLOAT=IEEE_FLOAT SYS$DISK:[]OS_VMS.C+SYS$LIBRARY:SYS$LIB_C/LIB LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]OS_VMS.OBJ LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]PAGER.OBJ ...

Why is the library updated for all the object modules?

... LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]WHERE.OBJ EDIT/TECO/EXECUTE= SYS$DISK:[]SQU.TEC "/L:Y/B:Y/T:Y/C:Y/A:Y SYS$DISK:[]MAKE_SYMBOL_VECTOR.TEC=SYS$DISK:[]MAKE_SYMBOL_VECTOR.TES" Squishing "USR_SCRATCH:[BECKER_H.SQLITE3-MASTER]MAKE_SYMBOL_VECTOR.TES;1" Creating "USR_SCRATCH:[BECKER_H.SQLITE3-MASTER]MAKE_SYMBOL_VECTOR.TEC;2" LIBRARY/LIST=SYS$DISK:[.ETC-AXP]SQLITE3.LIS/NAMES SYS$DISK:[.BIN-AXP]SQLITE3.OLB/OBJECT EDIT/TECO/EXECUTE= MAKE_SYMBOL_VECTOR.TEC "SYS$DISK:[]SYMBOL_VECTOR.TXT=SYS$DISK:[.ETC-AXP]SQLITE3.LIS" MAKE_SYMBOL_VECTOR V2.0 ...Reading symbol vector table from library listing...done... ...Loading public header file for comparison...sorting...done... ...Loading existing symbol vector table...done... ...Building new symbol vector table......done... ...Checking for changes in symbol vector table.... ...sqlite3_set_authorizer is missing. ...sqlite3_backup_finish is missing. ...sqlite3_backup_init is missing. ...sqlite3_backup_pagecount is missing. ...

Whatever triggered this after a change in a source module, not a/the header.

... ...sqlite3_vtab_config is missing. ...sqlite3_vtab_on_conflict is missing. ...sqlite3_set_authorizer is new. ...sqlite3_backup_finish is new. ...sqlite3_backup_init is new. ...sqlite3_backup_pagecount is new. ...

Doesn't make sense to me. There shouldn't be any change. Does stmlf strike again?

...sqlite3_vtab_config is new. ...sqlite3_vtab_on_conflict is new ...symbol table has changed...done... EDIT/TECO/EXECUTE= SYS$DISK:[]SQU.TEC "/L:Y/B:Y/T:Y/C:Y/A:Y SYS$DISK:[]MAKE_LINKER_VECTOR.TEC=SYS$DISK:[]MAKE_LINKER_VECTOR.TES" Squishing "USR_SCRATCH:[BECKER_H.SQLITE3-MASTER]MAKE_LINKER_VECTOR.TES;1" Creating "USR_SCRATCH:[BECKER_H.SQLITE3-MASTER]MAKE_LINKER_VECTOR.TEC;2" EDIT/TECO/EXECUTE= MAKE_LINKER_VECTOR.TEC "SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT=SYS$DISK:[]SYMBOL_VECTOR.TXT" MAKE_LINKER_VECTOR V1.0 ...Loading existing symbol vector table...done... ...Generating Linker Options Symbol Vector...done... LINK/SHARE=SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE/MAP=SYS$DISK:[.ETC-AXP]/CROSS/FULL SYS$DISK:[]SQLITE3_SHR.AXP_OPT/OPT,SYS$DISK: [.ETC-AXP]VERSION.OPT/OPT, SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT/OPT %LINK-F-OPTSYNERR, syntax error in options file USR_SCRATCH:[SQLITE3-MASTER]SQLITE3_VECTOR.AXP_OPT;2 -LINK-E-OPTLIN, options line in error _VECTOR=(sqlite3_set_authorizer='SPARE',SQLITE3_SET_AUTHORIZER/sqlite3_s %MMK-F-ERRUPD, error status %X106483B4 occurred when updating target SYS$DISK:[.BIN-AXP]SQLITE3_SHR.EXE $

Even if it were correct to have spare entries, here, spare is an entry by its own:

$ pipe help/nopage/noprompt LINK SYMBOL_VECTOR Option_Values |search sys$pipe spare/window=(0,15) |search sys$pipe "***" /match=nand SPARE Use this keyword to create a placeholder. SPARE allows you to preserve the order of the symbol vector entries when you need to create an upwardly compatible shareable image. The SPARE keyword is used alone; it is not preceded by a symbol name and equal sign.

— Reply to this email directly or view it on GitHub.

tesneddon commented 11 years ago

$ mmk LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]ALTER.OBJ LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]ANALYZE.OBJ LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]ATTACH.OBJ ... LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]OS.OBJ CC/NOLIST/OBJECT=SYS$DISK:[.BIN-AXP]OS_VMS.OBJ/NAME=AS_IS/WARN=DISABLE=(LONGEXTERN,EMPTYFILE) /FIRST_INCLUDE=SYS$DISK:[.ETC-AXP]CON FIG.H/FLOAT=IEEE_FLOAT SYS$DISK:[]OS_VMS.C+SYS$LIBRARY:SYS$LIB_C/LIB LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]OS_VMS.OBJ LIBRARY/REPLACE SYS$DISK:[.BIN-AXP]SQLITE3.OLB SYS$DISK:[.BIN-AXP]PAGER.OBJ ... Why is the library updated for all the object modules?

As for why the library is updated with all modules...I have no idea. That looks like it might be an issue with MMK. I will have a go at reproducing it here (I have not seen this happen before). Please submit a bug to the MMK project (including the output of MMK/IDENTIFICATION).

hb-- commented 11 years ago

The library update is correct, I triggered it. On Eisner, on the scratch directory, I don't own the files, there is just an ACL giving me access. The editor I use, jed, is written in C and it uses standard C/ANSI functions, which seem not to recognize that the ACL gives me write access to a file. Good thing is, I am granted CONTROL by the ACE, so for a quick fix I changed all the files with set file/prot=w:rwed [...]*.*;*. That changes the revdate. I should have done this immediately after unzipping the sources and not after the first build. I apologize for the noise.

tesneddon commented 11 years ago

No problem at all. Thanks for looking into it further and coming up with a solution.

Regards, Tim.

hb-- notifications@github.com wrote:

The library update is correct, I triggered it. On Eisner, on the scratch directory, I don't own the files, there is just an ACL giving me access. The editor I use, jed, is written in C and it uses standard C/ANSI functions, which seem not to recognize that the ACL gives me write access to a file. Good thing is, I am granted CONTROL by the ACE, so for a quick fix I changed all the files with set file/prot=w:rwed [...]. That changes the revdate. I should have done this immediately after unzipping the sources and not after the first build. I apologize for the noise.

— Reply to this email directly or view it on GitHub.

hb-- commented 11 years ago

For Alpha, there is still one options file missing (or a recipe to make it out of the other [identical?] i64 options file): EDIT/TECO/EXECUTE= SYS$DISK:[]SQU.TEC "/L:Y/B:Y/T:Y/C:Y/A:Y SYS$DISK:[]MAKE_LINKER_VECTOR.TEC=SYS$DISK:[]MAKE_LINKER_VECTOR.TES"

Squishing "EISNER$LDA2:[USR_ODS5.BECKER_H.sqlite3]make_linker_vector.tes;1" Creating "EISNER$LDA2:[USR_ODS5.BECKER_H.sqlite3]make_linker_vector.tec;2" EDIT/TECO/EXECUTE= MAKE_LINKER_VECTOR.TEC "SYS$DISK:[]SQLITE3_VECTOR.AXP_OPT=SYS$DISK:[]SYMBOL_VECTOR.TXT" MAKE_LINKER_VECTOR V1.0 ...Loading existing symbol vector table...done... ...Generating Linker Options Symbol Vector...done... %MMK-F-CANTUPD, cannot update target SYS$DISK:[]SQLITE3_SHR.AXP_OPT - sources unknown

tesneddon commented 11 years ago

Hi @hb--, my apologies for not getting to this. I have been snowed under with so much stuff...I have copied the Itanium version to the Alpha version. At this point the two files won't be different. However, it fits into the build easier if each architecture has its own.

As a side note, I have started to port UnQLite, using the VMS-specific code in SQLite also. You can see more here:

https://github.com/endlesssoftware/unqlite

Regards, @tesneddon

hb-- commented 9 years ago

The sqlite3_vector.axp_opt in the repository/zip file still has the delimiters but record format Stream_LF... (other than the above set file command, deleting and rebuilding the file works, too).

tesneddon commented 9 years ago

I'll have a look at checking in the right format file. I was having a bit of trouble with this a while back, but don't remember if I fixed it or not. There are a bunch of changes I have to get back into the tree over the next couple days, so maybe that is one of them.