1
Programming / Newbie guide to porting software?
« on: June 10, 2022, 01:09:37 am »
So I went from being a mostly DOS user to about 30 years of using various flavors of *IX. I'm now playing around with ArcaOS finally. At my $DAYJOB I build a lot of RPM packages (for Linux), so I figured why not try and build some on OS/2 too!
So far, I'm mostly failing though, and I haven't even made it to the .rpm part yet .
My first attempt was lftp, since the built-in ftp.exe is pretty lacking and the version of NcFTP in the yum repo is pretty old. I managed to get lftp to build, but it has 2 major issues so far: 1) It can't find local files at all (I'm guessing due to / vs \ ?) and 2) The password prompt is echoing the password.
My second attempt was some flavor of vi. I know there are some old versions of vim floating around, but I figured I'd give something a shot. I figured vim was too much to start with, so I started with nvi. The original version of nvi had a pretty old build system and nvi2 seems to have a lot of BSD-specific things, so I tried elvis. Elvis seems to have some OS/2 support, but that support was originally compiled with IBM VisualAge C++ 3.0. So I attempted to just use the POSIX (UNIX) code with gcc and ncurses. That compiled fine and it runs, but when I move around with the h/j/k/l keys, those keys keep printing (eg, it'll print "jjjj") until I hit enter, and then the enter will repaint the screen and get rid of the "j"s. I tried modifying the code to force repaints after every key, but no luck quite yet.
So I'm hoping that these issues are common ones that others have ran into and that maybe it's something that we can put on Wiki somewhere?
To start out with, I had taken some info that I found on these forums and then modified it until I got things mostly working. Most of the posts here assume "ash", but I'm currently using "mksh" as I much prefer it (but I've tried ash too!). My workflow so far is basically:
C:\> mksh
$ . ./os2.txt
$ mkdir project/build
$ cd project/build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make
Where os2.txt contains:
export LDFLAGS="-Zomf -Zhigh-mem -Zmap -Zbin-files -Zargs-wild -Zargs-resp"
export CFLAGS="-O2 -g -march=pentium4 -pipe"
export CXXFLAGS="-O2 -g -march=pentium4 -pipe"
export LIBS="-lcx"
export CC=gcc
export CXX=g++
export CPP=cpp
export CXXCPP=cpp
export LD=wl
export AR=emxomfld
export exeext=.exe
export SH=/usr/bin/mksh
export SHELL=/usr/bin/mksh
export CONFIG_SHELL=/usr/bin/mksh
export POSIX_SHELL=/usr/bin/mksh
export PREFERABLY_POSIX_SHELL=/usr/bin/mksh
export PATH="C:/USR/SBIN;C:/USR/BIN"
(SH/CONFIG_SHELL/POSIX_SHELL/PREFERABLY_POSIX_SHELL is for autoconf projects)
So far, I'm mostly failing though, and I haven't even made it to the .rpm part yet .
My first attempt was lftp, since the built-in ftp.exe is pretty lacking and the version of NcFTP in the yum repo is pretty old. I managed to get lftp to build, but it has 2 major issues so far: 1) It can't find local files at all (I'm guessing due to / vs \ ?) and 2) The password prompt is echoing the password.
My second attempt was some flavor of vi. I know there are some old versions of vim floating around, but I figured I'd give something a shot. I figured vim was too much to start with, so I started with nvi. The original version of nvi had a pretty old build system and nvi2 seems to have a lot of BSD-specific things, so I tried elvis. Elvis seems to have some OS/2 support, but that support was originally compiled with IBM VisualAge C++ 3.0. So I attempted to just use the POSIX (UNIX) code with gcc and ncurses. That compiled fine and it runs, but when I move around with the h/j/k/l keys, those keys keep printing (eg, it'll print "jjjj") until I hit enter, and then the enter will repaint the screen and get rid of the "j"s. I tried modifying the code to force repaints after every key, but no luck quite yet.
So I'm hoping that these issues are common ones that others have ran into and that maybe it's something that we can put on Wiki somewhere?
To start out with, I had taken some info that I found on these forums and then modified it until I got things mostly working. Most of the posts here assume "ash", but I'm currently using "mksh" as I much prefer it (but I've tried ash too!). My workflow so far is basically:
C:\> mksh
$ . ./os2.txt
$ mkdir project/build
$ cd project/build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make
Where os2.txt contains:
export LDFLAGS="-Zomf -Zhigh-mem -Zmap -Zbin-files -Zargs-wild -Zargs-resp"
export CFLAGS="-O2 -g -march=pentium4 -pipe"
export CXXFLAGS="-O2 -g -march=pentium4 -pipe"
export LIBS="-lcx"
export CC=gcc
export CXX=g++
export CPP=cpp
export CXXCPP=cpp
export LD=wl
export AR=emxomfld
export exeext=.exe
export SH=/usr/bin/mksh
export SHELL=/usr/bin/mksh
export CONFIG_SHELL=/usr/bin/mksh
export POSIX_SHELL=/usr/bin/mksh
export PREFERABLY_POSIX_SHELL=/usr/bin/mksh
export PATH="C:/USR/SBIN;C:/USR/BIN"
(SH/CONFIG_SHELL/POSIX_SHELL/PREFERABLY_POSIX_SHELL is for autoconf projects)