SWIG 3.0.2, kildekode generator

Dette forum bruges på EGET ANSVAR til at lege med scripts og andre ting med risiko for at beskadige sit eget og andres systemer.
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

SWIG 3.0.2, kildekode generator

Indlæg af lath »

Jeg skal lige igang med at oversætte SWIG 3.0.2 fra kildekode - fordi Canonical kun har SWIG 2.x i arkiverne :(
Jeg har bemærket at der her: http://pkgs.org/download/swig er nogle SWIG pakker til forskellige kombinationer af distro & distro version.

SWIGs website er: http://www.swig.org/, og de har også et Git arkiv: https://github.com/swig/swig
Download af kildekode sker via SourceForge, og kommer i en *.tar.gz fil for Linux/BSD/UNIX systemer.

Det SWIG kan er at den kan lave noget såkaldt glue-code imellem C og/eller C++ kode og så et andet programmeringssprog.
For mit vedkommende er det andet sprog lige nu Tcl, men jeg kunne muligvis godt finde på at lave den til Java, og C# Mono også.

Det jeg er ude efter er at få adgang til er at at kalde ind i C++ koden inde i libapt, så jeg kan hente pakker, tilføje repositories, skifte server og hvad har vi.

Da SWIG laver auto-generet kildekode, skal jeg lige se hvor godt godt (eller crappy) den kildekode er - før jeg beslutter om det er noget jeg vil tage i brug.

Er der nogen der har noget erfaring med SWIG de gerne vil dele ud af?
Skriv gerne en kommentar herunder.

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags
lath
Indlæg: 5095
Tilmeldt: 27. apr 2008, 02:16
IRC nickname: lars_t_h
Geografisk sted: Fyn

Re: SWIG 3.0.2, kildekode generator

Indlæg af lath »

Jeg fik oversat SWIG 3.0.2 kildekode til et program jeg kan køre.

Mit problem i første omgang var at der ikke må være mellemrumstegn i stien ned til top-mappen, hvor SWIG bygges i.
Det løste jeg ved lidt terminaltrylleri:
  1. oprette ny mappe
  2. flytte indhold over i ny mappe
  3. slette den gamle - nu helt tomme mappe
  4. linke med `ln -sT` fra gammel mappenavn til ny mappe
  5. I filsystemet er det nu sådan at der er et softlink (-s i ln kommandoen) til det nye mappe (-T argument i ln kommando) med den gamle mappes navn, som er softlinkets navn

Resultatet fra ls -l på softlinket ser bagefter således ud:
lrwxrwxrwx 1 lars lars 15 sep 22 03:07 Hentede filer -> ./Hentede_filer

Lidt om rettighederne for softlinks: Det er sådan at når kernen beder et filsystem om rettigheder for en fil, så vil kernen gå igennem alle(*) softlinks indtil den ankommer til det der peges på. Det er så de rettigheder på den fil/mappe der peges på af softlinks(-ene) der afgør rettighederne.
*: Der er en tæller der kører 1 op hver gang kernen opløser et softlink til et nyt softlink. Når den tæller så kommer op på et bestemt tal returnerer kernen i stedet en fejlmeddelelse. Det gør den for at undgå at blive fanget i softlinks der peger på hinanden, så kernen kører i ring i al evighed (og dermed gør din computer ubrugelig).

Jeg har kigget lidt i apt kildekoden + lidt i SWIGs manual og det ser godt-nok temmelig langhåret ud.
Der skal nok være bare lidt basal C++ erfaring på plads før jeg kaster mig ud i det - i mellemtiden øver jeg med noget kode som er skrevet i C (Tcllib fra Tcl 8.6.2). Den kode prøver jeg så at wrappe til Go (http://golang.org/).

/Lars
Jeg er Software ingeniør (Diplomingeniør) i Informationsteknologi og indlejede systemer, hvor indlejrede systemer er computer (microcontroller) + elektronik i for eksempel et TV, en router, en vaskemaskine og den slags