installing an ipk package and incompatible with the architecture error
-
#!/bin/sh
File: make_ipk.sh
Author: Chris
Created on 22 September 2019, 01:40:00
while getopts "v:d:" opt;
do
case "${opt}" in
v) version=${OPTARG};;
d) directory=${OPTARG};;
esac
doneif [ -z "$version" ]
then
echo "Version not set, use parameter -v <version>"
exit 1;
fiif [ -z "$directory" ]
then
echo "Output path for ipk not set, use parameter -d <path>"
exit 1;
fimkdir $directory
cd $directory
mkdir -p usr/sbin
mkdir -p etc/myapp/scripts
mkdir -p etc/myapp/certs
mkdir -p etc/opkgcp -rf /home/chris/NetBeansProjects/MyApp/dist/Release/GNU_OpenWRT-Linux/myappd usr/sbin/
cp -rf /home/chris/source/files/www www
cp -rf /home/chris/source/files/etc/myapp/site etc/myapp
cp -rf /home/chris/source/files/etc/myapp/scripts etc/myapp
cp -rf /home/chris/source/files/etc/myapp/certs etc/myapp
cp -rf /home/chris/source/files/etc/myapp/crontab-input etc/myapp#cp /home/chris/update_feeds.sh etc/myapp/scripts
copy certificates
#cp /home/chris/source/files/etc/myapp/certs/ca.crt etc/myapp/certs
#cp /home/chris/source/files/etc/myapp/certs/client.crt etc/myapp/certs
#cp /home/chris/source/files/etc/myapp/certs/client.key etc/myapp/certsmkdir CONTROL
echo "Package: myapp" >> CONTROL/control
echo "Version: $version" >> CONTROL/control
echo "Description: MyApp" >> CONTROL/control
echo "Section: extras" >> CONTROL/control
echo "Priority: optional" >> CONTROL/control
echo "Maintainer: admin@myapp.com" >> CONTROL/control
echo "License: CLOSED" >> CONTROL/control
echo "Architecture: mipsel_24kc" >> CONTROL/control
echo "OE: myappd" >> CONTROL/control
echo "Homepage: www.myapp.com" >> CONTROL/control
echo "Depends: libc, libuci, libubus, libubox, libsqlite3, libgcrypt, libgnutls" >> CONTROL/controlecho "#!/bin/sh" >> CONTROL/preinst
echo "#Add your scripts here" >> CONTROL/preinst
echo "" >> CONTROL/preinstchmod +x CONTROL/preinst
echo "#!/bin/sh" >> CONTROL/postinst
echo "#Add your scripts here" >> CONTROL/postinst
echo "cwv=$(/usr/sbin/myappd -n)" >> CONTROL/postinst
echo "" >> CONTROL/postinst
echo "uci set myapp.@main[0].version=$cwv" >> CONTROL/postinst
echo "uci set myapp.@main[0].version=$(myappd -n)" >> CONTROL/postinst
echo "ls=$(uci get myapp.@license[0].data_collection)" >> CONTROL/postinst
echo "uci commit myapp" >> CONTROL/postinst
echo "crontab /etc/myapp/crontab-input" >> CONTROL/postinst
echo "rm /etc/myapp/crontab-input" >> CONTROL/postinst
echo "/etc/init.d/cron restart" >> CONTROL/postinst
echo "" >> CONTROL/postinstecho "/etc/myapp/scripts/update_banner.sh" >> CONTROL/postinst
#echo "/etc/myapp/scripts/update_feeds.sh" >> CONTROL/postinst
echo "/etc/init.d/myappd restart" >> CONTROL/postinstchmod +x CONTROL/postinst
echo "#!/bin/sh" >> CONTROL/prerm
echo "#Add your scripts here" >> CONTROL/prerm
echo "" >> CONTROL/prerm
chmod +x CONTROL/prermecho "#!/bin/sh" >> CONTROL/postrm
echo "#Add your scripts here" >> CONTROL/postrm
echo "" >> CONTROL/postrm
chmod +x CONTROL/postrm~/source/scripts/ipkg-build ./
Now we can create the repository files
#*********************************************************************************************************
export PATH="$PATH:/home/chris/source/staging_dir/host/bin"
echo "MyApp repository: private key XXXXXXXXXXXXX" >> myapp.key
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" >> myapp.key
#**********************************************************************************************************mkdir repo
mv *.ipk repo
cd repo
~/source/scripts/ipkg-make-index.sh . 2>/dev/null > Packages.manifest
grep -vE '^(Maintainer|LicenseFiles|Source|Require)' Packages.manifest > Packages
gzip -9nc Packages > Packages.gz
usign -S -m Packages -s ../myapp.keyrm Packages
rm Packages.manifest
rm ../myapp.key
-
@optech 2 points to note.
-
The script uses the build system scripts to create the final package, this script just makes it easy for me to copy the required files into the correct directory structure. You can see towards the end of the scripts ~/source/scripts/ipkg-build and ~/source/scripts/ipkg-make-index.sh
-
You need to sign your packages, so if you look at the section towards the end with ********************* this I have masked out my public and private keys. You need to create these using usign package. You can install usign like so:
git clone https://git.openwrt.org/project/usign.git
cd usign
cmake .
make
sudo make installThen use usign to create your keys. I'll leave you to look at that.
-
-
@crispyoz even simplifying script looks complex thanks again i will try to use it
-
@optech Just step line by line through the script, it's not that complex, it's just copying files to our packing folder in the structure we need the files placed on the target system. Then running a few command to create the files required for an opkg repository and signing them using usign.
The structure of the directories is the key to the building of the package. The cool parts are in the CONTROL directory where there are 4 files that get executed depending on what opkg is doing, ie before installing your package (CONTROL/preinst), after installing your package (CONTROL/postinst), before removing your package (CONTROL/prerm) and after removing your package (CONTROL/postrm)
The final ipk will be in the "repo" directory
-
@optech
These parameters are added by me
GOOS=linux GOARCH=mipsle GOMIPS=softfloat \Equivalent to:
$ CC= CXX=
etc. that we use while compiling .c, .cppAs you have rightly pointed out, the following was the original command line:
go build $(GO_EXTRA_BUILD_ARGS) -ldflags "-s -w -X main.version=$(VERSION)" -o build/chirpstack-gateway-bridge cmd/chirpstack-gateway-bridge/main.goBy stock 19.07, I meant the "19.07 binary image" that we can download from openwrt download area, not the image that we build, even if we are using the build config + the same compiler/tools as openwrt used.
In my observation, the hello_world and the chirpstack-gateway-bridge will work with stock 19.07.7 if the softfloat option is used; not sure about other 19.07s.
Thanks.
-
@tjoseph1 and @crispyoz, Thank you for all of your support. All information which you gave me was so useful for me.
-
@optech we're always happy to help, I hope you can complete your work successfully.
-
@optech
Happy to know that the intial phase is over.So, what is next?
https://github.com/OnionIoT/omega2-lmic-lorawan
-interfacing to Omega2 through SPI-I2C bridge,library supports SX1276/8)https://www.seeedstudio.com/LoRa-E5-Wireless-Module-p-4745.html
-Cortex-M4+SX126X(ST Micro), Comes with factory loaded AT command fw,
supports ClassA/B/C, has built-in UART/ADC/I2C/GPIO.. & programmamable using ST CubeMX)Or any other? Curious to know which is your pick..
(I was not aware of that this chirpy thing existed .. !!)Thanks
-
This post is deleted!
-
This post is deleted!