Skip to content

Commit 06c776d

Browse files
committed
Libgpiod package updated
1 parent ce750fc commit 06c776d

File tree

5 files changed

+188
-119
lines changed

5 files changed

+188
-119
lines changed
Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,27 @@
11
#!/bin/bash
22
# Run:
33
# chmod +x installpackagelibgpiod.sh
4-
# ./installpackagelibgpiod.sh 1.6.3 /usr/share/libgpiod
5-
6-
# '1.6.3', 'checkinrepository','installfromrepository'
4+
# ./installpackagelibgpiod.sh options
75

86
set -e #Exit immediately if a comman returns a non-zero status
97

108
echo "Run: installpackagelibgpiod.sh"
119
#
12-
LIBGPIOD_VERSION="$1"
13-
INSTALLPATH="$2"
14-
15-
#
16-
#Check the version of Libgpiod in the repository
17-
if [ $LIBGPIOD_VERSION == "checkinrepository" ]; then
18-
echo "Check the version of Libgpiod in the repository"
19-
sudo apt-get update
20-
sudo apt list libgpiod-dev
21-
echo "Successfully"
22-
exit 0
23-
fi
24-
25-
#Install Libgpiod from repository
26-
if [ $LIBGPIOD_VERSION == "installfromrepository" ]; then
27-
echo "Install Libgpiod from repository"
28-
sudo apt-get update
29-
sudo apt-get install -y libgpiod-dev gpiod
30-
gpiodetect --version
31-
echo "Successfully"
32-
exit 0
33-
fi
34-
35-
#Install Libgpiod from source
36-
if [ -z $LIBGPIOD_VERSION ]; then
37-
echo "Error: library version not specified"
38-
exit 1;
39-
fi
40-
41-
if [ -z $INSTALLPATH ]; then
42-
INSTALLPATH=/usr/share/libgpiod
43-
fi
10+
OP1="$1"
11+
OP2="$2"
12+
OP3="$3"
13+
OP4="$4"
14+
OP5="$5"
15+
OP6="$6"
16+
OP7="$7"
4417

4518
export DEBIAN_FRONTEND="noninteractive"
4619

4720
sudo apt-get update
4821
sudo apt-get install -y curl
49-
5022
#install
51-
curl -SL --output setup-libgpiod.sh https://raw.githubusercontent.com/devdotnetorg/docker-libgpiod/master/setup-libgpiod.sh
23+
curl -SL --output setup-libgpiod.sh https://raw.githubusercontent.com/devdotnetorg/docker-libgpiod/fastiot/setup-libgpiod.sh
5224
chmod +x setup-libgpiod.sh
53-
sudo ./setup-libgpiod.sh $LIBGPIOD_VERSION $INSTALLPATH
54-
55-
gpiodetect --version
25+
sudo ./setup-libgpiod.sh $OP1 $OP2 $OP3 $OP4 $OP5 $OP6 $OP7
5626

5727
echo "Successfully"
Lines changed: 112 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,106 @@
11
#!/bin/bash
22
# Run:
33
# chmod +x uninstallpackagelibgpiod.sh
4-
# ./uninstallpackagelibgpiod.sh /usr/share/libgpiod
4+
# ./uninstallpackagelibgpiod.sh
5+
#==============================
56

6-
set -e #Exit immediately if a comman returns a non-zero status
7+
# Remove libgpiod for for ARM64, ARM32, x86_64, RISC-V
8+
# C library and tools for interacting with the linux GPIO character device
9+
# Site: https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git
10+
# Script version: 3.0
11+
# arguments:
12+
# -p|--path: library installation folder (default: /usr/share/libgpiod).
13+
#=================================================================
14+
# Run: chmod +x remove-libgpiod.sh
15+
# sudo ./remove-libgpiod.sh -p /usr/share/libgpiod
16+
# or
17+
# Run: chmod +x remove-libgpiod.sh
18+
# sudo ./remove-libgpiod.sh
19+
#=================================================================
20+
# DevDotNet.ORG <anton@devdotnet.org> MIT License
721

8-
echo "Run: uninstallpackagelibgpiod.sh"
9-
#
10-
INSTALLPATH="$1"
11-
#
22+
set -e
1223

13-
if [ -z $INSTALLPATH ]; then
14-
INSTALLPATH=/usr/share/libgpiod
15-
fi
24+
# definition of variables
25+
declare ARCH_OS=$(uname -m) #aarch64, armv7l, x86_64 or riscv64
26+
declare ID_OS=("$(cat /etc/*release | grep '^ID=' | sed 's/.*=\s*//')") # ubuntu, debian, alpine
1627

17-
export DEBIAN_FRONTEND="noninteractive"
28+
# requirements check
29+
if [ $ARCH_OS != "aarch64" ] && [ $ARCH_OS != "armv7l" ] \
30+
&& [ $ARCH_OS != "x86_64" ]&& [ $ARCH_OS != "riscv64" ]; then
31+
echo "ERROR. Current OS architecture ${ARCH_OS} is not supported."
32+
exit 1;
33+
fi
1834

19-
#Package removal
20-
sudo apt-get remove -y libgpiod-dev &>/dev/null || echo "Package libgpiod-dev has been removed"
21-
sudo apt-get remove -y gpiod &>/dev/null || echo "Package gpiod has been removed"
35+
if [ $ID_OS != "ubuntu" ] && [ $ID_OS != "debian" ] && [ $ID_OS != "alpine" ]; then
36+
echo "ERROR. Current OS ${ID_OS} not supported."
37+
exit 1;
38+
fi
2239

23-
#========================================
24-
#https://raw.githubusercontent.com/devdotnetorg/docker-libgpiod/master/remove-libgpiod.sh
40+
# reading arguments from CLI
41+
wPOSITIONAL_ARGS=()
42+
while [[ $# -gt 0 ]]; do
43+
case $1 in
44+
-p|--path)
45+
INSTALL_PATH="$2"
46+
shift # past argument
47+
shift # past value
48+
;;
49+
-*|--*)
50+
echo "Unknown option $1"
51+
exit 1
52+
;;
53+
*)
54+
POSITIONAL_ARGS+=("$1") # save positional arg
55+
shift # past argument
56+
;;
57+
esac
58+
done
2559

26-
#
27-
ARMBIT=$(uname -m) #aarch64, armv7l, or x86_64
28-
#
60+
# defining default values
61+
if [ -z $INSTALL_PATH ]; then
62+
INSTALL_PATH="/usr/share/libgpiod"
63+
fi
2964

3065
echo "==============================================="
3166
echo "Removing Libgpiod library"
32-
echo "Library installation path:" $INSTALLPATH
67+
echo "Library installation path:" $INSTALL_PATH
3368
echo "==============================================="
3469
echo ""
35-
echo "=====================Remove====================="
36-
#
37-
rm -rfv ~/libgpiod-* &>/dev/null || echo "libgpiod-* has been removed"
70+
echo "===================== Remove ====================="
71+
echo "Please wait for the end ..."
72+
73+
# Package removal
74+
if [ $ID_OS != "alpine" ]; then
75+
# ubuntu, debian
76+
export DEBIAN_FRONTEND="noninteractive"
77+
sudo apt-get remove -y libgpiod-doc &>/dev/null || echo "Package libgpiod-doc has been removed"
78+
sudo apt-get remove -y python3-libgpiod &>/dev/null || echo "Package python3-libgpiod has been removed"
79+
sudo apt-get remove -y gpiod &>/dev/null || echo "Package gpiod has been removed"
80+
sudo apt-get remove -y libgpiod-dev &>/dev/null || echo "Package libgpiod-dev has been removed"
81+
# Clear
82+
sudo apt-get clean autoclean -y
83+
sudo apt-get autoremove -y
84+
else
85+
# alpine
86+
apk delete libgpiod-doc &>/dev/null || echo "Package libgpiod-doc has been removed"
87+
apk delete py3-libgpiod &>/dev/null || echo "Package py3-libgpiod has been removed"
88+
apk delete libgpiod &>/dev/null || echo "Package libgpiod has been removed"
89+
apk delete libgpiod-dev &>/dev/null || echo "Package libgpiod-dev has been removed"
90+
fi
3891

39-
if [ -d $INSTALLPATH ]; then
40-
sudo rm -rfv $INSTALLPATH
92+
# INSTALL_PATH
93+
if [ -d $INSTALL_PATH ]; then
94+
sudo rm -rfv $INSTALL_PATH
95+
echo "${INSTALL_PATH} has been removed"
4196
fi
4297

98+
# Clear
99+
sudo rm -rf /var/lib/{cache,log}/ /tmp/* /var/tmp/* $HOME/.cache
100+
101+
# Folders
43102
LIB_FOLDER=""
44-
case $ARMBIT in
103+
case $ARCH_OS in
45104

46105
aarch64)
47106
LIB_FOLDER="aarch64-linux-gnu"
@@ -55,27 +114,38 @@ case $ARMBIT in
55114
LIB_FOLDER="x86_64-linux-gnu"
56115
;;
57116

117+
riscv64)
118+
LIB_FOLDER="riscv64-linux-gnu"
119+
;;
120+
58121
*)
59122
LIB_FOLDER=""
60123
;;
61124
esac
125+
62126
# Removing ln
63-
echo "============Removing symbolic links============"
64-
#bin
65-
sudo rm /usr/bin/gpiodetect &>/dev/null || echo "gpiodetect has been removed"
66-
sudo rm /usr/bin/gpiofind &>/dev/null || echo "gpiofind has been removed"
67-
sudo rm /usr/bin/gpioget &>/dev/null || echo "gpioget has been removed"
68-
sudo rm /usr/bin/gpioinfo &>/dev/null || echo "gpioinfo has been removed"
69-
sudo rm /usr/bin/gpiomon &>/dev/null || echo "gpiomon has been removed"
70-
sudo rm /usr/bin/gpioset &>/dev/null || echo "gpioset has been removed"
71-
#/usr/lib
72-
sudo rm /usr/lib/$LIB_FOLDER/libgpiod.a &>/dev/null || echo "libgpiod.a has been removed"
73-
sudo rm /usr/lib/$LIB_FOLDER/libgpiod.la &>/dev/null || echo "libgpiod.la has been removed"
74-
sudo rm /usr/lib/$LIB_FOLDER/libgpiod.so &>/dev/null || echo "libgpiod.so has been removed"
75-
sudo rm /usr/lib/$LIB_FOLDER/libgpiod.so.2 &>/dev/null || echo "libgpiod.so.2 has been removed"
76-
sudo rm /usr/lib/$LIB_FOLDER/libgpiod.so.2.2.2 &>/dev/null || echo "libgpiod.so.2.2.2 has been removed"
77-
#
78-
echo "==============================================="
127+
echo "============ Deleting binary files ============"
128+
# /usr/bin
129+
# ubuntu, debian, alpine
130+
sudo rm /usr/bin/gpio* &>/dev/null || echo "bin/gpio* has been removed"
131+
# /usr/include
132+
# ubuntu, debian, alpine
133+
sudo rm -r /usr/include/gpiod* &>/dev/null || echo "include/gpiod* has been removed"
134+
# /usr/lib
135+
# ubuntu, debian
136+
sudo rm /usr/lib/$LIB_FOLDER/libgpiod* &>/dev/null || echo "libgpiod* has been removed"
137+
sudo rm /usr/lib/$LIB_FOLDER/pkgconfig/libgpiod* &>/dev/null || echo "pkgconfig/libgpiod* has been removed"
138+
# alpine
139+
sudo rm /usr/lib/libgpiod* &>/dev/null || echo "libgpiod* has been removed"
140+
sudo rm /usr/lib/pkgconfig/libgpiod* &>/dev/null || echo "pkgconfig/libgpiod* has been removed"
141+
# /usr/share/
142+
# ubuntu, debian, alpine
143+
sudo rm /var/lib/dpkg/info/libgpiod* &>/dev/null || echo "dpkg/info libgpiod* has been removed"
144+
sudo rm -r /usr/share/doc/libgpiod* &>/dev/null || echo "doc/libgpiod* has been removed"
145+
# /usr/share/man
146+
# ubuntu, debian, alpine
147+
sudo rm -r /usr/share/man/man1/gpio* &>/dev/null || echo "share/man/man1/gpio* has been removed"
79148

80-
#========================================
149+
echo "==============================================="
81150
echo "Successfully"
151+
exit 0;

src/IotDevicePackage.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ export class IotDevicePackage extends BaseTreeItem {
130130
//installpackagedotnetsdk.sh
131131
let nameScript=`installpackage${namePackage}`;
132132
//Params
133-
let paramsScript=this.GetParamsScript(this.NamePackage,objJSON);
133+
let paramsScript=this.GetParamsScript(this.NamePackage,objJSON);
134+
//return Promise.resolve(new IotResult(StatusResult.Ok));
134135
//Exec
135136
let result = await this.Client.RunScript(this.Device.Account.SshConfig,undefined,this.Device.Config.Folder.Extension,
136137
nameScript,paramsScript, true,false);

src/actionsDevice/installPackage.ts

Lines changed: 63 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,18 @@ export async function installPackage(treeData: TreeDataDevicesProvider,item:IotD
1616
//const catalogNetSDKChannel: Array<string>=["3.1","5.0","6.0","7.0"];
1717
//const catalogNetRuntimeChannel: Array<string>=["3.1","5.0","6.0","7.0"];
1818
const catalogNetRuntimeName: Array<string>=["dotnet","aspnetcore"];
19-
const catalogLibgpiodVersion: Array<string>=["1.6.3"];
19+
type typeLibgpiodVersion ={
20+
version:string,
21+
description:string
22+
}
23+
const catalogLibgpiodVersion: Array<typeLibgpiodVersion>=[
24+
{ version:"2.1.1", description:"Libgpiod"},
25+
{ version:"2.1", description:"Libgpiod"},
26+
{ version:"2.0.2", description:"Libgpiod"},
27+
{ version:"2.0", description:"Libgpiod"},
28+
{ version:"1.6.4", description:"Maximum version for .NET application"},
29+
{ version:"1.6.3", description:"Libgpiod"}
30+
];
2031
//objJSON: preparation of input parameters
2132
let jsonObj = {
2233
dotnetrid:"",
@@ -76,49 +87,67 @@ export async function installPackage(treeData: TreeDataDevicesProvider,item:IotD
7687
jsonObj.installpath="/usr/share/vsdbg";
7788
break;
7889
}
79-
case TypePackage.libgpiod: {
80-
//Shows a selection list allowing multiple selections.
81-
//Select task
82-
let itemLibgpiodTasks:Array<ItemQuickPick>=[];
83-
let item = new ItemQuickPick('Check the version of Libgpiod in the repository','Latest version 1.6.4','checkinrepository');
84-
itemLibgpiodTasks.push(item);
85-
item = new ItemQuickPick('Install Libgpiod from repository','(recommended)','installfromrepository');
86-
itemLibgpiodTasks.push(item);
87-
item = new ItemQuickPick('Install Libgpiod from source','take a long time','installfromsource');
88-
itemLibgpiodTasks.push(item);
89-
let SELECTED_ITEM = await vscode.window.showQuickPick(itemLibgpiodTasks,{title: 'Choose a task:'});
90-
if(!SELECTED_ITEM) return;
91-
//
92-
if(SELECTED_ITEM.value=='installfromsource')
93-
{
90+
case TypePackage.libgpiod: {
91+
//Shows a selection list allowing multiple selections.
92+
//Select task
93+
let itemLibgpiodTasks:Array<ItemQuickPick>=[];
94+
//installation type
95+
//binary - installation from binaries;
96+
let item = new ItemQuickPick('Installation from binaries','(recommended)','binary');
97+
itemLibgpiodTasks.push(item);
98+
//findver - find out the version in the repository;
99+
item = new ItemQuickPick('Check the version in the repository','Latest version 2.1.1','findver');
100+
itemLibgpiodTasks.push(item);
101+
//repo - installation from the repository.
102+
item = new ItemQuickPick('Installation from repository','Old version','repo');
103+
itemLibgpiodTasks.push(item);
104+
//source - installation from source;
105+
item = new ItemQuickPick('Install from source','take a long time','source');
106+
itemLibgpiodTasks.push(item);
107+
//Selecting an installation option
108+
let SELECTED_ITEM = await vscode.window.showQuickPick(itemLibgpiodTasks,{title: 'Choose the type of Libgpiod library installation:'});
109+
if(!SELECTED_ITEM) return;
110+
let optionType:string = SELECTED_ITEM.value;
111+
//Select version
112+
if(optionType=="binary"||optionType=="source") {
94113
//catalogLibgpiodVersion
95114
let itemLibgpiodVersion:Array<ItemQuickPick>=[];
96-
//Select version
97-
catalogLibgpiodVersion.forEach((nameItem) => {
98-
const item = new ItemQuickPick(nameItem,"Libgpiod",nameItem);
115+
//Select Libgpiod version
116+
catalogLibgpiodVersion.forEach((itemLibgpiod) => {
117+
const item = new ItemQuickPick(itemLibgpiod.version,itemLibgpiod.description,itemLibgpiod.version);
99118
itemLibgpiodVersion.push(item);
100119
});
101120
SELECTED_ITEM = await vscode.window.showQuickPick(itemLibgpiodVersion,{title: 'Choose a Libgpiod version:',});
102121
if(!SELECTED_ITEM) return;
103-
//formation jsonObj
104-
jsonObj.version=SELECTED_ITEM.value;
105-
jsonObj.installpath="/usr/share/libgpiod";
106-
}else
107-
{
108-
jsonObj.version=SELECTED_ITEM.value;
109-
}
110-
break;
122+
}
123+
let optionVersion:string = SELECTED_ITEM.value;
124+
//parameter design
125+
switch(optionType) {
126+
case "binary": {
127+
jsonObj.version= `--type ${optionType} --version ${optionVersion} --canselect no`;
128+
break;
129+
}
130+
case "source": {
131+
jsonObj.version= `--type ${optionType} --version ${optionVersion}`;
132+
break;
133+
}
134+
default: {
135+
jsonObj.version= `--type ${optionType}`;
136+
break;
137+
}
138+
}
139+
break;
111140
}
112141
case TypePackage.docker: {
113142
const username=<string>item.Device.Account.UserName;
114143
//formation jsonObj
115-
jsonObj.username=username;
116-
break;
117-
}
118-
default: {
119-
break;
120-
}
121-
}
144+
jsonObj.username=username;
145+
break;
146+
}
147+
default: {
148+
break;
149+
}
150+
}
122151
//Info
123152
vscode.window.showInformationMessage('Package installation/upgrade may take 2 to 7 minutes.');
124153
//main process

src/actionsDevice/uninstallPackage.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ export async function uninstallPackage(treeData: TreeDataDevicesProvider,item:Io
3838
break;
3939
}
4040
case TypePackage.libgpiod: {
41-
//formation jsonObj
42-
jsonObj.installpath="/usr/share/libgpiod";
41+
//formation jsonObj
4342
break;
4443
}
4544
case TypePackage.docker: {

0 commit comments

Comments
 (0)