[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

dpkg updates for DilOS



Hello All,

i have platfrom DilOS (http://www.dilow.org)
it is illumos based plarform, but it is not illumos as is.
illumos - it is fork from OpenSolaris.

I have ported and updated DPKG + APT for works better with my platforms.

my changes what i’m using on DilOS you can find at:
https://bitbucket.org/dilos/dilos-dpkg/commits/217a5a7e18af8b28ee21b9d1c0e319fc0e256804

branch 'dilos'

let me explain some changes.

right now we have no definition related to 'illumos' and still using 'solaris' with 'SunOS'
it is why you can see from changes with '__sun' and 'OS_Solaris'

question is - will it better if i’ll tyr to use : #if defined(DILOS) - and will define it by vendor definition to CPPFLAGS += -DDILOS ?

DilOS != illumos - i have more updates on my fork. because illumos community have own visions to tools and dislike ideas to have GNU tools in promary place - like: grep, sed, find, etc - and prefer to use illumos tools and hack/update userland apps for it.

i prefer and i’d like to have/provide platform more friendly yo Debian for better ports of Debian userland apps.

I have more modificatinos for it on my env.
i have moved illumos tools to /system/* and using coreutils and others tools from PATH : /usr/bin.
GNU coreutils should be updated to work with ACL on illumos based platform, but this work in plans later.
also updates with ncurses, gettext and others tools - it helps with to be more friendly to builds of userland apps from Debian upstream.

right now i’m using Debian 'stertch' components for ports.

I have couple of questions.

I try to support 2 platforms: Intel + SPARC.
I can’t bulid cross build tools for SPARC builds on Intel because SPARC bulid tools depend on Sun AS and have to try to look how to update it to use GNU AS - it is in ToDO list.

we are using gcc-6 + GNU AS + illumos LD for intel builds : dilos-illumos + userland, and for SPARC userland builds.
but we still stick with gcc-4.4 + Sun AS + illumos LD for sparc dilos-illumos builds.

we are using dpkg -R <another root> <flags> *.deb & apt-get -R <another root> <flags> <list of packages> - for better compatibility with IPS pkg tools and better works with zones (solaris zones virtualization).
Also, it helps with bootstrap of new system - becuase try to use chroot without pre-configuration is pain.

I do only 64bit builds/ports, but have some 32bits components for trasition period

we are using solaris-i386 for 64bit on Intel and solaris-sparc for 64bit on SPARC.

dpkg-architecture on Intel is:

$ dpkg-architecture 
DEB_BUILD_ARCH=solaris-i386
DEB_BUILD_ARCH_ABI=base
DEB_BUILD_ARCH_BITS=64
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_ARCH_ENDIAN=little
DEB_BUILD_ARCH_LIBC=sysv
DEB_BUILD_ARCH_OS=solaris
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=pc-solaris2.11
DEB_BUILD_GNU_TYPE=x86_64-pc-solaris2.11
DEB_BUILD_MULTIARCH=amd64
DEB_HOST_ARCH=solaris-i386
DEB_HOST_ARCH_ABI=base
DEB_HOST_ARCH_BITS=64
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_ARCH_ENDIAN=little
DEB_HOST_ARCH_LIBC=sysv
DEB_HOST_ARCH_OS=solaris
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=pc-solaris2.11
DEB_HOST_GNU_TYPE=x86_64-pc-solaris2.11
DEB_HOST_MULTIARCH=amd64
DEB_TARGET_ARCH=solaris-i386
DEB_TARGET_ARCH_ABI=base
DEB_TARGET_ARCH_BITS=64
DEB_TARGET_ARCH_CPU=amd64
DEB_TARGET_ARCH_ENDIAN=little
DEB_TARGET_ARCH_LIBC=sysv
DEB_TARGET_ARCH_OS=solaris
DEB_TARGET_GNU_CPU=x86_64
DEB_TARGET_GNU_SYSTEM=pc-solaris2.11
DEB_TARGET_GNU_TYPE=x86_64-pc-solaris2.11
DEB_TARGET_MULTIARCH=amd64

on SPARC:
$ dpkg-architecture 
DEB_BUILD_ARCH=solaris-sparc
DEB_BUILD_ARCH_ABI=base
DEB_BUILD_ARCH_BITS=64
DEB_BUILD_ARCH_CPU=sparc64
DEB_BUILD_ARCH_ENDIAN=big
DEB_BUILD_ARCH_LIBC=sysv
DEB_BUILD_ARCH_OS=solaris
DEB_BUILD_GNU_CPU=sparcv9
DEB_BUILD_GNU_SYSTEM=sun-solaris2.11
DEB_BUILD_GNU_TYPE=sparcv9-sun-solaris2.11
DEB_BUILD_MULTIARCH=sparcv9
DEB_HOST_ARCH=solaris-sparc
DEB_HOST_ARCH_ABI=base
DEB_HOST_ARCH_BITS=64
DEB_HOST_ARCH_CPU=sparc64
DEB_HOST_ARCH_ENDIAN=big
DEB_HOST_ARCH_LIBC=sysv
DEB_HOST_ARCH_OS=solaris
DEB_HOST_GNU_CPU=sparcv9
DEB_HOST_GNU_SYSTEM=sun-solaris2.11
DEB_HOST_GNU_TYPE=sparcv9-sun-solaris2.11
DEB_HOST_MULTIARCH=sparcv9
DEB_TARGET_ARCH=solaris-sparc
DEB_TARGET_ARCH_ABI=base
DEB_TARGET_ARCH_BITS=64
DEB_TARGET_ARCH_CPU=sparc64
DEB_TARGET_ARCH_ENDIAN=big
DEB_TARGET_ARCH_LIBC=sysv
DEB_TARGET_ARCH_OS=solaris
DEB_TARGET_GNU_CPU=sparcv9
DEB_TARGET_GNU_SYSTEM=sun-solaris2.11
DEB_TARGET_GNU_TYPE=sparcv9-sun-solaris2.11
DEB_TARGET_MULTIARCH=sparcv9

as you can see - for MULTIARCH we are using 'amd64' & 'sparcv9' - because we have for 64bits isaexec definitions lile:

SPARC:
$ isainfo -v
64-bit sparcv9 applications
32-bit sparc applications
        v8plus div32 mul32 

intel:
$ isainfo -v
64-bit amd64 applications
        vmx sse4.2 sse4.1 ssse3 popcnt tscp cx16 sse3 sse2 sse fxsr mmx 
        cmov amd_sysc cx8 tsc fpu 
32-bit i386 applications
        vmx sse4.2 sse4.1 ssse3 popcnt tscp ahf cx16 sse3 sse2 sse fxsr mmx 
        cmov sep cx8 tsc fpu 

and as default we have :

$ crle -64

Configuration file [version 4]: /var/ld/64/ld.config  
  Platform:     64-bit LSB AMD64
  Default Library Path (ELF):   /lib/64:/usr/lib/64  (system default)
  Trusted Directories (ELF):    /lib/secure/64:/usr/lib/secure/64  (system default)

Command line:
  crle -64 -c /var/ld/64/ld.config

$ crle -64

Configuration file [version 4]: /var/ld/64/ld.config  
  Platform:     64-bit MSB SPARCV9
  Default Library Path (ELF):   /lib/64:/usr/lib/64  (system default)
  Trusted Directories (ELF):    /lib/secure/64:/usr/lib/secure/64  (system default)

Command line:
  crle -64 -c /var/ld/64/ld.config

where /lib/64 is link to plarform specific: 'amd64' on intel and 'sparcv9' on sparc

it is solaris specific where we can’t indetify correct plarform by 'uname' 
$ uname -a
SunOS bld01 5.11 1.3.7.182 sun4v sparc SUNW,SPARC-Enterprise-T5220

$ uname -a
SunOS z172 5.11 1.3.7.182 i86pc i386 i86pc

and we have to use 'isainfo' tools for 32/64 bits identifucation.

first question: what Debian specific platfrom will be better to use instead of solaris-i386 & solaris-sparc ?

DilOS != solaris, DilOS != illumos as is.

can we specify dilos-amd64 & dilos-sparcv9 (or sparc64) as platform definitions for DEB_TARGET_ARCH = DEB_BUILD_ARCH ?

also - DEB_TARGET_ARCH_OS = DEB_BUILD_ARCH_OS = dilos ?

about DEB_HOST_GNU_TYPE & DEB_HOST_GNU_SYSTEM - it is open question too , but need to work with gcc team & autotools  too.

next question: about BASEDIR definition.

BASEDIR is using with '-R' flag - we setup it as another root where we want install packages. some tools like add_drv/rem_drv are using it too.

i have updated dpkg to setup it and use it and it is workign fine couple of years.

Pleae let me know your questions/updates - how we can colaborate and how to update DilOS better for it :)

best regards,
-Igor


Reply to: