Home of the Squeezebox™ & Transporter® network music players.
Page 3 of 6 FirstFirst 12345 ... LastLast
Results 21 to 30 of 55

Thread: JiveLite

  1. #21
    Senior Member
    Join Date
    Sep 2015
    Posts
    218
    ...
    ...
    so I tried loading the files explicitly. This is what I got:

    Code:
                  "elf64-littleaarch64")
    OUTPUT_ARCH(aarch64)
    ENTRY(_start)
    SEARCH_DIR("=/usr/local/lib/aarch64-linux-gnu"); SEARCH_DIR("=/lib/aarch64-linux-gnu"); SEARCH_DIR("=/usr/lib/aarch64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/aarch64-linux-gnu/lib");
    SECTIONS
    {
      /* Read-only sections, merged into text segment: */
      PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS;
      .interp         : { *(.interp) }
      .note.gnu.build-id  : { *(.note.gnu.build-id) }
      .hash           : { *(.hash) }
      .gnu.hash       : { *(.gnu.hash) }
      .dynsym         : { *(.dynsym) }
      .dynstr         : { *(.dynstr) }
      .gnu.version    : { *(.gnu.version) }
      .gnu.version_d  : { *(.gnu.version_d) }
      .gnu.version_r  : { *(.gnu.version_r) }
      .rela.dyn       :
        {
          *(.rela.init)
          *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
          *(.rela.fini)
          *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
          *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
          *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
          *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
          *(.rela.ctors)
          *(.rela.dtors)
    :ld: warning: cannot find entry symbol _start; not setting start address
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `dlopen'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `sinh'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `atan2'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `tanh'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `cosh'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `fmod'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `acos'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `dlclose'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `sin'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `atan'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `asin'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `exp'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `dlerror'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `tan'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `dlsym'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `cos'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `log'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `pow'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `log10'
    ld: /opt/jivelite/lib/liblua.so: undefined reference to `sqrt'
    ...
    ...

  2. #22
    Senior Member
    Join Date
    Sep 2015
    Posts
    218
    ...
    ...
    Code:
    ld: link errors found, deleting executable `a.out'
          *(.rela.got)
          *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
          *(.rela.ifunc)
        }
      .rela.plt       :
        {
          *(.rela.plt)
          PROVIDE_HIDDEN (__rela_iplt_start = .);
          *(.rela.iplt)
          PROVIDE_HIDDEN (__rela_iplt_end = .);
        }
      .init           :
      {
        KEEP (*(SORT_NONE(.init)))
      } =0x1f2003d5
      .plt            : ALIGN(16) { *(.plt) *(.iplt) }
      .text           :
      {
        *(.text.unlikely .text.*_unlikely .text.unlikely.*)
        *(.text.exit .text.exit.*)
        *(.text.startup .text.startup.*)
        *(.text.hot .text.hot.*)
        *(SORT(.text.sorted.*))
        *(.text .stub .text.* .gnu.linkonce.t.*)
        /* .gnu.warning sections are handled specially by elf.em.  */
        *(.gnu.warning)
      } =0x1f2003d5
      .fini           :
      {
        KEEP (*(SORT_NONE(.fini)))
      } =0x1f2003d5
      PROVIDE (__etext = .);
      PROVIDE (_etext = .);
      PROVIDE (etext = .);
      .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
      .rodata1        : { *(.rodata1) }
      .eh_frame_hdr   : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) }
      .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) }
      .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
      .gnu_extab   : ONLY_IF_RO { *(.gnu_extab*) }
      /* These sections are generated by the Sun/Oracle C++ compiler.  */
      .exception_ranges   : ONLY_IF_RO { *(.exception_ranges*) }
      /* Adjust the address for the data segment.  We want to adjust up to
         the same address within the page on the next page up.  */
      . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
      /* Exception handling  */
      .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) }
      .gnu_extab      : ONLY_IF_RW { *(.gnu_extab) }
      .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
      .exception_ranges   : ONLY_IF_RW { *(.exception_ranges*) }
      /* Thread Local Storage sections  */
      .tdata          :
       {
         PROVIDE_HIDDEN (__tdata_start = .);
         *(.tdata .tdata.* .gnu.linkonce.td.*)
       }
      .tbss           : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
      .preinit_array    :
      {
        PROVIDE_HIDDEN (__preinit_array_start = .);
        KEEP (*(.preinit_array))
        PROVIDE_HIDDEN (__preinit_array_end = .);
      }
      .init_array    :
      {
        PROVIDE_HIDDEN (__init_array_start = .);
        KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
        KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
        PROVIDE_HIDDEN (__init_array_end = .);
      }
      .fini_array    :
      {
        PROVIDE_HIDDEN (__fini_array_start = .);
        KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
        KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
        PROVIDE_HIDDEN (__fini_array_end = .);
      }
      .ctors          :
      {
        /* gcc uses crtbegin.o to find the start of
           the constructors, so we make sure it is
           first.  Because this is a wildcard, it
           doesn't matter if the user does not
           actually link against crtbegin.o; the
           linker won't look for a file to match a
           wildcard.  The wildcard also means that it
           doesn't matter which directory crtbegin.o
           is in.  */
        KEEP (*crtbegin.o(.ctors))
        KEEP (*crtbegin?.o(.ctors))
        /* We don't want to include the .ctor section from
           the crtend.o file until after the sorted ctors.
           The .ctor section from the crtend file contains the
           end of ctors marker and it must be last */
        KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
        KEEP (*(SORT(.ctors.*)))
        KEEP (*(.ctors))
      }
      .dtors          :
      {
     {
        KEEP (*crtbegin.o(.dtors))
        KEEP (*crtbegin?.o(.dtors))
        KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
        KEEP (*(SORT(.dtors.*)))
        KEEP (*(.dtors))
      }
      .jcr            : { KEEP (*(.jcr)) }
      .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
      .dynamic        : { *(.dynamic) }
      .got            : { *(.got) *(.igot) }
      . = DATA_SEGMENT_RELRO_END (24, .);
      .got.plt        : { *(.got.plt) *(.igot.plt) }
      .data           :
      {
        PROVIDE (__data_start = .);
        *(.data .data.* .gnu.linkonce.d.*)
        SORT(CONSTRUCTORS)
      }
      .data1          : { *(.data1) }
      _edata = .; PROVIDE (edata = .);
      . = .;
      __bss_start = .;
      __bss_start__ = .;
      .bss            :
      {
       *(.dynbss)
       *(.bss .bss.* .gnu.linkonce.b.*)
       *(COMMON)
       /* Align here to ensure that the .bss section occupies space up to
          _end.  Align after .bss to ensure correct alignment even if the
          .bss section disappears because there are no input sections.
          FIXME: Why do we need it? When there is no .bss section, we do not
          pad the .data section.  */
       . = ALIGN(. != 0 ? 64 / 8 : 1);
      }
      _bss_end__ = .; __bss_end__ = .;
      . = ALIGN(64 / 8);
      . = SEGMENT_START("ldata-segment", .);
      . = ALIGN(64 / 8);
      __end__ = .;
      _end = .; PROVIDE (end = .);
      . = DATA_SEGMENT_END (.);
      /* Stabs debugging sections.  */
      .stab          0 : { *(.stab) }
      .stabstr       0 : { *(.stabstr) }
      .stab.excl     0 : { *(.stab.excl) }
      .stab.exclstr  0 : { *(.stab.exclstr) }
      .stab.index    0 : { *(.stab.index) }
      .stab.indexstr 0 : { *(.stab.indexstr) }
      .comment       0 : { *(.comment) }
      .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) }
      /* DWARF debug sections.
         Symbols in the DWARF debugging sections are relative to the beginning
         of the section so we begin them at 0.  */
      /* DWARF 1 */
      .debug          0 : { *(.debug) }
      .line           0 : { *(.line) }
      /* GNU DWARF 1 extensions */
      .debug_srcinfo  0 : { *(.debug_srcinfo) }
      .debug_sfnames  0 : { *(.debug_sfnames) }
      /* DWARF 1.1 and DWARF 2 */
      .debug_aranges  0 : { *(.debug_aranges) }
      .debug_pubnames 0 : { *(.debug_pubnames) }
      /* DWARF 2 */
      .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
      .debug_abbrev   0 : { *(.debug_abbrev) }
      .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end) }
      .debug_frame    0 : { *(.debug_frame) }
      .debug_str      0 : { *(.debug_str) }
      .debug_loc      0 : { *(.debug_loc) }
      .debug_macinfo  0 : { *(.debug_macinfo) }
      /* SGI/MIPS DWARF 2 extensions */
      .debug_weaknames 0 : { *(.debug_weaknames) }
      .debug_funcnames 0 : { *(.debug_funcnames) }
      .debug_typenames 0 : { *(.debug_typenames) }
      .debug_varnames  0 : { *(.debug_varnames) }
      /* DWARF 3 */
      .debug_pubtypes 0 : { *(.debug_pubtypes) }
      .debug_ranges   0 : { *(.debug_ranges) }
      /* DWARF Extension.  */
      .debug_macro    0 : { *(.debug_macro) }
      .debug_addr     0 : { *(.debug_addr) }
      .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }
      .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
      /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
    }
    
    
    ==================================================
    ld: mode aarch64linux
    attempt to open /opt/jivelite/lib/liblua.so succeeded
    /opt/jivelite/lib/liblua.so
    libc.so.6 needed by /opt/jivelite/lib/liblua.so
    attempt to open /opt/jivelite/lib/libc.so.6 failed
    attempt to open /usr/local/lib/aarch64-linux-gnu/libc.so.6 failed
    attempt to open /usr/local/lib/libc.so.6 failed
    attempt to open /usr/local/lib/aarch64-linux-gnu/libc.so.6 failed
    attempt to open /usr/local/lib/libc.so.6 failed
    attempt to open /lib/libc.so.6 failed
    attempt to open /usr/lib/libc.so.6 failed
    attempt to open /usr/aarch64-linux-gnu/lib/libc.so.6 failed
    attempt to open /opt/jivelite/lib/libc.so.6 failed
    attempt to open /usr/local/lib/aarch64-linux-gnu/libc.so.6 failed
    found libc.so.6 at /lib/aarch64-linux-gnu/libc.so.6
    ld-linux-aarch64.so.1 needed by /opt/jivelite/lib/liblua.so
    attempt to open /opt/jivelite/lib/ld-linux-aarch64.so.1 failed
    attempt to open /usr/local/lib/aarch64-linux-gnu/ld-linux-aarch64.so.1 failed
    found ld-linux-aarch64.so.1 at /lib/aarch64-linux-gnu/ld-linux-aarch64.so.1
    If I symlink the files at /opt/jivelite/lib to /usr/local/lib/ I get the same errors, so

    Either I'm missing some library dependencies or my compilation of lua was bad.

    Does any of that help?

    BR.

  3. #23
    Senior Member ralphy's Avatar
    Join Date
    Jan 2006
    Location
    Canada
    Posts
    2,871
    It's been a while since I looked at that patch.

    Don't cd into src before running make in jivelite source.

    Run at the top level of the jivelite git clone.

    CFLAGS=-DOPTJIVELITE make PREFIX=/opt/jivelite clean
    CFLAGS=-DOPTJIVELITE make PREFIX=/opt/jivelite

    If the jivelite link command still fails then you'll need to install the lua 5.1.5 header and library files in the jivelite source tree before running make.

    In the lua-5.1.5 source code folder NOT the lua src subfolder. Run

    make INSTALL_TOP=`pwd`/pkg linux install

    Then copy the include and lib folders from the pkg directory into the jivelite source top level.
    Ralphy

    1-Touch, 5-Classics, 3-Booms, 2-UE Radio
    Squeezebox client builds donations always appreciated.

  4. #24
    Senior Member
    Join Date
    Sep 2015
    Posts
    218
    Quote Originally Posted by ralphy View Post
    It's been a while since I looked at that patch.

    Don't cd into src before running make in jivelite source.

    Run at the top level of the jivelite git clone.

    CFLAGS=-DOPTJIVELITE make PREFIX=/opt/jivelite clean
    CFLAGS=-DOPTJIVELITE make PREFIX=/opt/jivelite

    If the jivelite link command still fails then you'll need to install the lua 5.1.5 header and library files in the jivelite source tree before running make.

    In the lua-5.1.5 source code folder NOT the lua src subfolder. Run

    make INSTALL_TOP=`pwd`/pkg linux install

    Then copy the include and lib folders from the pkg directory into the jivelite source top level.
    Fantastic! That extra CFLAGS=-DOPTJIVELITE did the trick! Jivelite not only built, but ran locally. Thank you!

    I then made the mistake of running the scripts/remove-ffi.patch, which messed things up, and jivelite now builds, but doesn't run looking for ffi

    so I'm starting again, without removing ffi.

    One thing I did notice was the following warnings when cleaning and making:

    Code:
    rm -f luazipfilter.o zipfilter.so
    make[2]: Leaving directory '/home/mediauser/jivelite/lib-src/luazipfilter'
    rm ../lib/lua/5.1/cjson.so ../lib/lua/5.1/lxp.so ../lib/lua/5.1/lfs.so ../lib/lua/5.1/socket.so ../lib/lua/5.1/mime.so ../lib/lua/5.1/zipfilter.so ../lib/lua/5.1/md5.so ../lib/lua/5.1/sha1.so
    rm: cannot remove '../lib/lua/5.1/cjson.so': No such file or directory
    rm: cannot remove '../lib/lua/5.1/lxp.so': No such file or directory
    rm: cannot remove '../lib/lua/5.1/lfs.so': No such file or directory
    rm: cannot remove '../lib/lua/5.1/socket.so': No such file or directory
    rm: cannot remove '../lib/lua/5.1/mime.so': No such file or directory
    rm: cannot remove '../lib/lua/5.1/zipfilter.so': No such file or directory
    rm: cannot remove '../lib/lua/5.1/md5.so': No such file or directory
    rm: cannot remove '../lib/lua/5.1/sha1.so': No such file or directory
    make[1]: *** [Makefile:59: clean] Error 1
    make[1]: Leaving directory '/home/mediauser/jivelite/lib-src'
    make: *** [Makefile:19: clean] Error 2
    I can't find those files anywhere, so perhaps lua is incomplete?

    Should I worry?

    BR.

  5. #25
    Senior Member
    Join Date
    Sep 2015
    Posts
    218
    Working again after running scripts/remove-ffi.patch and rebuilding.

    I'll ignore the missing file warnings for now.

    Thank you again for your help!

    BR.

  6. #26
    Senior Member ralphy's Avatar
    Join Date
    Jan 2006
    Location
    Canada
    Posts
    2,871
    Quote Originally Posted by Learnincurve View Post
    Working again after running scripts/remove-ffi.patch and rebuilding.

    I'll ignore the missing file warnings for now.

    Thank you again for your help!

    BR.
    Yes, just ignore the warnings.

    A make clean blindly tries to delete the files without checking if they exist first.
    Ralphy

    1-Touch, 5-Classics, 3-Booms, 2-UE Radio
    Squeezebox client builds donations always appreciated.

  7. #27
    Senior Member
    Join Date
    Sep 2015
    Posts
    218

    Using tslib

    TSLIB problems resolved by recompiling libSDL1.2 from deb source.

    Touch screen is now behaving.
    Last edited by Learnincurve; 2020-12-10 at 07:59. Reason: resolved

  8. #28
    Senior Member
    Join Date
    Sep 2015
    Posts
    218

    text scroll speed and smoothness

    Hi

    My display has a fixed refresh rate of 56.2 Hz

    I set the JIVE_FRAMERATE variable before loading jivelite and have tried 28 and 56 as values, where 56 is much smoother than 28, but scrolls too fast.

    In 2017 I found that editing jive.h, with a high JIVE_FRAME_RATE and a lower OFFSET_STEP_MINIMUM than SCROLL_FACTOR gave a relatively smooth and slow enough result:

    but there may be other environment variables that can be passed to acheive a similar result.

    Here is part of my post from 2017:

    /* actual FPS will only run at half of the JIVE_FRAME_RATE */
    #define SCROLL_FPS (JIVE_FRAME_RATE / 2)
    #define SCROLL_OFFSET_STEP_MINIMUM 5
    #define FONT_SCROLL_FACTOR 5

    setting #define SCROLL_FPS to (JIVE_FRAME_RATE / 4) slowed down the 112FPS scrolling again, but didn't result in a smoother scroll than the original setting at 56FPS.

    I'm not sure what the OFFSET_STEP_MINIMUM and SCROLL_FACTOR values do. Have tried various settings here and find that setting a lower OFFSET_STEP_MINIMUM than SCROLL_FACTOR value seems to result in a slower scroll, but even then, the text isn't really smooth unless I turn the FPS in jive.h right up to 112, which I don't want to do, as mentioned above. From a scrolling perspective, the best result so far has been:

    jive.h:
    #define JIVE_FRAME_RATE_DEFAULT 112

    jive_label.c:
    #define SCROLL_FPS (JIVE_FRAME_RATE / 4
    #define SCROLL_OFFSET_STEP_MINIMUM 2
    #define FONT_SCROLL_FACTOR 12

    Is there a way to keep the high framerate (preferably even set it to 56.2), while slowing down the scroll speed?

    Anything that can be done using env. variables is preferable to code changes.

    BR.

  9. #29
    Senior Member ralphy's Avatar
    Join Date
    Jan 2006
    Location
    Canada
    Posts
    2,871
    Quote Originally Posted by Learnincurve View Post
    Hi

    My display has a fixed refresh rate of 56.2 Hz

    I set the JIVE_FRAMERATE variable before loading jivelite and have tried 28 and 56 as values, where 56 is much smoother than 28, but scrolls too fast.

    In 2017 I found that editing jive.h, with a high JIVE_FRAME_RATE and a lower OFFSET_STEP_MINIMUM than SCROLL_FACTOR gave a relatively smooth and slow enough result:

    but there may be other environment variables that can be passed to acheive a similar result.

    Here is part of my post from 2017:

    /* actual FPS will only run at half of the JIVE_FRAME_RATE */
    #define SCROLL_FPS (JIVE_FRAME_RATE / 2)
    #define SCROLL_OFFSET_STEP_MINIMUM 5
    #define FONT_SCROLL_FACTOR 5

    setting #define SCROLL_FPS to (JIVE_FRAME_RATE / 4) slowed down the 112FPS scrolling again, but didn't result in a smoother scroll than the original setting at 56FPS.

    I'm not sure what the OFFSET_STEP_MINIMUM and SCROLL_FACTOR values do. Have tried various settings here and find that setting a lower OFFSET_STEP_MINIMUM than SCROLL_FACTOR value seems to result in a slower scroll, but even then, the text isn't really smooth unless I turn the FPS in jive.h right up to 112, which I don't want to do, as mentioned above. From a scrolling perspective, the best result so far has been:

    jive.h:
    #define JIVE_FRAME_RATE_DEFAULT 112

    jive_label.c:
    #define SCROLL_FPS (JIVE_FRAME_RATE / 4
    #define SCROLL_OFFSET_STEP_MINIMUM 2
    #define FONT_SCROLL_FACTOR 12

    Is there a way to keep the high framerate (preferably even set it to 56.2), while slowing down the scroll speed?

    Anything that can be done using env. variables is preferable to code changes.

    BR.
    It's been a while since I looked at the code but jive_framework.c limits the JIVE_FRAMERATE envar value to an integer >=4 and <= 60.
    Ralphy

    1-Touch, 5-Classics, 3-Booms, 2-UE Radio
    Squeezebox client builds donations always appreciated.

  10. #30
    Senior Member
    Join Date
    Sep 2015
    Posts
    218
    Quote Originally Posted by ralphy View Post
    It's been a while since I looked at the code but jive_framework.c limits the JIVE_FRAMERATE envar value to an integer >=4 and <= 60.
    Thanks Ralphy,

    I have it sorted with the same code hack as before in jive.h

    BR.

    --Marius

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •